Você está na página 1de 124

Gerncia de Gesto de Ambientes GGA Coordenao de Planejamento, Pesquisa e Capacitao CPPC

APOSTILA GNU/DEBIAN AVANADO

APOSTILA GNU/DEBIAN AVANADO

Direitos autorais:
Essa Apostila est licenciada sob uma Licena Creative Commons Atribuio-Uso No-Comercial-Compartilhamento pela mesma licena 2.0 Brazil. Pode ser copiada, distribuda e modificada. Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

PG.: 2

Documento Apostila de Debian Avanado Verso 2.2-1 Data da 01/09/2008 Reviso Equipe Jonsue Trapp Martins Tcnica Andr Luiz de Souza Paula David Alves Frana Paulo Csar de Oliveira Peter Andreas Entschev Pginas 124

APOSTILA GNU/DEBIAN AVANADO

ndice
1. Introduo.............................................................................................................10 2. Instalando o GNU/Debian....................................................................................11 3. Como Instalar Programas...................................................................................17
3.1. APT.........................................................................................................................................17 3.1.1. Reconfigurando a lista de pacotes...................................................................................19 3.1.2. Aps reconfigurar a lista de pacotes................................................................................19 3.1.3. O arquivo de configurao apt.conf...............................................................................20 3.1.4. O arquivo de configurao preferences........................................................................21 3.2. dpkg........................................................................................................................................22 3.3. Compilando Programas a Partir do Cdigo Fonte..............................................................22 3.3.1. Arquivos tarball................................................................................................................22

4. Gerenciando Discos e Parties........................................................................24


4.1. Obtendo Informaes sobre os Discos Rgidos.................................................................24 4.2. Particionando o Disco com o cfdisk....................................................................................24 4.3. Criando uma Partio Primria.............................................................................................25 4.4. Criando uma Partio Lgica...............................................................................................26 4.5. Excluindo uma Partio........................................................................................................26 4.6. Salvando as Alteraes no Disco.........................................................................................26 4.7. Criando o Sistema de Arquivos............................................................................................26

5. Gerenciador de Partida - GRUB..........................................................................28


5.1. Como o GRUB Trabalha com Discos e Parties...............................................................28 5.2. Instalando o GRUB................................................................................................................28 5.3. No Disco Flexvel (com interface de menu).........................................................................29 5.4. Opes do Arquivo de Configurao...................................................................................29 5.4.1. Parmetros globais..........................................................................................................29 5.4.2. Parmetros que afetam apenas as imagens...................................................................30 5.4.3. Parmetros enviados diretamente ao kernel...................................................................31 5.5. Usando a Linha de Comandos do GRUB.............................................................................31 5.6. Removendo o GRUB do MBR...............................................................................................32

6. Sistema de Boot e Runlevels..............................................................................34


6.1. Processo de Carregamento do Kernel.................................................................................34 6.2. Entendendo o Funcionamento dos Nveis de Execuo do Sistema (Runlevels)...........34

7. Sistema de Logs...................................................................................................36
7.1. Principais Arquivos de Log..................................................................................................36 7.2. Formato dos Arquivos de Log..............................................................................................36
PG.: 4

APOSTILA GNU/DEBIAN AVANADO

7.3. Daemons de Log do Sistema................................................................................................37 7.3.1. O daemon syslogd...........................................................................................................37 7.3.2. O daemon klogd..............................................................................................................38 7.3.3. Configurando o syslog.conf.............................................................................................39 7.4. Ferramentas para Arquivos de Log......................................................................................41 7.4.1. logger...............................................................................................................................41 7.4.2. logcheck..........................................................................................................................42 7.4.3. logrotate...........................................................................................................................42

8. Comandos Avanados.........................................................................................46
8.1. Comandos de Uso Geral.......................................................................................................46 8.1.1. cron.................................................................................................................................46 8.1.2. dd....................................................................................................................................48 8.1.3. diff....................................................................................................................................48 8.1.4. dpkg.................................................................................................................................50 8.1.5. export...............................................................................................................................52 8.1.6. find...................................................................................................................................53 8.1.7. fsck..................................................................................................................................53 8.1.8. last...................................................................................................................................55 8.1.9. lastlog..............................................................................................................................56 8.1.10. lsof.................................................................................................................................56 8.1.11. lspci...............................................................................................................................57 8.1.12. lsusb..............................................................................................................................58 8.1.13. mount.............................................................................................................................59 8.1.14. nice................................................................................................................................59 8.1.15. renice.............................................................................................................................60 8.1.16. nohup.............................................................................................................................61 8.1.17. pidof...............................................................................................................................61 8.1.18. pstree.............................................................................................................................61 8.1.19. shred..............................................................................................................................62 8.1.20. stat.................................................................................................................................63 8.1.21. sync...............................................................................................................................64 8.1.22. tar..................................................................................................................................64 8.1.23. watch.............................................................................................................................66 8.1.24. which.............................................................................................................................67 8.2. Comandos de Rede...............................................................................................................68 8.2.1. arp...................................................................................................................................68 8.2.2. dig....................................................................................................................................69 8.2.3. ifconfig.............................................................................................................................70 8.2.4. ifup e ifdown.....................................................................................................................71
PG.: 5

APOSTILA GNU/DEBIAN AVANADO

8.2.5. mii-tool.............................................................................................................................72 8.2.6. netstat..............................................................................................................................73 8.2.7. ntpdate.............................................................................................................................74 8.2.8. route................................................................................................................................75 8.2.9. tcpdmatch........................................................................................................................77 8.2.10. traceroute......................................................................................................................78 8.2.11. wget...............................................................................................................................79

9. Arquivos de Configurao..................................................................................81
9.1. Interfaces de Rede.................................................................................................................81 9.2. Interface de loopback........................................................................................................81 9.3. Servios e Portas TCP/IP......................................................................................................82 9.4. Arquivos de Configurao....................................................................................................82 9.4.1. /etc/network/interfaces.....................................................................................................82 9.4.2. /etc/hostname..................................................................................................................84 9.4.3. /etc/hosts.........................................................................................................................84 9.4.4. /etc/host.conf...................................................................................................................84 9.4.5. /etc/networks...................................................................................................................85 9.4.6. /etc/resolv.conf................................................................................................................85 9.4.7. /etc/nsswitch.conf............................................................................................................86 9.4.8. /etc/services.....................................................................................................................86 9.4.9. /etc/protocols...................................................................................................................86 9.4.10. /etc/alternatives/.............................................................................................................86 9.4.11. /etc/default/rcS...............................................................................................................87 9.4.12. /etc/pam.d/.....................................................................................................................87 9.4.13. /etc/security/..................................................................................................................87 9.4.14. /etc/security/access.conf................................................................................................87 9.4.15. /etc/security/limits.conf...................................................................................................88 9.4.16. /etc/fstab........................................................................................................................88 9.4.17. /etc/hosts.allow..............................................................................................................89 9.4.18. /etc/hosts.deny...............................................................................................................90 9.4.19. /etc/inetd.conf................................................................................................................91 9.4.20. /etc/inittab......................................................................................................................91 9.4.21. /etc/mtab........................................................................................................................92 9.4.22. /etc/issue.......................................................................................................................92 9.4.23. /etc/issue.net..................................................................................................................92 9.4.24. /etc/motd........................................................................................................................93

10. Firewall iptables Conceitos Bsicos............................................................94


10.1. Introduo............................................................................................................................94 10.2. Tipos de Firewall..................................................................................................................94
PG.: 6

APOSTILA GNU/DEBIAN AVANADO

10.3. Planejando a Implementao..............................................................................................95 10.4. Conhecendo os conceitos do iptables..............................................................................95 10.4.1. O que so regras?.........................................................................................................95 10.4.2. O que so chains?.........................................................................................................95 10.4.3. O que so tabelas?........................................................................................................95 10.5. Manipulando Chains............................................................................................................96 10.5.1. Adicionando regras........................................................................................................96 10.5.2. Listando regras..............................................................................................................97 10.5.3. Apagando uma regra.....................................................................................................98 10.5.4. Inserindo uma regra.......................................................................................................99 10.5.5. Substituindo uma regra..................................................................................................99 10.5.6. Criando um novo chain..................................................................................................99 10.5.7. Renomeando um chain criado pelo usurio.................................................................100 10.5.8. Limpando as regras de um chain.................................................................................100 10.5.9. Apagando um chain criado pelo usurio......................................................................101 10.5.10. Zerando o contador de bytes dos chains...................................................................101 10.5.11. Especificando o policiamento padro de um chain....................................................101 10.5.12. Especificando um endereo de origem/destino.........................................................102 10.5.13. Especificando a interface de origem/destino.............................................................102 10.5.14. Especificando um protocolo.......................................................................................103 10.5.15. Especificando portas de origem/destino....................................................................103

11. Compilao do Kernel.....................................................................................105


11.1. Preparao para Compilao............................................................................................105 11.2. Compilando o Kernel.........................................................................................................106 11.3. Utilitrios do Kernel...........................................................................................................108 11.3.1. depmod........................................................................................................................108 11.3.2. insmod.........................................................................................................................109 11.3.3. lsmod...........................................................................................................................109 11.3.4. modinfo........................................................................................................................110 11.3.5. modprobe....................................................................................................................110 11.3.6. rmmod.........................................................................................................................112 11.3.7. sysctl............................................................................................................................113

12. Anexos...............................................................................................................115
12.1. NFS - Network File System...............................................................................................115 12.2. Shell Scripts.......................................................................................................................116 12.2.1. O primeiro script..........................................................................................................116 12.2.2. Os primeiros erros.......................................................................................................116 12.2.3. Melhorando seu primeiro script....................................................................................117 12.2.4. Expresses aritmticas................................................................................................117
PG.: 7

APOSTILA GNU/DEBIAN AVANADO

12.2.5. Recebendo argumentos do shell.................................................................................117 12.2.6. Estruturas de controle..................................................................................................118 12.2.7. Funes.......................................................................................................................121 12.2.8. sed...............................................................................................................................121

PG.: 8

APOSTILA GNU/DEBIAN AVANADO

ndice de Figuras
Figura 1 - Definindo as opes de instalao do GNU/Debian.............................................................11 Figura 2 - Tela de configurao das parties do disco........................................................................13 Figura 3 - Finalizando a configurao das parties.............................................................................14 Figura 4 - Menu principal do utilitrio cfdisk..........................................................................................25

PG.: 9

APOSTILA GNU/DEBIAN AVANADO

1. Introduo
Este documento, foi elaborado especialmente para o curso de Debian avanado ministrado pela Coordenao de Planejamento, Pesquisa e Capacitao CPPC, aos tcnicos da rea de informtica da Celepar e seus clientes. O objetivo que desejamos alcanar com este material, aprofundar os conhecimentos sobre conceitos e funcionalidades da distribuio GNU/Debian, como forma de capacitar o pessoal de tcnico, para realizao de atividades geralmente vistas como mais complexas, como por exemplo, a compilao do kernel do sistema. Esta apostila foi gerada tendo como base o Guia Foca GNU/Linux Avanado, de Gleydson Mazioli da Silva, que pode ser acessado em http://focalinux.cipsga.org.br/guia/avancado/index.htm. A Gerncia de Gesto de Ambientes GGA, por meio da Coordenao de Planejamento, Pesquisa e Capacitao CPPC, espera que voc possa aproveitar o contedo deste material para ampliar mais o seu conhecimento do Sistema Operacional GNU/Linux, e em especial, da distribuio Debian.

PG.: 10

APOSTILA GNU/DEBIAN AVANADO

2. Instalando o GNU/Debian
Para ter acesso a todas as opes de instalao do GNU/Debian, devemos utilizar o modo expert da instalao. Esta tambm, a opo recomendada para a instalao de servidores, visto que somente ela, d acesso a funcionalidades que so mascaradas pela instalao padro. Siga os passos abaixo para realizar a instalao do Sistema Operacional: 1. Verifique as configuraes de setup (BIOS) do equipamento, deixando o CD-ROM como primeiro dispositivo de boot. 2. D um boot com o CD do Debian Bussiness Card, faa o download no seguinte endereo: http://www.repositorios.eparana.parana/images/debian/etch/i386/debian-40r1-i386businesscard.iso

3. Escreva expert vga=788 (sem as aspas) na tela inicial do CD do Debian (tela abaixo) e em seguida pressione <ENTER>. A figura a seguir, representa esta parte da instalao:

Figura 1 - Definindo as opes de instalao do GNU/Debian. 4. No menu principal do instalador do GNU/Debian, escolha a opo Choose Language e pressione <ENTER>. Na tela seguinte, escolha a opo Portuguese (Brazil) Portugus do Brasil e pressione <ENTER>. 5. A prxima tela, pedir que voc escolha um pas, territrio ou rea, escolha a opo Brasil e pressione <ENTER>. 6. A seguir a tela Escolha um locale aparecer. Escolha a opo pt_BR e pressione <ENTER> para gerar a codificao de caracteres necessria apenas para o nosso idioma. 7. Prosseguindo a instalao, ser apresentada mais uma tela permitindo que o usurio escolha outros locales, isto no necessrio, basta ento pressionar a tecla <TAB> e em seguida <ENTER>, para continuar. 8. Aps a configurao do idioma do sistema, necessrio configurar o teclado, atravs da opo Selecione um layout de teclado. Pressione <ENTER> sobre esta opo, que consta do menu principal do instalador. 9. Na tela que solicitar o Tipo de teclado, selecione a opo Teclado estilo PC (AT ou PS/2) e pressione <ENTER>. 10. A seguir, na tela Mapa de teclado a ser usado, escolha o layout de teclado adequado para seu computador. Lembre-se, teclados que possuem devero escolher a opo Portugus Brasileiro (br-abnt2).
PG.: 11

APOSTILA GNU/DEBIAN AVANADO

11. A instalao voltar para o menu principal. Escolha agora a opo Detectar e montar CDROM e pressione <ENTER>. 12. No questionamento sobre os Mdulos a serem carregados, apenas escolha a opo <Continuar> e pressione <ENTER>. 13. A prxima pergunta sobre os mdulos para cartes PCMCIA, geralmente utilizados em notebooks, responda No a esta pergunta para prosseguir a instalao. 14. Num processo normal, a prxima tela informar que o CDROM foi detectado com sucesso. Basta escolher a opo <Continuar> e pressionar <ENTER>. 15. No menu principal, escolha a opo Carregar componentes do instalador do CD e pressione a tecla <ENTER> 16. A tela seguinte, permitir que voc escolha que componentes deseja carregar. No necessrio marcar nenhum componente, basta ir at a opo <Continuar> e pressionar <ENTER>. 17. Novamente no menu principal, acesse o item Detectar hardware de rede, pressionando a tecla <ENTER> sobre ele. 18. Aps o processo automtico de deteco do hardware, pressione <ENTER> sobre o item Configurar a rede do menu principal do instalador. 19. Na seqencia uma srie de perguntas sero feitas pelo instalador para realizar a configurao da rede da maquina. A primeira dessa srie de perguntas Configurar a rede automaticamente por DHCP ?, responda No para que possamos configurar opes do protocolo TCP/IP manualmente. 20. Aps o 19 passo, voc ser questionado sobre o endereo IP da maquina, informe o endereo no formato padro, por exemplo: 10.15.22.15 21. Em seguida, necessrio informar a mascara de rede. Informe a mascara a ser usada, conforme o exemplo: 255.255.255.0 22. A prxima informao necessria, o endereo do gateway (roteador) padro da rede. Informe o endereo no mesmo formato j citado no passo 20 desta seo. 23. Continuando a instalao, agora hora de informar os servidores de nomes (DNS) da rede. Informe os endereos IP dos servidores separados por espao, caso deseje informar mais de um servidor, conforme o exemplo ao lado: 10.15.22.4 10.15.21.5 24. Ser mostrada ento uma tela, que exibir os dados fornecidos para as questes a partir do passo 20, confira os dados e se estiver tudo correto, acione a opo Sim e pressione <ENTER>. Caso voc tenha fornecido alguma informao incorreta, acione a opo No e pressione <ENTER> para que voc possa digitar as informaes novamente. 25. Confirmando positivamente o questionamento do passo 24, ser apresentada uma tela que solicitar ao usurio que fornea um nome para a maquina (hostname). Informe um nome para a maquina de acordo com os padres da organizao a que a maquina pertence. Lembre-se, manter padres uma atitude importante para a administrao de redes. 26. A prxima questo, sobre o domnio (DNS) ao qual a maquina pertence. Informe o domnio em questo, no mesmo formato do exemplo a seguir: celepar.parana 27. Nesse momento comea a configurao dos repositrios para instalao remota de pacotes. Pressione <ENTER> sobre a opo Selecione um espelho para o repositrio Debian do menu principal de instalao. 28. Na pergunta Protocolo para download de arquivos, selecione http e pressione <ENTER>. 29. Na questo Pas do espelho do repositrio Debian, selecione a opo Fornecer informao manualmente e pressione <ENTER>. 30. A seguir em Nome da maquina do espelho do repositrio Debian, informe o espelho do repositrio da Celepar, fornecendo o parmetro: www.repositorios.eparana.parana
PG.: 12

APOSTILA GNU/DEBIAN AVANADO

31. A prxima pergunta, sobre o diretrio do Debian nesta maquina espelho. Deixe conforme o padro sugerido /debian/ e pressione <ENTER>. 32. Agora a questo sobre o proxy http. No caso da rede interna do Estado, presente na maioria do clientes da Celepar, no necessrio fornecer endereo de um servidor proxy para endereos da intranet. Por essa razo, basta pressionar <ENTER> para prosseguir a instalao. 33. Na pergunta Verso do Debian a ser instalada, opte sempre pela opo Stable e pressione <ENTER>. 34. Voltando ao menu principal de instalao, pressione <ENTER> sobre a opo Detectar discos. 35. Aps a deteco automtica do hardware, pressione <ENTER> sobre a opo Particionar discos. 36. O mtodo de particionamento a ser escolhido, deve ser a opo Manual. Caso a tela mostrada, no apresente um indicativo de ESPAO LIVRE no disco ao qual se deseja particionar, conforme a figura abaixo exemplifica (listra vermelha), necessrio criar uma tabela de parties no disco em questo.

Figura 2 - Tela de configurao das parties do disco. Para criar uma nova tabela de parties, pressione <ENTER> sobre o nome que faz referncia ao disco em questo, Vmware Virtual IDE Hard Drive no exemplo da figura acima, e responda Sim a pergunta sobre se deseja criar uma nova tabela de parties. A seguir escolha o tipo de tabela de parties do msdos e pressione <ENTER> para encerrar a configurao. 37. Selecione a indicao de ESPAO LIVRE no disco ao qual se deseja particionar e pressione a tecla <ENTER>, para iniciar a criao de uma nova partio. Lembre-se, a criao de parties deve sempre respeitar o projeto de instalao definido para a maquina que est sendo configurada. 38. No dilogo seguinte Como usar este espao livre, selecione a opo Criar nova partio e pressione <ENTER>. 39. A seguir, especifique o tamanho em Megabytes ou Gigabytes que ser designado para a partio que est sendo configurada. Valores vlidos, so por exemplo: 128 Mb ou 1 GB 40. O Tipo da nova partio dever ser prioritariamente Primria para parties do sistema como /boot, / ou reas de troca. Outras parties como /home, /var, /srv, entre outras, podero usar a opo Lgica. 41. Na pergunta Localizao para nova partio, responda sempre Inicio e pressione <ENTER>.
PG.: 13

APOSTILA GNU/DEBIAN AVANADO

42. A tela de configurao da partio ser exibida, nela voc poder ajustar o ponto de montagem, sistema de arquivos e outras opes. Para realizar a configurao de cada um destes itens, basta pressionar a tecla <ENTER> sobre cada uma das opes e ajustar as opes de acordo com a necessidade. Feitas as configuraes necessrias, escolha a opo Finalizar a configurao da partio. Repita os passos do 37 ao 42, para criao das demais parties necessrias de acordo com o projeto de instalao da maquina. Abaixo, citamos um exemplo de particionamento genrico que pode ser usado para instalao:

Ponto de montagem /boot

Tamanho 128 MB

Usar como Sistema de arquivos EXT3 com journalling Sistema de arquivos XFS com journalling rea de troca Sistema de arquivos XFS com journalling Sistema de arquivos XFS com journalling

Flag inicializvel ligado

Funo Partio para arquivos de boot Partio raiz rea para swap de memria Partio para arquivos do usurio Partio para arquivos de dados dos servios de rede

/ swap /home

10 GB 1 GB Estimar 100 Mb por usurio Restante do disco

desligado desligado desligado

/var

desligado

43. Aps criar todas as parties necessrias escolha a opo Finalizar o particionamento e gravar as mudanas no disco, conforme a figura abaixo:

Figura 3 - Finalizando a configurao das parties.

44. Um dilogo de confirmao ir ser exibido Gravar estas mudanas nos discos ?, responda Sim. 45. Novamente no menu principal do instalador, pressione <ENTER> sobre o item Configurar fuso horrio. 46. Na pergunta Selecione uma cidade em seu fuso horrio, escolha So Paulo e
PG.: 14

APOSTILA GNU/DEBIAN AVANADO

pressione a tecla <ENTER>. 47. Voc ser enviado novamente ao menu principal do instalador, pressione <ENTER> sobre o item Configurar relgio agora. 48. Quando o instalador perguntar se o relgio do sistema est configurado para UTC selecione a opo Sim e pressione <ENTER>. 49. O prximo passo, a configurao de usurios. Selecione o item Configurar usurios e senhas e pressione <ENTER>. 50. Responda Sim pergunta Habilitar senhas sombra (shadow) ?. 51. Em Permitir login como root ?, responda Sim novamente. 52. O prximo passo exige que voc defina uma senha para a conta do root. 53. Informe novamente, a mesma senha j fornecida para o usurio root para confirmao. 54. Agora necessrio criar uma conta de usurio comum. Responda Sim a questo Criar uma conta de usurio normal agora ?. 55. Em Nome completo para o novo usurio, digite celepar e pressione a tecla <ENTER>. 56. Em Nome de usurio para sua conta, digite novamente celepar e pressione a tecla <ENTER>. 57. No passo seguinte, escolha uma senha para o usurio que est sendo criado, digite-a no campo apropriado e 58. Informe a senha novamente para verificao, a mesma digitada no passo acima, e pressione a tecla <ENTER>. 59. De volta ao menu principal do instalador, selecione a opo Instalar o sistema bsico e pressione a tecla <ENTER>. 60. Aguarde o trmino da instalao dos pacotes base e quando for questionado sobre o kernel que deve ser instalado escolha a opo linux-image-2.6- juntamente com a arquitetura mais adequada a seu processador. Por exemplo, para computadores com CPU AMD Athlon, voc deve escolher linux-image-2.6-k7, j para processador Intel Pentium IV, o interessante escolher linux-image-2.6-P4, e assim por diante. 61. O prximo passo, perguntar Ferramenta a ser utilizada para gerar o initrd de inicializao, escolha a opo initramfs-tools e pressione a tecla <ENTER>. 62. No menu principal do instalador escolha Configurar o gerenciador de pacotes e pressione a tecla <ENTER>. 63. Na questo Usar programas no-livres, responda Sim. 64. O APT far uma atualizao da lista de pacotes nesse momento. Caso aparea um erro com relao ao repositrio security, com a mensagem "No foi possvel acessar as atualizaes de segurana", escolha <Continuar>, e pressione a tecla <ENTER>. 65. Novamente no menu principal, escolha a opo Selecionar e instalar o software e pressione a tecla <ENTER>. 66. Na pergunta Participar do concurso de utilizao de pacotes ?, responda No. 67. Na tela de seleo de pacotes para instalao, desmarque todas as opes, escolha <Continuar>, e pressione a tecla <ENTER>. 68. O prximo passo, instalar o gerenciador de boot. No menu principal escolha a opo Instalar o GRUB em um disco rgido e pressione a tecla <ENTER>. 69. Em seguida, quando questionado se deseja instalar o gerenciador GRUB no registro principal de inicializao, responda Sim. Este passo pode demorar um certo tempo, tenha pacincia. 70. A prxima tela pergunta se voc deseja colocar uma senha no GRUB. Deixe o campo em branco (sem digitar nada) e pressione a tecla <ENTER>.
PG.: 15

APOSTILA GNU/DEBIAN AVANADO

71. Bom chegamos ao final da instalao. De volta ao menu principal do instalador, escolha a ltima opo ainda no visitada Finalizar a instalao e pressione a tecla <ENTER>. Quando a mensagem informando que a instalao acabou aparecer, pressione <Continuar>. Seu computador ser reiniciado. Alguns procedimentos logo aps o computador ter reiniciado: 1) Faa logon como root no sistema. 2) Edite as configuraes do APT atravs do comando "vim /etc/apt/sources.list" e deixe como abaixo: deb www.repositorios.eparana.parana/debian/ etch main contrib non-free deb www.repositorios.eparana.parana/celepar/ etch main contrib non-free deb www.repositorios.eparana.parana/security/ etch/updates main contrib non-free 3) Execute o comando "apt-get update" para atualizar a lista de pacotes. 4) Execute o comando "apt-get install basico-servidor". 5) Execute o comando "apt-get clean". 7) Execute o comando "apt-get --purge remove $(deborphan)".

PG.: 16

APOSTILA GNU/DEBIAN AVANADO

3. Como Instalar Programas


Este captulo tem o objetivo de explicar as possibilidades encontradas no GNU/Debian para instalao e manuteno de programas. Voc poder entender melhor o funcionamento dos gerenciadores de pacotes como o APT e dpkg, e tambm, como instalar programas a partir do cdigo fonte.

3.1. APT
O principal instalador de pacotes do GNU/Debian uma ferramenta do APT, o apt-get. Na maioria das vezes em que precisarmos instalar ou remover um pacote, este utilitrio que utilizaremos. freqente falarmos em pacotes em vez de programas, quando o assunto instalao. Isso vem da idia de empacotamento de programas, que a forma como cada distribuio organiza os programas que a constituem. No Debian, cada pacote termina com a extenso .deb, nas distribuies derivadas do RedHat a extenso .rpm. Alguns pontos sobre como usar o apt-get devem ser ressaltados: Apenas o usurio root pode instalar ou remover pacotes. Somente uma instncia pode ser executada. A segunda tentativa de iniciar, simultaneamente, a instalao de um pacote ir gerar uma mensagem de erro.

Para instalar um pacote, o apt-get obedece a seguinte ordem: Resolve dependncias: Verifica se o pacote requerido est disponvel para instalao e quais as suas dependncias. Caso no haja nenhum conflito com os pacotes instalados e suas dependncias sejam sanadas mostrado um relatrio para o usurio solicitando que confirme as alteraes que sero realizadas. Baixa: Ele acessa o mirror que voc configurou e faz o download do pacote e suas dependncias para o seu computador. O diretrio /var/cache/apt/archives recebe os pacotes baixados. Descompacta: O pacote descompactado para iniciar a instalao. Configura: Dependendo do pacote, antes de instalar, necessrio perguntar sobre algum tipo de preferncia ao usurio. Instala: Todos os componentes do pacote so copiados para os diretrios devidos. As principais aes que executaremos com este comando so: apt-get update - Existe uma lista, que contm uma descrio de todos os pacotes disponveis para o Debian, disponvel dentro de cada repositrio de pacotes. O apt-get consulta esta lista, para saber o que pode ser instalado. Este comando faz uma comparao entre a lista que voc tem armazenada e a lista que est no servidor de pacotes. Se a sua lista for mais velha, ele faz o download da mais recente. A atualizao de um nico pacote provoca o lanamento de um nova lista. apt-get upgrade Esta a opo responsvel pela atualizao de pacotes. Quando voc executa este comando, uma lista de pacotes copiada do repositrio para a maquina local do usurio, onde feita uma comparao entre as verses de software existentes no repositrio e na maquina local, caso existam verses mais recentes para os programas que o usurio possu em seu sistema, ento, o APT automaticamente atualizar estes programas no computador do usurio. No preciso dizer qual pacote voc quer atualizar, independente de ser apenas um, ou serem vrios, ele far toda atualizao necessria. apt-get clean - Aps a instalao de um pacote, no precisamos necessariamente, manter o arquivo .deb em nosso sistema (em /var/cache/apt/archives). O processo de instalao no remove os pacotes baixados! Se voc no remover os pacotes baixados, comear a acumul-los no disco rgido. Com o passar do tempo isso pode causar um problema de falta de espao. O apt-get clean faz a remoo de todos os pacotes no diretrio de cache do APT.

PG.: 17

APOSTILA GNU/DEBIAN AVANADO

apt-get install PACOTE - Executamos este comando para realizar a instalao de pacotes no sistema. Se quisermos instalar mais de um programa, basta escrever todos os nomes, separados por espao na linha de execuo do comando. Se um pacote precisa de outros para ser instalado, isto , se ele tem pr-requisitos, eles tambm sero selecionados para instalao automaticamente. Quando voc requisita a instalao de um pacote que no tem dependncias, o download comea imediatamente. Caso existam dependncias, elas so mostradas a voc e o programa aguarda a sua confirmao (Y/n) para continuar. Existem vrios motivos para ele esperar por uma confirmao: a lista de dependncias pode ser muito grande e voc pode no querer instalar todos os pacotes, pode no haver espao em disco suficiente para instalar o programa e/ou suas dependncias, o pacote ser incompatvel com outro j instalado e exigir que este seja removido, ou ainda, o repositrio no uma fonte confivel para o Debian, que acontece quando no existe na mquina a chave pblica do repositrio de onde vem a atualizao. Existe ainda, um caso em que h mais de uma verso disponvel para o mesmo pacote, se um pacote chamado nome possu uma verso 1.0-0 e 2.0-0, por exemplo, a verso mais nova ser instalada por padro, entretanto, podemos querer instalar a verso mais antiga (1.0-0), tendo que executar o comando da seguinte forma: apt-get install nome=1.0-0 apt-get dist-upgrade - Possibilita a atualizao completa da distribuio utilizada pelo usurio. importante que usurio tenha em mente, que a execuo deste comando num sistema que utilize meta-pacotes customizados, como o caso do Debian Desktop Paran usado na Celepar, ou verses de software instaladas manualmente (atravs de compilao do cdigo fonte, por exemplo), podero gerar problemas graves, impossibilitando inclusive o uso posterior do sistema. Para a devida utilizao deste comando, necessrio a edio do arquivo de configurao do APT, o /etc/apt/sources.list, configurando o mesmo para utilizar os repositrios da nova distribuio que ser instalada no sistema. apt-get remove PACOTE - Remove um ou mais pacotes. Esta operao faz a desinstalao de um pacote do sistema e no a remoo do .deb do diretrio de cache do APT. Em alguns casos, os arquivos de configurao e/ou dados do pacote so mantidos. Isso pode ser bom ou ruim. Se voc removeu um pacote por acidente, todo o seu trabalho de configurao dele ainda estar preservado. Preste ateno s mensagens mostradas durante a remoo de um pacote para saber o que est acontecendo. Observe tambm que se algum pacote depende do pacote a ser removido, esse pacote tambm ser removido. apt-get --purge remove PACOTE - Remove um ou mais pacotes e seus respectivos arquivos de configurao. apt-get source PACOTE - Possibilita que o cdigo fonte de um programa seja copiado para maquina local em vez do binrio do programa e seus scripts de configurao, que compem o pacote do programa propriamente dito. Para baixar arquivos contendo o fonte de programas para sua maquina, necessrio configurar adequadamente o arquivo /etc/apt/sources.list, para isso veja o tpico Reconfigurando a lista de pacotes, na seqncia. apt-get build-dep PACOTE - Este comando, tenta satisfazer as dependncias, que um determinado pacote contendo cdigo fonte de um programa possu, para ser compilado. Por exemplo, suponha que voc deseja recompilar o cdigo fonte do tuxracer (um joguinho), se voc executar o comando apt-get build-dep tuxracer, o APT tentar instalar todos os pacotes que sejam necessrios para compilao do pacote tuxracer. Em algumas situaes, necessrio instalar pacotes alm daqueles que so trazidos automaticamente pelo comando apt-get build-dep. Isto algo natural e voc dever se acostumar a estas situaes. apt-get check uma ferramenta de diagnostico. Ele atualiza o cache de pacotes e verifica se h alguma dependncia quebrada que necessita ser resolvida (utilizando-se apt-get -f install) no sistema. apt-get install --reinstall PACOTE - Em algumas situaes, precisaremos reinstalar um pacote j presente no sistema. Este o comando que permite fazer isso. Tome o cuidado de fazer uma cpia dos seus arquivos de configurao para no ter surpresas desagradveis.
PG.: 18

APOSTILA GNU/DEBIAN AVANADO

Voc deve estar se perguntando, como fazer para saber o que instalar, ou qual o nome de um determinado programa (pacote) no Debian. Para responder a essas dvidas, vamos apresent-lo aos dois programas criados para resolver este problema, e seus parmetros: apt-cache search NOME - Para procurar por um pacote qualquer, executamos este comando. Ele faz uma pesquisa na lista de pacotes disponveis, procurando pacotes que possuam a expresso fornecida no argumento NOME. A sada deste comando, apresenta todos os pacotes que apresentam a palavra fornecida como argumento em parte do nome ou na descrio do pacote. Existem formas mais complexas de busca que podem ser mais claras ou mais especficas, mas geralmente, a utilizao do comando grep para filtrar a sada j suficiente para grande maioria dos casos. apt-cache show PACOTE - Uma vez descoberto o nome correto do pacote Debian, voc pode visualizar todas as informaes sobre o pacote, bem como seu mantenedor, sua verso, sua descrio, dentre outras informaes relevantes. apt-cache showsrc PACOTE Tem a mesma funo que apt-cache show, porm, atua mostrando informaes sobre pacotes fontes. synaptic uma interface grfica para a instalao de pacotes. Ela tambm utilizada em outras distribuies, o Ubuntu uma delas.

3.1.1. Reconfigurando a lista de pacotes


Os pacotes que instalaremos em nosso sistema esto disponveis em servidores ao redor do mundo. Estes servidores contm todos os pacotes disponveis para o Debian. Eles so criados com uma tcnica de espelhamento e, graas a isto, podemos baixar os pacotes do servidor mais prximo de ns, diminuindo o tempo de instalao. A qualquer momento podemos reconfigurar a lista de servidores que utilizaremos atravs da edio do arquivo de configurao /etc/apt/sources.list, usando o seu editor de texto preferido. A configurao padro para os computadores GNU/Debian verso etch da rede do Estado do Paran apresentada abaixo:
deb http://www.repositorios.eparana.parana/debian/ etch main contrib non-free deb http://www.repositorios.eparana.parana/celepar/ etch main contrib non-free deb http://www.repositorios.eparana.parana/marillat/ etch main deb http://www.repositorios.eparana.parana/security/ etch/updates main contrib non-free

Na configurao descrita acima, estamos apontando o APT para os repositrios internos da Celepar. A ordem das linhas faz diferena, o primeiro servidor a ser consultado o da primeira linha e assim por diante. Assim, devemos colocar o que est mais prximo no incio do arquivo. Tambm no pode haver espao entre o incio da linha e a palavra deb. Cada linha representa uma lista que dever ser copiada para o seu sistema. Se voc encontrar alguma linha que comece com deb-src, poder coment-la acrescentando o smbolo # no incio da linha. Este tipo de linha, serve para baixar o cdigo fonte de um programa. Lembre-se que os pacotes com extenso .deb, j foram compilados para uma arquitetura especfica, por isso, s baixar e instalar. Quando voc necessitar compilar um programa, e neste caso precisar do seu cdigo fonte, uma linha como a que mostrada abaixo deve ser inserida no arquivo de configurao do APT:
deb-src http://www.repositorios.eparana.parana/debian/ etch main

3.1.2. Aps reconfigurar a lista de pacotes


Todas as vezes que voc alterar o arquivo /etc/apt/sources.list dever atualizar a(s) lista(s) existentes no seu sistema, fazendo: apt-get update Caso este procedimento no seja obedecido, e voc tente instalar um pacote disponibilizado recentemente no repositrio, receber uma mensagem de erro.

PG.: 19

APOSTILA GNU/DEBIAN AVANADO

3.1.3. O arquivo de configurao apt.conf


O arquivo /etc/apt/apt.conf, contm a configurao principal a ser utilizada pelas ferramentas do APT. Sempre que uma ferramenta do grupo APT iniciada, ela ir ler a varivel de ambiente APT_CONFIG, e posteriormente, a configurao deste arquivo para se ajustar as preferncias do usurio. Todas as opes que so passadas pelo usurio atravs da linha de comandos, sobrescrevem as configuraes contidas no arquivo apt.conf. O arquivo apt.conf organizado sob a forma de arvore em divises funcionais, como por exemplo: o grupo APT, o grupo Acquire, o grupo DPKG e a seo Dir (para diretrios de configurao). Sintaticamente, o arquivo pode ser configurado sob as seguintes formas: APT::Get::Assume-Yes "true"; ou APT { Get { Assume-Yes "true"; }; }; Nos exemplos acima, podemos perceber que tanto os caracteres ::, quanto { e };, so utilizados para definir qual o grupo funcional, seo e opes estamos tratando naquele espao do arquivo de configurao. Em ambos exemplos que citamos (acima), estamos tratando da opo Assume-Yes, da seo Get, do grupo funcional APT, contudo, de formas sintaticamente diferentes, mas produzindo o mesmo resultado. Linhas que se iniciam com os caracteres //, ou um bloco de texto, que se inicia com /* e termina com */, so considerados comentrios e so ignorados. A seguir explicaremos a finalidade de cada grupo funcional, que pode ser configurado atravs do apt.conf: O grupo APT utilizado para controlar as opes gerais para uso de todas a ferramentas do APT.

O grupo Acquire diviso funcional usada para configurar as rotinas de download de pacotes e manipuladores de URI's utilizados pelas ferramentas do APT. O grupo Dir Definio de layout de diretrios. Usado para a configurao dos diretrios que sero utilizados pelo APT. O grupo Dselect Configuraes que afetam o uso da ferramenta dselect, quando ela utilizada em conjunto com o APT. O grupo DPKG Configuraes que afetam o uso do dpkg. As opes que fazem parte desta seo, alteram a forma normal como o dpkg atua, quando invocado pelo APT. O grupo Debug Utilizado para configurar opes para depurao no uso das ferramentas do APT.

Cada um destes grupos funcionais, possu uma gama prpria de opes, que no discutiremos aqui, por ser muito vasta. Se voc precisar saber qualquer detalhe sobre as opes que podem ser utilizadas neste arquivo de configurao, estude a documentao oficial do arquivo, atravs do comando man apt.conf.
PG.: 20

APOSTILA GNU/DEBIAN AVANADO

Exemplos: Exemplo 01: Configurando um servio de proxy para ser utilizado pelo APT. Esta configurao, possibilita buscar pacotes de programas na Internet atravs de um servidor proxy existente na sua rede. Acquire { http { Proxy http://usuario:senha@proxy.organizacao:8080/; }; }; Exemplo 02: Configurando a arquitetura e release (verso) padro dos pacotes a serem utilizados pelo sistema. APT { Architecture "i386"; Default-Release stable; }; Exemplo 03: Configurando o diretrio de cache do APT. Dir / { Cache "var/cache/apt/" { Archives "archives/"; srcpkgcache "srcpkgcache.bin"; pkgcache "pkgcache.bin"; }; }; Um timo arquivo de exemplos de configurao do apt.conf pode ser encontrado em /usr/share/doc/apt/examples/configure-index.gz.

3.1.4. O arquivo de configurao preferences


O arquivo /etc/apt/preferences controla a prioridade de verso de pacotes. possvel manter fontes stable, testing e unstable ao mesmo tempo. Caso tenha inserido no arquivo /etc/apt/sources.list repositrios de verses diferentes (stable e testing por exemplo) necessrio criar o arquivo preferences para que possa na instalao selecionar qual verso ter prioridade e de qual verso voc deseja instalar os pacotes. obs.: Muito cuidado quando estiver trabalhando com verses diferentes, uma m instalao de pacote pode gerar quebras e at mesmo a paralisao do sistema. Segue um exemplo para o arquivo preferences:
Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release a=testing Pin-Priority: 400

Neste exemplo para todos os repositrios stable, a prioridade ser 900 e para testing 400, ou seja, vale a prioridade mais alta, ento o stable ser a opo default, sempre que utilizarmos o comando apt-get com as opes install, update, upgrade, source, distPG.: 21

APOSTILA GNU/DEBIAN AVANADO

upgrade, o pacote ser do stable. Para instalar pacotes do testing devemos utilizar o comando: # apt-get -t testing install [pacote] O mesmo procedimento se aplica as opes update, upgrade, dist-upgrade ou source. Podemos definir que um pacote sempre venha da release testing, para isso dentro do arquivo /etc/apt/preferences, por exemplo: Package: amule Pin: release a=testing Pin-Priority: 905 O pacote desejado vai ter prioridade maior que o de qualquer outro release, ento o pacote desejado ser da release testing.

3.2. dpkg
importante lembrar do comando dpkg. Ele tambm instala, remove e reconfigura pacotes. O dpkg vem aos poucos perdendo usurios para o APT, uma vez que este ltimo, proporciona maiores facilidades de utilizao, sendo a mais significativa dessas facilidades, o fato de instalar o software e suas dependncias automaticamente, algo que ainda no possvel com o dpkg. Mesmo com o avano do APT, muito importante estudar e entender o funcionamento e as opes que o dpkg possu. Isto porque, o dpkg continua sendo a principal ferramenta de obteno de informaes sobre os pacotes instalados no sistema, e em vrios casos, de resoluo de problemas com pacotes. Por essa razo, explicamos o uso desta ferramenta e de suas principais opes na seo Comandos de Uso Geral, do captulo Comandos Avanados, deste documento.

3.3. Compilando Programas a Partir do Cdigo Fonte


Embora atualmente, a maioria dos programas para o GNU/Debian estejam disponveis para instalao via pacotes, ainda assim, em alguns casos preciso compilar programas a partir de seu cdigo fonte. Este procedimento, ser descrito no tpico a seguir.

3.3.1. Arquivos tarball


De modo geral, cdigos fonte so distribudos atravs de arquivos compactados. A grande maioria destes arquivos, possu uma estrutura de diretrios, os arquivos fonte em si, um arquivo de configurao chamado Makefile, documentao e outros arquivos encapsulados em um arquivo no formato tar, com compresso de dados, usando gzip (.tar.gz ou .tgz), ou bzip2 (.bz2 ou .tbz2). Para iniciar a compilao de um cdigo fonte, a primeira coisa a se fazer obter o cdigo para ser compilado a partir da Internet, pacote ou outro meio qualquer. Aps o pacote estar disponvel localmente, voc dever extrair o contedo para um diretrio adequado a compilao (ex.: /install). possvel extrair um pacote utilizando o tar em conjunto com utilitrio de compresso como gzip ou bzip2, da seguinte maneira: tar -xvzf nome_do_arquivo.tar.gz ou tar -xvjf nome_do_arquivo.tar.bz2 Aps a extrao do contedo do arquivo compactado, necessrio entrar no diretrio que foi criado durante a extrao dos arquivos utilizando o comando cd. O programa mais utilizado, para compilar cdigos fonte no GNU/Linux o gcc, um compilador C/C++ livre. De maneira geral, alguns pacotes GNU so necessrios para compilar um programa de cdigo livre. Os mais comuns na distribuio Debian so os
PG.: 22

APOSTILA GNU/DEBIAN AVANADO

pacotes: make, autoconf, gcc, g++ e libc6-dev. Abaixo listamos os procedimentos gerais para configurao/compilao de cdigos fontes no GNU/Debian. Lembre-se que este procedimento pode variar um pouco dependendo do cdigo que se est compilando. O arquivo configure Este arquivo um script shell que examina o sistema para verificar se diversas dependncias necessrias para compilar o projeto sero satisfeitas. Ele deve ser executado digitando-se ./configure dentro do diretrio que contm o cdigo-fonte do programa a ser compilado. Esse script, tambm pode conter parmetros que podem ser passados na linha de execuo para configurao de opes especificas, para consultar a lista de parmetros disponveis, tente executar o script ./configure --help. Se o script configure no encontrar alguma das dependncias necessrias para compilao do programa, um erro gerado e a execuo finalizada automaticamente, gerando uma mensagem semelhante abaixo: checking for SDL - version >= 1.2.0... no configure: error: *** SDL version 1.2.0 not found! Nesse caso, nos falta a biblioteca de desenvolvimento (cabealhos) SDL verso 1.2.0 ou mais recente. Caso quisssemos resolver este problema, precisaramos instalar o pacote libsdl1.2-dev para resolver essa dependncia. A maioria das bibliotecas necessrias para a compilao de programas no GNU/Debian tm o prefixo lib e o sufixo -dev, como por exemplo, libc6-dev, libsdl1.2-dev, etc. make O comando make utiliza as configuraes que foram criadas pelo script configure para compilar mltiplos arquivos de cdigo fonte de um projeto. Utiliza tambm um arquivo de descrio (chamado makefile ou Makefile) que est presente no diretrio onde o cdigo fonte foi extrado. Seu contedo composto de regras que definem as dependncias entre arquivos fonte e os comandos necessrios para a compilao. A partir deste arquivo, ele executa seqncias de comandos que so interpretados pelo shell para realizar a compilao de maneira correta. make install o comando utilizado para compilar e em seguida executar o instalador do programa que acabamos de compilar. Alguns programas no possuem essa facilidade, nestes casos, o administrador ter tambm o trabalho manual de instalar o programa compilado corretamente, em geral, realizando atividades como copiar arquivos executveis para diretrios como /usr, e os arquivos de configurao para /etc, etc.

PG.: 23

APOSTILA GNU/DEBIAN AVANADO

4. Gerenciando Discos e Parties


Neste captulo, mostraremos como listar e obter informaes a respeito dos discos rgidos que o sistema possu, criar, remover e formatar parties.

4.1. Obtendo Informaes sobre os Discos Rgidos


A forma mais rpida e fcil de se obter informaes relacionadas aos discos rgidos, que um determinado sistema GNU/Linux possu, executando o utilitrio fdisk em conjunto com o parmetro -l, conforme mostrado abaixo: fdisk -l A execuo do comando exibir informaes a respeito de todos os discos rgidos que o sistema possu. A seguir, um exemplo da sada do comando, em um sistema com dois discos rgidos IDE: # fdisk -l Disk /dev/hda: 20.0 GB, 20020396032 bytes 255 heads, 63 sectors/track, 2434 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 Boot * Start 1 63 94 1067 End 62 93 1066 2434 Blocks Id 497983+ 82 249007+ 83 7815622+ 83 10988460 83 System Linux swap / Solaris Linux Linux Linux

Disk /dev/hdb: 80.0 GB, 80020396032 bytes 255 heads, 63 sectors/track, 8420 cylinders Units = cylinders of 16065 * 512 = 16025280 bytes Device /dev/hdb1 /dev/hdb2 Boot Start 1 63 End 62 8420 Blocks Id 497983+ 82 729007+ 83 System Linux swap / Solaris Linux

Como podemos ver atravs do exemplo acima, vrias informaes podem ser obtidas facilmente, como: nmeros de discos rgidos que o sistema possu, tamanho dos discos, nome de cada dispositivo, parties que cada disco tem e seus respectivos atributos, enfim, uma srie de dados que ajudam o administrador a administrar seus dispositivos de armazenamento. Vale ressaltar que caso seu sistema possua discos utilizando tcnicas de RAID via hardware, quando o comando for executado, os discos sero mostrados de acordo com as configuraes RAID que estiverem em vigor no seu sistema. Por exemplo, numa configurao em RAID 1 (mirroring), apesar de existirem fisicamente dois discos na maquina, apenas um ser mostrado com fdisk -l. Nos prximos tpicos, explicaremos como utilizar outro utilitrio de particionamento de discos. Caso voc tenha despertado interesse pelo uso do fdisk, d uma olhada em sua documentao com o comando man fdisk.

4.2. Particionando o Disco com o cfdisk


Para iniciar o particionador, como root, digite cfdisk seguido do nome do dispositivo (HD) a ser particionado, por exemplo cfdisk /dev/hda. Lembre-se, /dev/hdX utilizado para HD's IDE, j /dev/sdX usado para discos SCSI, SATA e Pen-drives.

PG.: 24

APOSTILA GNU/DEBIAN AVANADO

Figura 4 - Menu principal do utilitrio cfdisk.

As opes que utilizaremos no cfdisk esto descritas abaixo: Nova Cria uma nova partio, primria ou lgica, definida por um tamanho menor ou igual ao tamanho disponvel no HD. A partio primria, o tipo de partio bsica, definida por apenas um tipo de sistema de arquivos em que nenhuma sub-partio pode ser criada (por padres internacionais, apenas 4 parties primrias podem ser criadas por HD). Uma partio lgica, uma partio primria, em que vrias subparties podem ser criadas (extendendo-se o limite de 4 parties por HD). Excluir Remove uma partio j existente no disco, deixando a rea do HD que continha a partio com espao livre, para que uma ou mais parties possam ser criadas em seu lugar. Tipo Exibe uma lista com os tipos de partio que podem ser criados e ao final define o tipo de partio a ser usado. Inicializvel Define uma partio inicializvel (bootvel). Gravar Salva as alteraes feitas na tabela de parties do disco. Ajuda Exibe a ajuda do cfdisk.

4.3. Criando uma Partio Primria


Para criar uma nova partio, devemos, primeiramente, escolher atravs das setas para cima e para baixo do teclado uma rea do HD que esteja livre, deixando-a marcada. Feito isso, com as setas direita e esquerda do teclado, deve-se escolher a opo Nova. Agora devemos escolher a opo Primria. A prxima opo definir o tamanho da partio, sendo que o tamanho mximo que pode ser usado j est pr-definido, mas podemos mud-lo apenas digitando o novo valor em MB (no precisamos apagar o valor que j est no campo, basta apenas digitar o novo valor). Por exemplo, se temos 2GB livres e quisermos criar duas parties de 1GB, devemos digitar o valor 1024 neste campo e, ento, repetir o processo de criao de partio. Quando todas as alteraes estiverem feitas, devemos selecionar a opo Gravar, para que as alteraes sejam efetivamente salvas no HD. Se no selecionarmos a opo de gravao e sairmos do cfdisk, nenhuma alterao ser feita.

PG.: 25

APOSTILA GNU/DEBIAN AVANADO

4.4. Criando uma Partio Lgica


Parties lgicas, so utilizadas quando necessitamos particionar o disco em mais de 4 partes, que poderiam ser feitas apenas com parties primarias, isto porque, as parties lgicas possibilitam expandir o nmero total de parties do disco bem alm do total permitido nas primrias. Devido isso, normalmente deixamos as parties lgicas no final do HD, onde possam ser criadas de acordo com a quantidade necessria que precisarmos. OBS.: Se 4 parties primrias forem criadas, e a soma das 4 no for igual ao tamanho total do HD, no poderemos mais particionar o espao restante, onde aparecer a mensagem Inutilizvel no lugar de Espao livre. Selecionando o bloco do disco onde ainda existe a mensagem Espao livre, escolheremos a opo Nova. Quando formos perguntados se a partio primria ou lgica, escolheremos a opo Lgica. Definimos o tamanho da nova partio, digitando o valor do tamanho da partio em MB. Voc poder repetir este procedimento para criar quantas parties forem necessrias no seu caso, e quando todas as alteraes estiverem sido feitas, devemos selecionar a opo Gravar, para que as alteraes sejam efetivamente salvas no HD. Caso voc no faa isso, nenhuma alterao ser feita no particionamento do disco.

4.5. Excluindo uma Partio


Para remover uma partio, basta selecion-la e utilizar a opo Excluir. Este procedimento no pergunta se voc realmente deseja remover a partio, como na maioria dos outros programas faz, mas no h motivo para se preocupar, se alguma partio for excluda por engano, basta sair do utilitrio sem selecionar a opo Gravar, que as alteraes no sero salvas na tabela de particionamento do disco.

4.6. Salvando as Alteraes no Disco


Quando todas as alteraes forem concludas, devemos selecionar a opo Gravar, para que elas sejam efetivamente salvas no HD. Se no selecionarmos a opo de gravao e sairmos do cfdisk, nenhuma alterao ser salva, e todo o trabalho ter que ser refeito. CUIDADO: Ao selecionar a opo Gravar as alteraes no podero ser desfeitas, portanto, verifique cuidadosamente se as alteraes esto mesmo corretas antes de grav-las no disco.

4.7. Criando o Sistema de Arquivos


Ensinaremos duas formas para se criar o sistema de arquivos em uma partio, uma delas utilizando o prprio cfdisk e a outra, utilizando uma ferramenta chamada mkfs. Para definirmos o tipo de uma partio, e conseqentemente, cri-la automaticamente, devemos selecionar a opo Tipo do cfdisk, e em seguida, escolher uma das opes de sistemas de arquivo disponveis. Depois disso, resta gravar as mudanas atravs da opo Gravar e a partio estar criada e j com o sistema de arquivos selecionado disponvel para o uso. Podemos tambm criar uma partio sem definir o tipo dela, entretanto, para que uma partio fique funcional, temos obrigatoriamente que criar um sistema de arquivos em seu espao. Quando criamos apenas o espao da partio sem definir um sistema de arquivos a ser utilizado naquele espao, podemos empregar um outro mtodo para criar o sistema de arquivos naquela partio. Para isso, basta utilizar o utilitrio mkfs especificando o tipo de sistema de arquivos que desejamos utilizar na partio em questo. Abaixo um exemplo de uso deste utilitrio: mkfs -t xfs /dev/hda1
PG.: 26

APOSTILA GNU/DEBIAN AVANADO

No exemplo acima, criamos um sistema de arquivos do tipo xfs na partio /dev/hda1. Essa a maneira mais simples de se criar um sistema de arquivos em uma partio, aps ela ter sido criada sem um tipo definido. Tambm podemos usar as extenses do utilitrio mkfs, para realizar a criao de sistemas de arquivos especficos. Abaixo um exemplo de utilizao de extenses que faz exatamente a mesma operao que o exemplo citado anteriormente: mkfs.xfs /dev/hda1

PG.: 27

APOSTILA GNU/DEBIAN AVANADO

5. Gerenciador de Partida - GRUB


O Gerenciador de Partida um programa que carrega um Sistema Operacional e/ou permite escolher qual ser iniciado. Normalmente, este programa gravado no setor de boot de uma partio ativa ou no Master Boot Record (MBR) do disco rgido. O GRUB (Grand Unified Boot Loader), mais uma alternativa de gerenciador de inicializao, e apresenta alguns recursos extras com relao as outras opes disponveis. Ele flexvel, funcional e poderoso, podendo inicializar sistemas operacionais como o Windows (9x, ME, NT, 2000 e XP), Dos, Linux, GNU Hurd, *BSD, OS/2 etc. Podemos destacar tambm o suporte aos sistemas de arquivos EXT2, EXT3 e ReiserFS, FAT16 e FAT32 (Win 9x/ME), FFS (Fast File System usado no *BSD), minix (MINIX OS) etc. Por utilizar o padro Multiboot, ele capaz de carregar diversas imagens de inicializao (uma por vez) e mdulos. Por esse motivo, ele o nico gerenciador de inicializao capaz de carregar o conjunto de servidores do GNU Hurd. O GRUB tambm permite buscar imagens do Kernel pela rede, por cabo seriais, suporta discos rgidos IDE, SATA e SCSI, informar a quantidade total de memria RAM ao sistema, tem interface voltada para linha de comandos ou menus de escolha, alm de suportar sistemas sem discos e terminais remotos. Como possu inmeros recursos, ser apresentada sua utilizao bsica, ficando como sugesto ao leitor procurar se aprofundar mais em suas possibilidades de uso e configurao.

5.1. Como o GRUB Trabalha com Discos e Parties


O GRUB trabalha com uma notao diferente para apontar discos e parties sendo necessrio algumas explicaes antes de prosseguir. Veja a tabela comparativa:
Disco IDE Dispositivo no Linux Dispo sitivo no GRUB /dev/hda /dev/hda1 /dev/hda2 /dev/hdb /dev/hdb1 /dev/hdb2 (hd0) (hd0,0 ) (hd0,1 ) (hd1) (hd1,0 ) (hd1,1 ) Dispositivo no Linux /dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdb2 (hd0) (hd0,0) 1 (hd0,1) 2 (hd1) (hd1,0) 1 (hd1,1) 2 Disco SCSI ou SATA Dispositivo no GRUB # Disco SCSI ID 0 # Disco SCSI ID 0, partio # Disco SCSI ID 0, partio # Disco SCSI ID 1 # Disco SCSI ID 1, partio # Disco SCSI ID 1, partio /dev/fd0 (fd0) Disquete Dispositivo no Linux Dispositivo no GRUB

OBS: Os discos IDE, SCSI e SATA so referenciados ambos como (hd?) pelo GRUB.

5.2. Instalando o GRUB


A instalao do GRUB s precisa ser executada uma nica vez. Caso seja necessria alguma mudana como por exemplo adicionar uma nova imagem, esta pode ser feita apenas editando o arquivo de configurao menu.lst, com o comando vim /boot/grub/menu.lst. Normalmente, durante a instalao do GNU/Debian voc ser questionado se deseja instalar o GRUB, o que torna o processo mais prtico, uma vez que ao ser instalado ele reconhecer automaticamente os demais Sistemas Operacionais instalados na sua estao e os incluir na lista de sistemas disponveis. Um mtodo simples para adicionar o GRUB para gerenciar seu MBR, executar o comando:
PG.: 28

APOSTILA GNU/DEBIAN AVANADO

/sbin/grub-install /dev/hda Este comando grava o GRUB no MBR do primeiro disco rgido IDE do sistema e cria o diretrio /boot/grub, onde estaro os arquivos necessrios para o seu funcionamento. interessante executar o comando update-grub, que atualiza dinamicamente a lista de sistemas que podem ser carregados durante a inicializao da maquina, e os adiciona ao arquivo menu.lst automaticamente, conforme a instalao corrente. Tambm conveniente, ler o arquivo de configurao de exemplo do GRUB e otimiz-lo s suas necessidades. Para checar este arquivo, utilize o seguinte comando: vim /usr/share/doc/grub/examples/menu.lst

5.3. No Disco Flexvel (com interface de menu)


Pode haver um momento, em que voc deseje ter um disquete, que funcione com vrios sistemas e no dependa de um disco fixo. Neste caso, voc poder armazenar suas configuraes do GRUB em um disco flexvel (disquete). Para criar um disquete de inicializao, siga os passos abaixo: 1. Com a privilgios de administrador do sistema (root), crie um sistema arquivos em um disquete com o comando: mke2fs /dev/fd0 2. Monte o disquete que voc acabou de formatar: mount /dev/fd0 /floppy -t ext2 3. Crie um diretrio para o GRUB: mkdir /floppy/grub 4. Copie os arquivos necessrios para inicializao, com os seguintes comandos: cp /usr/lib/grub/i386-pc/stage[12] /floppy/grub cp /usr/share/doc/grub/examples/menu.lst /floppy/grub 5. Desmonte o disquete: umount /floppy 6. Execute o GRUB: /sbin/grub 7. Este ltimo comando (passo 6), disponibiliza a linha de comando do GRUB. Nela, digite os seguintes comandos: grub> install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/ grub/menu.lst grub> quit Neste momento, o disquete estar pronto. Note que o arquivo menu.lst que foi copiado para ele, um arquivo de exemplo, sendo necessrio que voc o configure de acordo com suas necessidades.

5.4. Opes do Arquivo de Configurao


Esta seo descreve o arquivo menu.lst com explicaes sobre as opes mais usadas. Este arquivo dividido em parmetros Globais, que afetam o arquivo todo e parmetros que s tem efeito para as imagens do sistema que ser carregado. Algumas opes podem ser passadas para o kernel do Linux no momento do boot, algumas delas tambm sero detalhadas.

5.4.1. Parmetros globais


timeout = Define um tempo (em segundos) de espera. Se nenhuma tecla for pressionada, carrega a imagem padro. default = Define qual ser a opo padro que deve ser automaticamente selecionada quando nenhuma outra for especificada em um tempo definido pelo parmetro timeout. fallback = Caso ocorra algum erro inesperado e a opo padro no possa ser carregada, este parmetro define qual a outra opo deve ser utilizada. color = Permite que voc escolha as cores usadas no menu de boot. password = Permite que voc especifique uma senha. Est ser solicitada sempre que houver necessidade de realizar uma funo que no seja carregar as imagens disponveis, como por exemplo acessar a linha de comandos do GRUB. Voc pode
PG.: 29

APOSTILA GNU/DEBIAN AVANADO

utilizar tambm o parmetro password para esconder um arquivo que contenha outras configuraes, como um arquivo menu.lst secreto. O arquivo pode ter um nome qualquer. Ex.: password = senha (hd0,0)/boot/grub/secret.conf possvel ter vrias entradas do parmetro password em um mesmo arquivo de configurao, sendo que uma delas usada para bloquear o acesso as imagens/linha de comandos, e as outras, usadas para carregar arquivos de opes do GRUB. Durante a inicializao do sistema, voc poder digitar a tecla p para entrar com a senha que protege as imagens ou linha de comandos do GRUB, conforme a sua configurao. hiddenmenu = Est opo faz com que o menu de opes no seja mostrado, e a inicializao seja feita pela imagem definida pelo parmetro default, depois de expirado o tempo no parmetro timeout. O usurio pode requisitar o menu com as opes pressionando a tecla <ESC> antes que o tempo definido em timeout expire.

5.4.2. Parmetros que afetam apenas as imagens


title = Define um texto que ser apresentado no menu de boot para identificar o sistema a ser inicializado. root = Determina qual a partio raiz do sistema a ser inicializado. rootnoverify = Idntico ao parmetro anterior (root), mas no tenta montar a partio-alvo, o que necessrio para alguns sistemas como o DOS e o MS Windows. kernel = Nesta opo, voc informa qual o kernel que ser inicializado. Tambm possvel passar parmetros diretamente para o kernel que ser carregado. Ex.: kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=791 module = Faz com que algum mdulo necessrio para o boot seja carregado. Lembre-se que estes no so mdulos do kernel (mdulos de som, rede, etc.) e sim mdulos necessrios ao boot de alguns sistemas, como por exemplo os utilizados pelo GNU Hurd. lock = Quando voc desejar controlar se uma pessoa pode ou no iniciar um sistema que esteja listado nas opes do menu de boot, voc pode utilizar esta opo que faz com que a senha especificada com o parmetro password seja solicitada no momento em que o usurio tentar carregar a imagem em questo. pause = Emite uma mensagem na tela e espera uma tecla ser pressionada. makeactive = Torna a partio ativa. Este comando est limitado as parties primrias dos discos. chainloader = Alguns sistemas como o Windows ou o Dos, armazenam seu prprio gerenciador de boot no incio da partio em que ele est instalado. Para efetuar a carga destes sistemas atravs do GRUB, voc precisa pedir para que o gerenciador de inicializao de tal sistema seja carregado e faa seu trabalho, iniciando o sistema em questo. hide e unhide = Esconde/mostra uma partio respectivamente. Estas duas opes, so necessrias quando houver mais de uma verso do DOS ou do Windows na mquina em parties diferentes, j que estes sistemas detectam automaticamente a partio. Vamos a um simples exemplo para ilustrar uma situao bem comum: Suponha que o Windows esteja instalado na primeira partio primria do primeiro disco rgido (hd0,0) e o DOS na segunda partio primria (hd0,1). Quando quisermos carregar estes sistemas, devemos ajustar o arquivo /boot/grub/menu.lst, adicionando as seguintes configuraes: # Poro do arquivo /boot/grub/menu.lst title Windows hide (hd0,1) unhide (hd0,0) rootnoverify (hd0,0) chainloader +1 makeactive title Dos
PG.: 30

APOSTILA GNU/DEBIAN AVANADO

hide (hd0,0) unhide (hd0,1) rootnoverify (hd0,1) chainloader +1 makeactive map = Alguns sistemas no permitem ser iniciados quando no esto no primeiro disco (DOS, Windows 9x etc). Para resolver esta e outras situaes deste tipo, o GRUB tem um comando que permite enganar tal sistema mapeando as unidades de disco do modo como lhe for mais conveniente. Imagine que voc tenha o primeiro disco (hd0) com o GNU/Linux instalado e em um outro disco (hd1) com o Windows/DOS instalado. O Windows/DOS no permitem serem inicializados desta forma, e como soluo, voc poderia usar a seguinte entrada no arquivo de configuraes /boot/grub/menu.lst do GRUB: title Windows unhide (hd1,0) rootnoverify (hd1,0) chainloader +1 map (hd1) (hd0) makeactive Isso faz com que o disco (hd1), onde Windows/DOS est instalado, seja apresentado a este sistema como (hd0), um artifcio que permitir que estes sistemas sejam carregados normalmente.

5.4.3. Parmetros enviados diretamente ao kernel


Pode ser necessrio passar alguns parmetros para o kernel no momento do carregamento do SO. Voc poder fazer isso, editando as linhas do arquivo /boot/grub/ menu.lst, conforme o exemplo a seguir: # Exemplo de entrada no menu.lst title Linux 2.6.18-5 root (hd0,0) kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=791 mem=512M ramdisk=0 Neste exemplo, a linha com o comando kernel usada para indicar qual imagem deve ser carregada. As opes que seguem (vga, mem e ramdisk), so parmetros que devem ser passados diretamente ao kernel do sistema a ser carregado, no momento de sua inicializao.

5.5. Usando a Linha de Comandos do GRUB


O GRUB possu inmeros recursos, mas com certeza um dos mais importantes e que merece maior destaque, sua linha de comandos. A maioria dos comandos usados no arquivo de configurao /boot/grub/menu.lst, so vlidos aqui e muitos outros esto disponveis. Uma breve apresentao da linha de comandos ser dada, ficando por conta do leitor se aprofundar o quanto achar necessrio. Quando o GRUB carregado, voc pode se deparar com sua linha de comandos, ou se possuir um arquivo de configurao, um menu de escolha. Mesmo usando os menus de escolha, podemos utilizar todo o poder da linha de comandos do gerenciador de partida, bastando para isso, seguir as instrues que so mostradas no rodap da tela do menu de escolha do GRUB. Caso o GRUB seja carregado usando o menu de escolha, podemos digitar e para editar as entradas que estejam selecionadas no menu ou c para ter acesso a linha de comandos (lembre-se que pressionar <ESC> faz com que voc volte aos menus de escolha). Caso o parmetro password tenha sido especificado no arquivo /boot/grub/menu.lst, ser necessrio antes de acessar as outras opes (que estaro desabilitadas), pressionar p e entrar com a senha vlida para habilitar a execuo de outras opes. Quando o acesso a linha de comandos for obtido, voc pode verificar os comandos disponveis, pressionando duas vezes a tecla <TAB>. Note, que voc tambm pode utilizar esta
PG.: 31

APOSTILA GNU/DEBIAN AVANADO

tecla para completar nomes de comandos, bem como, parmetros de alguns comandos. Alguns comandos disponveis: cat - Este comando permite verificar o contedo de um arquivo qualquer, o qual deve estar gravado em um dispositivo ligado a sua mquina. Embora seja um recurso til, nenhuma permisso de acesso verificada e qualquer pessoa que tenha acesso a linha de comandos do GRUB, poder listar o contedo de arquivos importantes do seu sistema. Para contornar este problema, configure adequadamente o parmetro password no arquivo /boot/grub/menu.lst. No esquea que ainda possvel utilizar um disquete com o GRUB para iniciar a mquina, o que permite usar a linha de comandos pelo disquete. Ex: grub> cat (hd0,0)/etc/passwd cmp - Este comando utilizado para comparar dois arquivos. Ex: grub> cmp (hd0,0)/arquivo1 (hd0,0)/arquivo2 configfile - Carrega um arquivo de configurao do GRUB. Ex: grub> configfile (hd0,0)/boot/grub/menu.lst displayapm - Mostra informaes sobre APM. displaymem - Mostra informaes sobre a memria RAM. find - Permite encontrar um arquivo. A sada deste comando disponibiliza o nome completo do caminho para o arquivo e a partio onde o mesmo est localizado. Ex: grub> find stage1 geometry - Mostra informaes sobre a geometria reconhecida para seu dispositivo de armazenamento principal, e permite que voc defina uma geometria personalizada, caso esta esteja sendo reconhecida de forma errada. help um comando para ver a ajuda sobre a utilizao de outros comandos. Ex: help cmp install - Instala o GRUB, embora no seja recomendado o uso deste comando diretamente, j que possvel cometer erros facilmente e sobrescrever a tabela de parties de seu disco. Ex: install (fd0)/grub/stage1 d (fd0) (fd0)/grub/stage2 p (fd0)/grub/menu.lst setup - Voc pode usar este comando para instalar o GRUB. Note que sua sintaxe menos complexa do que a usada pelo comando install. Ex: grub> root = (hd0,0) grub> setup = (hd0) quit - Abandona a linha de comandos do GRUB. reboot - Reinicia o computador. boot - Efetua o carregamento atravs das opes definidas via linha de comando. Suponha um sistema Linux instalado em (hd0,0), podemos passar os seguintes comandos na linha de comandos para efetuar o boot de uma imagem do GNU/Linux: Ex: grub> root (hd0,0) grub> kernel (hd0,0)/boot/vmlinuz-2.4.16 vga=6 grub> boot Muitos outros comandos esto disponveis tanto na linha de comandos do GRUB quanto no arquivo de configurao /boot/grub/menu.lst. Um estudo mais aprofundado pode ser feito, lendo a documentao oficial do GRUB com o comando man grub.

5.6. Removendo o GRUB do MBR


No existe a necessidade de se remover o GRUB do MBR, pois no h utilizao para o mesmo vazio. Mas caso voc queira fazer isso de qualquer forma, h vrias formas, uma delas usar o utilitrio fdisk do MS DOS, juntamente com o parmetro /mbr (fdisk /mbr), outra forma mais arriscada inclusive, usando o utilitrio dd do GNU/Linux da seguinte forma, supondo que voc esteja utilizando um disco conectado a controladora principal IDE: dd if=/dev/zero of=/dev/hda bs=446 count=1 Ao instalar sistemas como o MS Windows XP, 2000, 2003, entre outros que no Microsoft, o GRUB ser automaticamente substitudo pelos gerenciadores de partida
PG.: 32

APOSTILA GNU/DEBIAN AVANADO

relacionados ao SO em questo. (Os detalhes contidos na seo, foram desenvolvidos por Alexandre Costa alebyte@bol.com.br como contribuio ao guia FOCA GNU/Linux, e tambm, retirados das pginas do manual oficial do GRUB, e editados pela equipe da CELEPAR.)

PG.: 33

APOSTILA GNU/DEBIAN AVANADO

6. Sistema de Boot e Runlevels


Neste tpico, explanaremos sobre o processo de carregamento do SO (Sistema Operacional) e dos nveis de execuo que ele pode assumir.

6.1. Processo de Carregamento do Kernel


Enquanto o ncleo do SO carregado na inicializao do sistema, ele exibe uma srie de informaes sobre os dispositivos de hardware, servios e recursos que esto sendo disponibilizados pelo sistema. Todo este processo, conhecido como processo de boot ou processo de inicializao do sistema. As mensagens que aparecem durante o processo de inicializao, podem ser conferidas posteriormente pelo usurio atravs do comando dmesg. Durante o processo de carregamento do SO, o init, que o processo principal de controle de inicializao, tem a funo de invocar outros processos que esto organizados e divididos sob a forma de nveis, nveis de execuo como propriamente dito. Cada um destes nveis de execuo, possu um conjunto de processos prprio que podem so executados separadamente uns dos outros, em cada um dos nveis existentes. Tradicionalmente, so utilizados 7 nveis de execuo diferentes, enumerados de 0 a 6. Por padro, o nvel 0 utilizado para realizar o desligamento (shutdown) normal da maquina. O nvel 6, usado para invocar o processo de reinicializao (reboot) do sistema . O nvel 1, tambm conhecido como modo monousurio, o modo no qual o Kernel do Linux s carrega os recursos necessrios para o funcionamento bsico do SO e disponibiliza apenas acesso ao superusurio do sistema (root), de modo geral, para que este possa realizar a manuteno de algum ponto falho do sistema. Os runlevels 2 a 5, so utilizados para carga dos diferentes servios providos pelo sistema, e possuem uma caracterstica comum entre si, atuarem no modo multiusurio. O comando init, pode ser usado seguido de um nmero representando um runlevel desejado (de 0 a 6), para alterar o nvel de execuo atual de um sistema Linux. Abaixo um exemplo do uso do comando para alterar o nvel de execuo atual do sistema: #init 3 Voc poder verificar o runlevel atual do sistema, atravs do comando: #ps aux | grep init A sada deste comando ser algo como: root 1 0.0 0.2 844 72 ? S Sep 6 0:16 init [2] user 9121 0.0 0.9 884 296 p3 D 13:25 0:00 grep init Neste exemplo, o nvel de execuo atual do SO o 2, representado pela indicao init [2] presente na primeira linha da sada do comando. Se preferir, voc tambm pode utilizar o comando runlevel, como no exemplo abaixo: #runlevel A sada deste comando ser algo como: N2 O N 2 da sada do comando runlevel, indica que o nvel de execuo atual do sistema o 2, se voc mudar o nvel para outro qualquer, o nvel anterior ser mostrado no lugar do N da sada acima. No Linux existem muitas formas de se fazer a mesma coisa, escolha a que mais lhe agrada ;-) !

6.2. Entendendo o Funcionamento dos Nveis de Execuo do Sistema (Runlevels)


Como j comentamos na seo anterior (Processo de Carregamento do Kernel), o init
PG.: 34

APOSTILA GNU/DEBIAN AVANADO

o responsvel pelo controle do processo de inicializao do sistema. O init utiliza o arquivo / etc/inittab durante sua execuo, para configurar cada runlevel do sistema. tambm neste arquivo que se encontra a configurao do nvel de execuo padro do sistema, que pode ser verificado atravs da linha que contm a designao :initdefault: deste arquivo (/etc/inittab). No GNU/Debian o arquivo /etc/inittab possuir uma linha com a seguinte definio: id:2:initdefault: A linha acima, indica que o nvel de execuo padro do sistema o 2. Podemos alterar este parmetro, para ajustar o nvel padro de execuo de um sistema Linux qualquer. Na distribuio GNU/Debian, os diretrios /etc/rc[0-6].d contm as ligaes simblicas para arquivos em /etc/init.d, que so acionados pelo init no nvel de execuo correspondente. Por exemplo, o arquivo S10sysklogd em /etc/rc2.d, um link simblico para /etc/init.d/sysklogd. Ento, o que aconteceria se voc removesse o arquivo /etc/rc2.d/S10sysklogd ? Simplesmente, o servio sysklogd deixaria de ser executado no nvel de execuo 2 do seu sistema. O GNU/Debian, possu o seguinte padro para definir se uma ligao simblica em /etc/rc[0-6].d iniciar ou interromper a execuo de um servio em /etc/init.d: Se um link iniciado com a letra K (kill), quer dizer que o servio ser interrompido naquele nvel de execuo. O que ele faz na verdade, executar o script do servio em questo em /etc/init.d seguido da opo stop. Se um link iniciado com a letra S (start), quer dizer que o servio ser iniciado naquele nvel de execuo. Isto far com que o script do servio em questo em /etc/init.d seja invocado seguido da opo start. Por ordem, os links com a letra K so executado primeiro seguido pelos que iniciam pela letra S. A ordem com que so executados, depende tambm do valor numrico que acompanha o link, por exemplo, os seguintes arquivos so executados em seqncia: S10sysklogd S12kerneld S20inetd S20linuxlogo S20logoutd S20lprng S89cron S99xdm Note, que os arquivos que iniciam com o mesmo nmero (S20*), so executados por ordem alfabtica. Para inserir ou remover scripts nos runlevels interessante utilizar a ferramenta updaterc.d, que a maneira correta (eu at diria: essa a forma mais elegante) para controlar o uso dos scripts de inicializao: Exemplos de uso: # update-rc.d ssh defaults Insere o servio ssh (/etc/ini.d/ssh) em todos os runlevels para iniciar e parar de foma correta dependendo de cada runlevel. # update-rc.d ssh start 20 2 . Insere o servio ssh (/etc/ini.d/ssh) apenas no runlevel 2 para iniciar. # update-rc.d -f ssh remove Remove o servio ssh (/etc/ini.d/ssh) de todos os runlevels em que est registrado.

PG.: 35

APOSTILA GNU/DEBIAN AVANADO

7. Sistema de Logs
Arquivo de Log, uma designao dada aos arquivos que so utilizados pelos programas do sistema para registrar suas atividades. Este registros, em geral, so compostos por mensagens informativas, de alerta e de erro, geradas pelos programas, durante sua execuo. Estes arquivos possuem informaes muito teis para o administrador do sistema. Atravs deles, possvel verificar o funcionamento do sistema, o comportamento dos programas, prevenir e corrigir erros e auditar o ambiente operacional. No Linux, h uma estrutura central para armazenamento e funcionamento do sistema de logs. Neste SO, os arquivos de log, so guardados comumente no diretrio /var/log, e um servio especial denominado syslog, que pode fazer de forma unificada, todo o registro de atividades do sistema (kernel e outros programas).

7.1. Principais Arquivos de Log


Dentro do diretrio /var/log podemos encontrar uma variedade de arquivos de log. Dentre eles, alguns merecem destaque: Nome do Arquivo Descrio messages um arquivo de log geral do sistema. Guarda desde algumas mensagens do kernel at registros enviados pelos programas do usurio. Usado principalmente para registrar atividades do kernel e de alguns servios do sistema. o mais importante arquivo de log de um ambiente Linux, juntamente com /var/log/messages. Usado para guardar informaes sobre a autenticao de usurios no sistema. um arquivo binrio, que guarda a contabilidade de tempo de acesso ao sistema por parte dos usurios. Para verificar o contedo deste arquivo, necessrio o uso do comando last. Guarda informaes relacionadas ao servidor X. Mensagens do Kernel no momento de inicializao do sistema. Pode ser lido, atravs do comando de nome homnimo. Possu informaes com maior nvel de detalhes do que em /var/log/syslog e /var/log/messages. Interessante para verificao de problemas no sistema.

syslog

auth.log wtmp

Xorg.[nmero].log dmesg debug

7.2. Formato dos Arquivos de Log


Um arquivo de log, normalmente composto pelos seguintes campos: Data|Hora|Maquina|daemon|mensagem O campo maquina o nome do computador que registrou a mensagem (a maquina pode atuar como um servidor de logs registrando mensagens de diversos computadores em sua rede). O campo daemon, indica qual programa gravou a mensagem. O uso dos utilitrios da console, pode ajudar muito na pesquisa e monitorao de logs do sistema. Por exemplo, para obter todas as mensagens do kernel da estao de trabalho wrk1, eliminando os campos "wrk1" e "kernel", poderamos utilizar o seguinte conjunto de comandos: cat -A /var/log/*|grep 'wrk1'|grep 'kernel'|awk '{print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12}' Os parmetros iniciados por "$" do comando awk, indicam que campos sero listados, (omitimos $4 e $5 que so respectivamente "wrk1" e "kernel"). Outro utilitrio bastante usado
PG.: 36

APOSTILA GNU/DEBIAN AVANADO

para monitorao de logs o logcheck, veremos mais detalhes sobre ele nas prximas sees.

7.3. Daemons de Log do Sistema


Os principais daemons (servios) de log do sistema, registram as mensagens de sada (atividades) do kernel (klogd) e sistema (syslogd) nos arquivos que so armazenados em /var/log. A classificao de qual arquivo em /var/log receber um determinado tipo de mensagem, controlada pelo arquivo de configurao /etc/syslog.conf, atravs de parmetros de configurao denominados facilidades e nveis. Para maiores detalhes sobre estes conceitos, consulte a seo Configurando o syslog.conf deste documento.

7.3.1. O daemon syslogd


Este daemon controla o registro de logs do sistema. syslogd [opes] opes -f Especifica um arquivo de configurao alternativo ao /etc/syslog.conf. -h Permite redirecionar mensagens recebidas a outros servidores de logs especificados. -l [computadores] Especifica um ou mais computadores (separados por ":") que devero ser registrados somente com o nome de mquina ao invs do FQDN (nome completo, incluindo domnio). -m [minutos] Intervalo em minutos que o syslog mostrar a mensagem --MARK--. O valor padro padro 20 minutos, 0 desativa. -n Evita que o processo caia automaticamente em background. Necessrio principalmente se o syslogd for controlado pelo init. -p [soquete] Especifica um soquete UNIX alternativo ao invs de usar o padro /dev/log. Permite o recebimento de mensagens atravs da rede atravs da porta UDP 514. Esta opo til para criar um servidor de logs centralizado na rede. Por padro, o servidor syslog rejeitar conexes externas. -s [domnios] Especifica a lista de domnios (separados por ":") que devero ser retirados antes de enviados ao log. -a [soquetes] Especifica soquetes adicionais que sero monitorados. Esta opo ser necessria se estiver usando um ambiente chroot. possvel usar at 19 soquetes adicionais. -r

PG.: 37

APOSTILA GNU/DEBIAN AVANADO

-d Ativa o modo de depurao do syslog. O syslog permanecer operando em primeiro plano e mostrar as mensagens no terminal atual. Na distribuio GNU/Debian, o daemon syslogd iniciado atravs do script /etc/init.d/sysklogd.

7.3.2. O daemon klogd


Este daemon controla o registro de mensagens do kernel. Ele atua monitorando as mensagens enviadas pelo kernel e as desvia para o daemon de monitoramento syslogd, por padro. klogd [opes] opes -d Ativa o modo de depurao do daemon. -f [arquivo] Envia as mensagens do kernel para o arquivo especificado ao invs de enviar ao daemon do syslog (syslogd). -i Envia um sinal para o daemon recarregar os smbolos de mdulos do kernel. Envia um sinal para o daemon recarregar os smbolos estticos e de mdulos do kernel. -n Evita a operao em background (segundo plano). til se iniciado pelo init. -I

-k [arquivo] Especifica o arquivo que contm os smbolos do kernel. Exemplos deste arquivo esto localizados em /boot/System.map-xx.xx.xx. O registro dos smbolos em um arquivo de log ao invs dos nmero que so informados pelo kernel por padro, tornam a depurao de um problema mais simples, j que os smbolo so mais descritivos do que os nmeros. Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers do kernel, e aps esta operao, o daemon encerrado. Ativa o modo parania. Isto far com que o klogd somente carregue detalhes sobre os mdulos, quando os caracteres Oops forem detectados nas mensagens do kernel. recomendvel ter sempre a ltima verso do klogd e evitar a utilizao desta opo em ambientes crticos. -s o kernel. -x Esconde traduo EIP, assim ele no l o arquivo /boot/System.map-xx-xx-xx. Fora a utilizao da interface de chamadas do sistema para comunicao com -p -o

PG.: 38

APOSTILA GNU/DEBIAN AVANADO

7.3.3. Configurando o syslog.conf


O arquivo de configurao /etc/syslog.conf, define os arquivos que iro armazenar os registros de log feitos pelo sistema, no seguinte formato: facilidade.nvel destino Os sinalizadores facilidade e nvel so definidos separados por um ".", e possuem parmetros que definem o que ser registrado nos arquivos de log do sistema. O sinalizador facilidade, usado para especificar que tipo de programa est enviando a mensagem. Os seguintes nveis so permitidos (em ordem alfabtica): auth - Mensagens de segurana/autorizao ( recomendvel usar authpriv ao invs deste). authpriv - Mensagens de segurana/autorizao (privativas). cron - Daemons de agendamento (cron e at). daemon - Outros daemons do sistema que no possuem facilidades especficas. ftp - Daemon de FTP do sistema. kern - Mensagens do kernel. lpr - Sub-sistema de impresso. local0 a local7 - Reservados para uso local. mail - Sub-sistema de e-mail. news - Sub-sistema de notcias da USENET. security - Sinnimo para a facilidade auth (evite us-la). syslog - Mensagens internas geradas pelo syslogd. user - Mensagens genricas de nvel do usurio. uucp - Sub-sistema de UUCP. O caractere * (asterisco) - Confere com todas as facilidades. Mais de uma facilidade pode ser especificada na mesma linha do syslog.conf separando-as com o caractere ",". O sinalizador nvel, especfica a importncia da mensagem. Os seguintes nveis so permitidos (em ordem de importncia invertida; da mais para a menos importante): emerg - O sistema est inutilizvel. alert - Uma ao deve ser tomada imediatamente para resolver o problema. crit - Condies crticas. err - Condies de erro. warning - Condies de alerta. notice - Condio normal, mas significante. info - Mensagens informativas. debug - Mensagens de depurao. none - Nenhuma prioridade. O caractere * (asterisco) - Confere com todos os nveis.

Alm destes nveis, os seguintes sinnimos esto disponveis: error - Sinnimo para o nvel err. panic - Sinnimo para o nvel emerg. warn - Sinnimo para o nvel warning.

O sinalizador destino, define o destino das mensagens, pode ser um arquivo, um pipe (se iniciado por um "|"), um computador remoto (se iniciado por uma "@"), ou para determinados usurios do sistema (especificando os logins separados por vrgula) ou para todos os usurios que esto usando o SO via o comando wall (usando o caractere "*"). Conjuntos de sinalizadores de facilidades e nveis podem ser agrupadas separando-as por pelo caractere ";". Observaes: Sempre utilize a tecla <TAB> ao invs da barra de espaos para separar os parmetros do arquivo /etc/syslog.conf. Alguns sinalizadores de facilidades como o security, emitem um alerta
PG.: 39

APOSTILA GNU/DEBIAN AVANADO

sonoro no sistema e enviam uma mensagem para a console, como forma de alerta ao administrador e usurios que esto utilizando o sistema. Existem ainda 4 caracteres que garantem funes especiais: "*", "=", "!" e "-". A seguir uma breve descrio da funo que cada um deles desempenha: O caractere * - Todas as mensagens da facilidade especificada sero redirecionadas. O caractere = - Somente o nvel especificado ser registrado. O caractere ! - Todos os nveis especificados e de maior importncia NO sero registrados. O caractere - - Pode ser usado para desativar a sincronizao de escrita imediata do arquivo de log. Tem a vantagem de obter maior desempenho, porm, como a gravao no sncrona, caso o sistema seja desligado abruptamente, voc perder a informao das atividades que ainda no foram salvas no arquivo. Os caracteres especiais "=" e "!" podem ser combinados em uma mesma regra. Veja abaixo um exemplo de um arquivo /etc/syslog.conf padro de um sistema GNU/Debian: # # Primeiro alguns arquivos de log padres. Registrados por facilidade: # auth,authpriv.* *.*;auth,authpriv.none cron.* daemon.* kern.* lpr.* mail.* user.* uucp.* /var/log/auth.log -/var/log/syslog /var/log/cron.log -/var/log/daemon.log -/var/log/kern.log -/var/log/lpr.log /var/log/mail.log -/var/log/user.log -/var/log/uucp.log

# # Registro de logs do sistema de mensagens. Divididos para facilitar # a criao de scripts para manipular estes arquivos. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # Registro para o sistema de news INN # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice # # Alguns arquivos de registro "pega-tudo". # So usadas "," para especificar mais de uma prioridade (por # exemplo, "auth,authpriv.none") e ";" para especificar mais de uma # facilidade.nvel que ser gravada naquele arquivo. # Isto permite deixar as regras consideravelmente menores e mais legveis # *.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug
PG.: 40

APOSTILA GNU/DEBIAN AVANADO

*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none

-/var/log/messages

# # Emergncias so enviadas para qualquer um que estiver logado no sistema. # Isto feito atravs da especificao do "*" como destino das mensagens e so # enviadas atravs do comando wall. # *.emerg * # # interessante ter as mensagens mostradas no console, # mas somente em consoles que no so utilizadas. Caso voc queira esta # funcionalidade, descomente as 4 linhas abaixo: #daemon,mail.*;\ # news.=crit;news.=err;news.=notice;\ # *.=debug;*.=info;\ # *.=notice;*.=warn /dev/tty8 # O pipe /dev/xconsole usado pelo utilitrio "xconsole". Para us-lo, # voc deve executar o "xconsole" com a opo "-file": # # $ xconsole -file /dev/xconsole [...] # # NOTA: Ajuste as regras abaixo, ou ficar maluco se tiver um um site # muito acessado. # daemon.*;mail.*;\ news.crit;news.err;news.notice;\ *.=debug;*.=info;\ *.=notice;*.=warn /dev/xconsole # A linha baixo envia mensagens importantes para a console em que # estamos trabalhando (principalmente para quem gosta de ter # controle total sobre o que est acontecendo com seu sistema). *.err;kern.debug;auth.notice;mail.crit /dev/console

7.4. Ferramentas para Arquivos de Log


Nesta seo, descreveremos algumas ferramentas teis para o monitoramento, gerenciamento e utilizao dos arquivos de arquivos de log.

7.4.1. logger
Este comando permite enviar uma mensagem para os arquivos de log do sistema. A mensagem enviada aos arquivos, atravs do daemon syslogd, ou via soquete do sistema, possvel especificar dados como prioridade, nvel, nome de identificao do processo, etc. Seu uso muito til em scripts ou em outros eventos do sistema. logger [opes] [mensagem] Onde: mensagem
PG.: 41

APOSTILA GNU/DEBIAN AVANADO

a mensagem que ser enviada ao daemon syslogd para ser gravada num dos respectivos arquivos de log presentes no sistema. opes -i Registra o PID (nmero identificador) do processo. -s Envia a mensagem para a sada padro (STDOUT) e para o servio syslogd.

-f [arquivo] Envia o contedo do arquivo especificado como mensagem ao syslogd. -t [nome] Especifica o nome do processo responsvel pelo log que ser exibido antes do PID na mensagem do syslogd. -p [prioridade] Especifica a prioridade da mensagem. Deve-se utilizar a notao facilidade.nvel. Verifique os tipos de prioridade/nveis existentes no Linux no arquivo de configurao /etc/syslog.conf. O valor padro que utilizado caso este parmetro no seja especificado user.notice. -u [soquete] Envia a mensagem para o soquete especificado ao invs do syslogd. til para enviar mensagens atravs da rede para um servidor de log. Exemplo: logger -i -t GGA Teste teste teste logger -i -s -f /tmp/mensagem -p user.info

7.4.2. logcheck
um programa usado para enviar um e-mail periodicamente ao administrador do sistema (atravs do cron ou outro servio com a mesma funo) alertando sobre os eventos que ocorreram desde a ltima execuo do programa. As mensagens do logcheck, so tratadas por arquivos em /etc/logcheck e organizadas em categorias, antes de serem enviadas por e-mail, isto garante muita praticidade na interpretao dos eventos ocorridos no sistema. necessrio um servio SMTP configurado (exim, sendmail, etc) para que o e-mail elaborado por esta ferramenta possa ser enviado ao administrador. As categorias so organizadas por ordem de importncia (da mais para menos importante), e vo desde avisos sobre atividades ilcitas sendo executadas no sistema (providncias devem ser tomadas imediatamente para resolver a situao) at eventos anormais do sistema (mensagens de inicializao, mensagens dos daemons do sistema, etc.). O tipo de mensagem que ser includa/ignorada nos logs enviados pela ferramenta, podem ser ajustadas pelo administrador do sistema atravs dos arquivos/diretrios presentes em /etc/logcheck. Nomes de arquivos/diretrios contendo a palavra "ignore" so usados para armazenar expresses regulares que NO sero enviadas pelo logcheck. permitido o uso de expresses regulares perl/sed para especificar as mensagens nos arquivos de log. Para maiores detalhes sobre esta ferramenta, consulte o manual do comando: man logcheck

7.4.3. logrotate
Usado para fazer a rotao dos arquivos de log do sistema. A rotao de log
PG.: 42

APOSTILA GNU/DEBIAN AVANADO

processo que consiste em guardar o arquivo de log que est sendo utilizado atualmente pelo sistema e fazer com que os daemons passem a utilizar um novo arquivo para armazenar os novos registros das atividades do sistema. Este processo tambm conhecido como arquivamento de log. As tarefas do logrotate so programadas via cron ou outro servio de agendamento disponvel no sistema. Opcionalmente, os arquivos de log antigos podero ser compactados para diminuir a utilizao de espao em disco ou enviados por e-mail. A rotao dos arquivos de log proporciona maior agilidade quando precisamos encontrar algum detalhe til, o que seria mais difcil e demorado usando um arquivo de log muito extenso. A rotao de log, feita de acordo com o tamanho mximo que um determinado arquivo de log pode atingir, mas a opo -f da ferramenta pode ser usada para "forar" uma rotao no sistema de log. O arquivo principal de configurao do logrotate o /etc/logrotate.conf. Abaixo um modelo de configurao deste arquivo: #### As configuraes abaixo, afetam globalmente o funcionamento do logrotate: # Faz a rotao do arquivos de log semanalmente weekly # Mantm as ltimas 4 cpias de logs anteriores rotate 4 # Erros de no existncia dos logs so enviados por e-mail ao usurio root mail root # Cria novos arquivos de log (vazios) aps rotacionar os antigos create # O parmetro compress utilizado para fazer a compresso dos arquivos # antigos. O parmetro delaycompress usado para que o primeiro log # seja mantido compress delaycompress # Executam os scripts em prerotate e postrotate a cada vez que os logs # forem arquivados nosharedscripts # Definimos um diretrio que poder conter definies individuais de rotao # de log para cada servio do sistema. Contudo, alertamos que diversas # configuraes individuais podem deixar a interpretao deste arquivo confusa include /etc/logrotate.d # Define opes especficas para a rotao mensal de /var/log/wtmp. As opes # definidas individualmente como neste exemplo, sobrepem as opes globais # definidas anteriormente. # As definies para /var/log/wtmp, implicam que caso o arquivo atinja 5MB # (size 5M) ele ser arquivado, ser criado um novo arquivo com permisso # 0664 e pertencer ao usurio root e o grupo utmp (create 0664 root utmp) # e ser mantida somente uma cpia do log anterior (rotate 1). /var/log/wtmp { monthly create 0664 root utmp size 5M rotate 1
PG.: 43

APOSTILA GNU/DEBIAN AVANADO

} # Define opes especficas para a rotao mensal de /var/log/btmp. # Neste caso, o parmetro missingok far com que sejam gerados alertas # informando ao administrador que o arquivo no existe. /var/log/btmp { missingok monthly create 0664 root utmp rotate 1 } # Define opes especficas para a rotao semanal de /var/log/lastlog. /var/log/lastlog { missingok weekly create 0664 root utmp rotate 1 } # Define opes especficas para a rotao diria de /var/log/messages. # Neste caso, o ser arquivo ao atingir o tamanho de 1Mb (size 1M), ento o # novo arquivo ser criado com as mesmas permisses do arquivo anterior. # O comando killall -1 syslogd ser executado aps a rotao (postrotate) # para que o daemon syslogd funcione corretamente, mas somente uma vez # durante a rotao de vrios arquivos de logs (sharedscripts). # Sero mantidas as 10 ltimas cpias (rotate 10) do arquivo /var/log/messages # compactadas (o parmetro compress foi especificado globalmente neste # arquivo de configurao). /var/log/messages { daily size 1M sharedscripts postrotate /sbin/killall -1 syslogd endscript rotate 10 } # Define opes especficas para a rotao mensal dos arquivos em # /var/log/mirror/*. A falta desses arquivos no precisa ser notificada # ao administrador (missingok), mesmo assim o parmetro "nomail" evitar # isto de qualquer forma. Os logs rotacionados no sero compactados # (nocompress) e sero mantidas as ltimas 7 cpias (rotate 7) dos arquivos. /var/log/mirror/* { montly nomail missingok nocompress rotate 7 } # Fim do arquivo de configurao Qualquer definio de parmetro especificado nos arquivos individuais de configurao, substituir as definies anteriores. Quando o nmero mximo de arquivos de log mantidos pela opo rotate atingida, os arquivos eliminados sero enviados para o usurio especificado na opo mail. A utilizao da diretiva nomail evita isso. Quando for utilizar coringas para se referir a determinados arquivos dentro de um diretrio, no utilize a sintaxe "log-xxx-*", porque isto foraria a compresso de arquivos
PG.: 44

APOSTILA GNU/DEBIAN AVANADO

".gz" j comprimidos, gerando arquivos do tipo .gz.gz... e derrubando o processamento da sua mquina gerada por um loop de compactao e enchendo as entradas de diretrio. Ao invs disso, utilize a sintaxe log-xxx-*.log, ou outra, modificando a configurao do programa que gera os logs. Observao: importante enviar um sinal HUP ao programa que grava um determinado arquivo de log critico para que no ocorram problemas aps a rotao, isto pode ser feito usando o parmetro postrotate.

PG.: 45

APOSTILA GNU/DEBIAN AVANADO

8. Comandos Avanados
Pretendemos abordar neste tpico, a utilizao de alguns comandos do ambiente GNU/Linux que so de grande importncia no dia-a-dia do administrador de sistemas. Tome o cuidado necessrio com relao a execuo destes comandos em ambientes de produo.

8.1. Comandos de Uso Geral


8.1.1. cron
O cron na realidade no um simples comando e sim um servio do sistema. O cron um servio de agendamento, que permite que as atividades cadastradas em suas tabelas, sejam executadas numa data e hora pr-determinadas. As tarefas so definidas no arquivo /etc/crontab e por arquivos individuais de usurios em /var/spool/cron/crontabs/[usurio] (criados atravs do programa crontab). Adicionalmente, a distribuio Debian utiliza os arquivos no diretrio /etc/cron.d como uma extenso para o /etc/crontab. Para agendar uma nova tarefa, basta editar o arquivo /etc/crontab com qualquer editor de texto (como o pico ou vi) e definir o ms/dia/hora que a tarefa ser executada. No necessrio reiniciar o daemon do cron, porque ele verifica seus arquivos a cada minuto. O arquivo /etc/crontab tem o seguinte formato: 52 18 1 * * root run-parts --report /etc/cron.montly | | | | | | | | | | | | | \_Comando que ser executado | | | | | | | | | | | \_ UID que executar o comando | | | | | | | | | \_ Dia da semana (0-7) | | | | | | | \_ Ms (1-12) | | | | | \_ Dia do Ms (1-31) | | | \_ Hora | \_ Minuto Onde: Minuto Valor entre 0 e 59. Hora Valor entre 0 e 23. Dia do Ms Valor entre 1 e 31. Ms Valor entre 1 e 12 (identificando os meses de Janeiro a Dezembro). Dia da Semana Valor entre 0 e 7 (identificando os dias de Domingo a Sbado). Note que tanto 0 quanto o 7 equivalem ao Domingo.
PG.: 46

APOSTILA GNU/DEBIAN AVANADO

usurio O usurio especificado ser usado para executar o comando (o usurio dever existir). comando Comando que ser executado. Podem ser usados parmetros normais usados na linha de comando. Os campos do arquivo, so separados por um ou mais espaos ou tabulaes. Um caractere * (asterisco), pode ser usado nos campos de data e hora para especificar todo o intervalo disponvel. O caractere - (hfen), serve para especificar perodos de execuo (incluindo o nmero inicial/final). O caractere , (vrgula), serve para especificar uma listagem de nmeros. Passos podem ser especificados atravs do caractere / (barra). Veja os exemplos no final desta seo. O arquivo gerado em /var/spool/cron/crontabs/[usurio] pelo comando crontab, tem o mesmo formato do /etc/crontab exceto por no possuir o campo usurio (UID), pois o nome do arquivo j identifica o usurio no sistema. Para editar um arquivo de usurio em /var/spool/cron/crontabs ao invs de editar o arquivo /etc/crontab use o comando crontab -e, para listar as tarefas daquele usurio use crontab -l e para apagar o arquivo de tarefas do usurio crontab -r (adicionalmente, voc pode remover somente uma tarefa atravs do crontab -e, apagando a linha correspondente). Observao: No esquea de incluir uma linha em branco no final do arquivo, caso contrrio o ltimo comando no ser executado. O cron define o valor de algumas variveis automaticamente durante sua execuo; a varivel SHELL definida como /bin/sh, PATH como /usr/bin:/bin, LOGNAME, MAILTO e HOME so definidas atravs do arquivo /etc/passwd. Os valores padres destas variveis, podem ser substitudos especificando um novo valor nos arquivos do cron. Exemplos de um arquivo /etc/crontab: SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin 00 10 * * * root sync # Executa o comando sync, como usurio root, todo dia as 10:00 hs. 00 06 * * 1 root updatedb # Executa o comando updatedb, como usurio root, toda segunda-feira as 06:00. 10,20,40 * * * * marcius banner # Executa o comando banner, como usurio marcius, todos os dias e a toda a hora em 10, 20 e 40 minutos. */10 * * * * root fetchmail # Executa o comando fetchmail, como root, de 10 em 10 minutos todos os dias. 15 0 25 12 * root echo "Feliz Natal ;-)"|mail john # Envia um e-mail as 0:15 todo o dia 25/12 para john, utilizando o usurio root desejando feliz natal ;-0.
PG.: 47

APOSTILA GNU/DEBIAN AVANADO

30 5 * * 1-6 root tar -czf /backup/backup.tar.gz /home # Executa o comando tar -czf /backup/backup.tar.gz /home automaticamente as 5:30 de segunda-feira a sbado, usando para isto o usurio root.

8.1.2. dd
O comando dd utilizado para copiar blocos de dados de um dispositivo de armazenamento. Com o dd, todos os dados so copiados a nvel de bloco, no interessando o tipo do sistema de arquivos utilizado no dispositivo. um utilitrio muito til para criar cpias fiis (imagens) a partir de um dispositivo de armazenamento para outro ou para arquivos. Exemplos de uso: dd if=/dev/zero of=/var/arquivo_paginacao bs=1M count=256

Onde: O parmetro if seguido pelo argumento /dev/zero, informa a origem dos dados, neste caso, o dispositivo gerador de bits com valor 0 (zero) do sistema. O parmetro of seguido pelo argumento /var/arquivo_paginacao, informa o destino dos dados copiados, aqui, o arquivo arquivo_paginacao, que receber todos os bits com valor 0 (zero) gerados pela origem (parmetro if). O parmetro bs que permite definir o tamanho do bloco a ser copiado. Neste exemplo, o bloco tem 1 Megabyte (1024 Kb) de tamanho. necessrio ateno na definio deste parmetro, para maiores detalhes consulte a documentao do dd (man dd). O parmetro count informa o nmero de blocos que sero copiados. No exemplo acima, sero copiados 256 blocos de 1 Megabyte cada, criando um arquivo de 256 Megabytes de tamanho total e com todos os bits de dados contendo o valor 0 (zero). Vamos a um outro exemplo: dd if=/dev/hdb of=/dev/hdc bs=1G count=4

Onde: O parmetro if, define a origem dos dados a serem copiados, neste caso, a partir do dispositivo /dev/hdb. Por sua vez o parmetro of, define o destino dos dados, /dev/hdc, outro dispositivo de armazenamento. Sero copiados blocos de dados com 1 Gigabyte de tamanho, definido atravs do parmetro bs. O nmero de blocos a serem copiados, 4 no exemplo acima, foi definido atravs do parmetro count.

8.1.3. 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 posteriormente poder ser usado pelo comando patch, para alterar um arquivo que no contm as diferenas. Isto til para grandes arquivos de texto, j que possvel copiar somente as modificaes (geradas atravs do diff, que so muito pequenas) e aplicar no arquivo para atualiz-lo (atravs do patch) evitando um grande trabalho manual. Este um sistema de atualizao muito usado na atualizao dos cdigos fonte do kernel do GNU/Linux. diff [diretrio1/arquivo1] [diretrio2/arquivo2] [opes] Onde: diretrio1/arquivo1 diretrio2/arquivo2 Arquivos e/ou diretrios que sero comparados. opes -lines [num]
PG.: 48

APOSTILA GNU/DEBIAN AVANADO

Gera a diferena em um certo nmero de linhas de contexto definido pelo argumento num. Por padro o diff gera um arquivo com 2 linhas que o mnimo necessrio para o correto funcionamento do comando patch. -a Compara os dois arquivos como arquivos texto. -b -B Ignora linhas em branco inseridas ou apagadas nos arquivos. -i -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. Informa somente se os arquivos possuem diferenas entre si, no mostra as diferenas entre eles. -r Compara diretrios e sub-diretrios existentes recursivamente. -q Ignora diferenas entre maisculas e minsculas nos arquivos. Ignora espaos em branco como diferenas.

-S [arquivo] Inicia a comparao de diretrios pelo arquivo definido em [nome]. -t Aumenta a tabulao das diferenas encontradas.

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 -Bt texto.txt texto1.txt Compara o arquivo texto.txt com texto1.txt, ignorando linhas em branco e aumentando o espao de tabulao na apresentao das diferenas encontradas. diff texto.txt texto1.txt > texto.diff Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamado texto.diff contendo a diferena entre eles. Este arquivo poder ser usado pelo comando 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
PG.: 49

APOSTILA GNU/DEBIAN AVANADO

Compara recursivamente os diretrios e sub-diretrios de linux-2.2.13 e linux-2.2.14 e grava as diferenas entre eles no arquivo patch-2.2.14.diff.

8.1.4. dpkg
O dpkg um programa de computador que a base do Sistema de Gerenciamento de Pacotes da distribuio GNU/Debian. Foi criado por Ian Jackson em 1993. O dpkg, similar ao RPM, que utilizada em outras distribuies como o Red Hat, usado para construir, instalar, testar, remover e fornecer informaes sobre os pacotes Debian. O dpkg composto por uma srie de ferramentas, que desempenham funes especificas em relao aos pacote Debian. A nossa inteno aqui, no explicar as opes que cada uma delas possu, e sim, apenas fornecer uma breve descrio do que cada uma delas faz. As ferramentas so: dpkg-source - Empacota e desempacota os arquivos fontes de um pacote Debian. dpkg-deb - Empacota e desempacota pacotes binrios. dpkg-reconfigure - Permite que o usurio execute ajustes nos pacotes j instalados no sistema, tambm conhecido como reconfigurador de pacotes. uma das ferramentas mais utilizadas do conjunto de aplicaes do dpkg. Vamos nos concentrar agora, no utilitrio dpkg em si. Vamos explorar melhor sua sintaxe de uso e suas principais aes e opes. Na linha abaixo, mostrado a sintaxe padro de uso deste utilitrio: dpkg [aes] [opes] [pacotes] Onde: pacotes Juntamente com algumas opes do dpkg, necessrio informar o nome de um (ou mais) pacote para que a ao definida por aquela opo possa ser desempenhada. Por exemplo, no uso da opo -i que faz a instalao de um pacote, preciso informar qual o pacote que dever ser instalado. aes: -i pacote Instala um pacote no sistema. --unpack pacote Desempacota um pacote, extraindo-o do formato .deb e montando uma estrutura de diretrios e arquivos de acordo com o esqueleto que foi usado na sua construo. --configure pacote Realiza a reconfigurao de um pacote que j est instalado no sistema. A reconfigurao consiste no ato de desempacotar os arquivos do pacote original, fazer a cpia de segurana dos arquivos de configurao do pacote instalado atualmente e executar o script postinst provido pelo pacote original. Tem o mesmo efeito que o comando dpkg-reconfigure. -r pacote Desinstala um pacote do sistema. Dependendo da configurao dos scripts de remoo do pacote, arquivos de dados e configurao podero permanecer no sistema. --update-avail Atualiza a lista que contm a descrio dos pacotes disponveis no sistema (mostrada com o comando dpkg -s pacote). A lista armazenada no arquivo /var/lib/dpkg/available. -A pacote Atualiza a lista que contm a descrio dos pacotes disponveis no sistema,
PG.: 50

APOSTILA GNU/DEBIAN AVANADO

adicionando a informaes sobre o pacote informado atravs do argumento homnimo. --clear-avail Limpa o arquivo que contm a lista com a descrio dos pacotes instalados no sistema. Evite usar esta ao. -C Procura por pacotes que foram instalados somente parcialmente em seu sistema. Muito interessante para resoluo de problemas. --get-selections padro Procura na lista de pacotes instalados no sistema pela expresso fornecida atravs do argumento padro. --print-architecture Imprime a arquitetura padro utilizada pelos pacotes instalados no sistema. -P pacote Faz a remoo completa de uma pacote do sistema, incluindo arquivos de dados, de configurao, etc. Use esta opo com cautela. -l [pacotes] Lista todos os pacotes instalados no sistema com suas respectivas informaes. uma opo das mais utilizadas pelos administradores. Opcionalmente, voc poder especificar o nome de um ou mais pacotes (separados por espaos) para verificar suas informaes. -s pacote Exibe as informaes sobre um determinado pacote. Estas informaes so retiradas do arquivo /var/lib/dpkg/available. -S padro Pesquisa pelos arquivos que um determinado pacote possu no sistema, de acordo com a expresso fornecida pelo argumento padro. -L pacote Permite visualizar todos arquivos relacionados ao pacote especificado. -b diretrio [nome] Permite construir um pacote Debian, por meio de um diretrio que esteja organizado sob a forma padro do Debian para construo de pacotes, e opcionalmente, especificar um nome para o pacote gerado. -c pacote Lista o contedo de um pacote. -I pacote Exibe informaes sobre um determinado pacote. -X pacote diretrio Extra e exibe o contedo de um pacote especificado atravs do argumento homnimo, para dentro do diretrio fornecido pelo usurio. opes: As opes do comando dpkg tanto podem ser especificadas atravs da linha de comandos, como atravs do arquivo de configurao do dpkg, o /etc/dpkg/dpkg.cfg. --abort-after=nmero Ajusta o nmero de erros que podero ocorrer antes da execuo do dpkg ser
PG.: 51

APOSTILA GNU/DEBIAN AVANADO

encerrada. -B Quando um pacote desinstalado do sistema, pode ocorrer que outros pacotes ainda instalados dependam do que foi removido. Esta opo faz com que estes pacotes tambm sejam removidos do sistema automaticamente. --ignore-depends=pacote Faz com que as dependencias para a instalao de um pacote sejam ignoradas. Atualmente, o dpkg emite alertas sobre as dependencias de instalao no resolvidas de um pacote. Esta opo faz com esses alertas sejam sumariamente ignorados e a instalao do pacote prossiga. Evite utilizar esta opo, ela gera problemas de pacotes quebrados no sistema, ou seja, pacotes que no tem todas suas dependncias resolvidas. --no-act Faz uma simulao de acordo com as aes envolvidas. Por exemplo, voc pode simular a instalao ou remoo de um pacote para verificar se algum erro ser gerado pelo sistema de gerenciamento de pacotes. Tenha certeza que voc especificou esta opo antes da citao de qualquer ao na linha de comando, caso contrrio, esta opo no ter efeito e a ao ser desempenhada de fato. -R Faz com que o dpkg opere no modo recursivo. -G Informa ao dpkg para no instalar um pacote caso uma verso mais recente do pacote em questo j esteja instalada no sistema. -E No realiza a instalao de um pacote cuja a mesma verso j se encontra instalada no sistema. --log=arquivo Permite especificar um arquivo onde o dpkg vai realizar os registros das suas operaes. Por padro isto feito em /var/log/dpkg.log. Exemplos: dpkg -i tuxracer-1.20.deb Instala o pacote tuxracer. dpkg -r tuxracer Remove o pacote tuxracer do sistema. dpkg -P mysql-server-4.1-5 Remove completamente o pacote mysql-server do sistema, inclusive seus arquivos de dados e de configurao. dpkg -l Lista todos os pacotes instalados no sistema.

8.1.5. export
Exibe, configura e remove uma varivel de ambiente. Variveis de ambiente so diferentes das variveis de shell, que podem ser configuradas/removidas com os comandos set e unset respectivamente. Variveis de ambiente, so utilizadas para guardar dados volteis relacionados a sesso do usurio no sistema. Por exemplo, a varivel USERNAME possu o nome do usurio que iniciou a sesso, j a varivel EDITOR, guarda o caminho e o nome para o
PG.: 52

APOSTILA GNU/DEBIAN AVANADO

editor de textos padro do shell. Variveis de ambiente tambm podem ser definidas atravs do arquivo de configurao /etc/environment. export [opes] [varivel=valor] Onde: varivel=valor Nome da varivel de ambiente que se deseja configurar e seu respectivo valor. Caso a varivel no exista, ela ser criada e receber o valor discriminado aps o sinal de igualdade, caso j exista, somente receber o valor definido aps o sinal de igual. opes: -f [varivel/funo] Caso a opo -f seja informada, significa que o usurio est informando uma funo shell e no uma varivel. -n [varivel/funo] Remove uma varivel/funo de ambiente. Exemplos: export Exibe as variveis de ambiente do usurio. export teste=Linux Cria a varivel de ambiente teste caso ela no exista, e ajusta seu valor para Linux. export -n teste Remove a varivel de ambiente teste.

8.1.6. find
O comando find pode ser utilizado no s para procurar arquivos e diretrios, mas tambm, para executar outros comandos em conjunto com o resultado da pesquisa realizada. Veja o exemplo abaixo: find . -name "*.txt" -type f -exec wc -l {} \;

Onde: O caractere . o diretrio atual em que o usurio se encontra. O parmetro -name seguido do argumento *.txt, informa ao comando find para procurar por qualquer arquivo/diretrio que contenha qualquer nome (uso do caractere coringa *) seguido pela expresso .txt. O parmetro -type f, faz com que o comando find procure somente por arquivos. O parmetro -exec seguido pelo argumento wc -l { } \;, informa ao comando find que ele dever executar o que foi fornecido como argumento (o comando wc -l, neste caso) para cada resultado da busca realizada (os caracteres { }). Os caracteres \; no final do argumento, sinalizam o trmino do comando.

8.1.7. fsck
O utilitrio de sistema fsck (de "File System Check" ou "File System Consistency Check"), uma ferramenta usada para checar a consistncia de um sistema de arquivos no no GNU/Linux. Em geral, o fsck executado na inicializao do sistema, quando detectado que um sistema de arquivos est num estado inconsistente, indicando um desligamento anormal, como um travamento ou desligamento de energia. Tipicamente, o fsck disponibiliza opes para reparar sistemas de arquivos danificados: interativamente (o usurio tem que decidir como consertar problemas especficos), permitir ao fsck resolver
PG.: 53

APOSTILA GNU/DEBIAN AVANADO

problemas especficos (assim o usurio no precisa responder nenhuma questo), ou rever os problemas que precisam ser resolvidos num sistema de arquivos sem realmente resolv-los. O utilitrio tambm pode ser executado manualmente pelo administrador do sistema se este acreditar que h um problema com um determinado sistema de arquivos. Para esta atividade, sempre muito importante desmontar o sistema de arquivos em questo, antes de iniciar o procedimento de checagem. O fsck possu extenses para cada tipo especfico de sistema de arquivos suportados pelo SO. Assim, o executvel fsck.reiserfs apropriado para checagens do sistema de arquivos ReiserFS, j o fsck.ext3, adequado ao EXT3, e assim por diante. Alguns sistemas de arquivos como o XFS por exemplo, possuem extenses do fsck virtuais (no realizam a checagem de fato), devido as suas particularidades tcnicas (o XFS por exemplo, faz isso durante a montagem do sistema de arquivos, caso seja necessrio). importante que o administrador do sistema, procure a extenso correta para o sistema de arquivos ao qual deseja verificar ou os utilitrios adequados para desempenhar essa funo em cada um deles. fsck[.extenso] [opes] [sistema arquivos] Onde: extenso a extenso adequada ao sistema de arquivos que ser checado. Normalmente, as extenses possuem o mesmo nome que o sistema de arquivos em questo. sistema de arquivos o sistema de arquivos que dever ser checado. Por exemplo, /dev/hda2, /dev/sda5, etc. Mais de um sistema de arquivos pode ser informado com este argumento, separados por espaos. opes: Explicaremos aqui alguns opes gerais do fsck, j que cada extenso poder conter opes de modo peculiar. -s Permite visualizar a checagem de vrios sistemas de arquivos por vez no modo interativo. -t tipo Permite especificar o tipo do sistema de arquivos a ser checado, por exemplo, ext3 para o sistema de arquivos EXT3. -A Tenta realizar a checagem de todos os sistemas de arquivos que esto marcados para verificao no arquivo /etc/fstab. Para maiores detalhes sobre o arquivo /etc/fstab, consulte a seo com o nome do arquivo no captulo Arquivos de configurao. -C Exibe o progresso da checagem. -N No executada, apenas mostra o que seria feito. -P Quando a opo -A especificada, faz a checagem do sistema de arquivos raiz (/) em paralelo com outros sistemas de arquivos. Este tipo de checagem no muito seguro de ser praticado, evite-o. -R Quando se est checando todos os sistemas de arquivos com a opo -A, esta opo faz com que a checagem do sistema de arquivos raiz (/) seja evitada.
PG.: 54

APOSTILA GNU/DEBIAN AVANADO

-T No exibe o ttulo do programa durante o inicio da checagem. -V Exibe mais detalhes sobre as atividades que esto sendo realizadas pelo fsck. Exemplos: fsck.reiserfs /dev/hda2 Realiza a checagem do sistema de arquivos /dev/hda2, utilizando a extenso para o tipo de sistema de arquivos ReiserFS. fsck -t ext3 -C /dev/sda4 Realiza a checagem do sistema de arquivos /dev/sda4, utilizando a extenso para o tipo de sistema de arquivos EXT3 e exibindo o progresso da verificao.

8.1.8. last
Mostra uma listagem de entrada e sada de usurios no sistema. So mostrados os seguintes campos na listagem: Nome do usurio; Terminal onde ocorreu a conexo/desconexo; O nome da maquina (caso a conexo tenha ocorrido remotamente) ou console (caso tenha ocorrido localmente); A data em que o usurio entrou e saiu do sistema (login/logout), a hora (login/down) e caso ainda esteja utilizando o sistema, a mensagem Still logged in; O Tempo no formato Horas:Minutos em que esteve conectado ao sistema. A listagem mostrada em ordem inversa, ou seja, da data mais atual para a mais antiga. A listagem feita pelo comando last obtida do arquivo de log /var/log/wtmp. last [opes] opes -n [num] Mostra [num] linhas. Caso no seja usada, todas as linhas so mostradas. -R -a Mostra o hostname (nome da maquina) na ltima coluna. Ser muito til se combinada com a opo -d. -d Usa o DNS para resolver o IP de sistemas remotos para nomes DNS. Mostra as entradas de desligamento do sistema e alteraes do nvel de execuo do sistema. O comando last, pode ser seguido de um argumento que ser pesquisado como uma expresso regular durante a listagem, contudo, este argumento deve s ser vlido se representar um nome de usurio, uma console ou se for a palavra reboot. Exemplos: last Mostra a listagem geral de acessos ao sistema. last -a
PG.: 55

No mostra o campo HostName (nome da maquina).

-x

APOSTILA GNU/DEBIAN AVANADO

Mostra a listagem geral incluindo o nome da mquina. last marcius Mostra somente atividades do usurio marcius. last reboot Mostra os registros das reinicializaes do sistema. last tty1 Mostra todas as atividades no console tty1.

8.1.9. lastlog
Mostra qual foi a ltima vez que os usurios cadastrados no sistema fizeram login (entraram no sistema). mostrado o nome usado no login, o terminal onde ocorreu a conexo e a hora da ltima conexo. Estes dados so obtidos atravs da pesquisa e formatao do arquivo /var/log/lastlog. Caso o usurio nunca tenha feito login no sistema consultado, mostrada a mensagem ** Never logged in **. Este utilitrio muito importante para vigiarmos os acessos dos usurios ao sistema, mas para essa atividade ser efetiva, temos que observar que os registros de log presentes em /var/log/laslog podem no estar completos devido as atividades de arquivamento do logrotate, e isso, deve ser levado em considerao quando os registros de acessos forem consultados. lastlog [opes] opes -t [dias] Mostra somente os usurios que se conectaram ao sistema nos ltimos dias. Utilize o argumento dias para definir a quantidade de dias antes da data atual que devero ser exibidos. -u [usurio] Mostra somente detalhes de acesso com relao ao usurio definido pelo argumento usurio. Exemplos: lastlog Exibe a listagem completa de acessos ao sistema por usurio. lastlog -t 3 Exibe a lista de acesso dos ltimos 3 dias. lastlog -u marcius Exibe os registros de acesso do usurio marcius.

8.1.10. lsof
O utilitrio lsof lista os arquivos, diretrios, pipes, bibliotecas, entre outros recursos do sistema, que esto sendo utilizados por um determinado processo. um comando muito interessante de se utilizar, quando somos impedidos de desmontar um determinado volume no sistema, pois permite averiguar qual processo est utilizando o recurso em questo. lsof [opes] [nome] Onde: nome Define o nome do arquivo, diretrio, pipe, biblioteca, etc, que se deseja verificar se est sendo ou no utilizado por um determinado processo.
PG.: 56

APOSTILA GNU/DEBIAN AVANADO

opes: +D [diretrio] Faz com que lsof procure por todas as instncias do diretrio especificado no argumento homnimo que esto sendo utilizadas pelos processos do sistema. -N Utilizado para verificar recursos (arquivos, diretrios, etc) que esto sendo utilizados em uma estrutura de rede baseada em NFS. -p [PID] Permite especificar o PID de um determinado processo para listar todos os recursos (arquivos, diretrios, etc) utilizados por ele. -u [usurio/UID, ...] Verificar os recursos (arquivos, diretrios, etc) em uso por usurios. Pode-se especificar mltiplos usurios pelo nome de login no sistema ou UID, separados por vrgula. preciso ser administrador do sistema para verificar os recursos de outros usurios. -U Permite verificar todos os soquetes Unix que esto em uso no momento. -T[sinalizadores] Esta opo verifica o status das conexes TCP/IP, assim como o comando netstat. O parmetro -T possu alguns sinalizadores que permitem filtrar os resultados do comando lsof, para mais detalhes consulte a documentao com o comando man. -S [segundos] Permite especificar o tempo limite em segundos para funes (lstat, readlink e stat) do kernel. O menor valor que pode ser especificado 2, o padro 15, caso no seja definido um valor, o padro utilizado. Muito cuidado com este parmetro, pois ele afeta o comportamento de funes importantes do sistema. Exemplos: lsof /var Lista todos os recursos (arquivos, diretrios, pipes, etc) que esto em uso no diretrio /var. lsof +D /var/log Lista todos os processos e os respectivos recursos (arquivos, diretrios, pipes, etc) que esto sendo utilizados no diretrio /var/log. lsof -p 2042 Lista todos os recursos (arquivos, diretrios, pipes, etc) utilizados pelo processo com PID 2042. lsof -u marcius,ze Lista todos os recursos (arquivos, diretrios, pipes, etc) utilizados pelos usurios marcius e ze no sistema.

8.1.11. lspci
Permite verificar informaes detalhadas sobre o barramento PCI e AGP e os dispositivos que esto plugados nestes barramentos. Na maioria das vezes, este utilitrio consegue reconhecer e exibir o nome correto do controlador de cada dispositivo conectado ao barramento PCI/AGP do computador, em alguns casos contudo, os dispositivos podem ser mostrados como Unknow Device denotando o desconhecimento dispositivo. Para tentar contornar este tipo de situao, voc pode usar o script updatePG.: 57

APOSTILA GNU/DEBIAN AVANADO

pciids, que far o download de um novo arquivo de definies para ser utilizado pelo utilitrio lspci. Em casos onde o acesso a Internet feito via servio de Proxy, necessrio ajustar a varivel de ambiente http_proxy com o uso do comando export para que update-pciids funcione corretamente. lspci [opes] opes: -v Exibe informaes detalhadas sobre cada componente presente no barramento PCI do computador. -vv Exibe informaes ainda mais detalhadas do que se usado o parmetro -v. -vvv Exibe todas as informaes disponveis a respeito do hardware conectado ao barramento PCI da maquina. -n Exibe o cdigo do fabricante e do dispositivo ao invs dos respectivos nomes. -nn Exibe o cdigo do fabricante e do dispositivo, alm dos respectivos nomes. -b Exibe a informao sobre o hardware e os respectivos nmeros de IRQ utilizados por cada um dos componentes. Interessante para descobrir conflitos. Exibe informao no formato de arvore. Interessante utilizar em conjunto com o parmetro -v. -d [cd. fabricante]:[cd. dispositivo] Exibe somente informaes dos dispositivos de um determinado fabricante (argumento cd. fabricante), ou ainda de forma mais restritiva, de um determinado dispositivo de um determinado fabricante (definindo os argumentos cd. fabricante e cd. dispositivo). Exemplos: lspci Exibe informaes sobre os barramentos PCI/AGP e os dispositivos que esto conectados a estes barramentos. lspci -v Exibe mais detalhes sobre os barramentos PCI/AGP e os dispositivos conectados a eles. lspci -n Exibe o cdigo do fabricante e dos dispositivos conectados aos barramentos PCI/AGP do computador. lspci -d 10ec:8139 Exibe informaes a respeito do dispositivo com cdigo 8139 do fabricante com cdigo 10ec. -t

8.1.12. lsusb
Permite listar os dispositivos USB conectados ao computador. til para exibir informao sobre os dispositivos removveis do sistema.
PG.: 58

APOSTILA GNU/DEBIAN AVANADO

lsusb [opes] opes: -v Exibe informaes detalhadas dos dispositivos USB conectados ao sistema. -s [barramento]:[dispositivo] Permite visualizar informao especifica sobre o dispositivo conectado a um determinado barramento USB do computador ou sobre todos os dispositivos plugados a um determinado barramento (especificando somente o argumento barramento). -D [dispositivo] Faz com que, ao invs do comando lsusb verificar o diretrio /proc/bus/usb para obter informaes sobre os dispositivos USB conectados ao computador, ele exiba informaes especificas de acordo com o argumento dispositivo fornecido pelo usurio. O argumento dispositivo deve ser definido como, por exemplo, /proc/bus/usb/001/001. Exemplos: lsusb Exibe informaes a respeito de todos os dispositivos USB conectados ao sistema. lsusb -v Exibe informao detalhada, sobre todos os dispositivos conectados aos barramentos USB disponveis na maquina. lsusb -s 002:001 Mostra informaes sobre o primeiro dispositivo USB (argumento 001) conectado ao segundo barramento (argumento 002) USB da maquina. lsusb -D /proc/bus/usb/001/002 Mostra informaes especificas sobre o segundo dispositivo conectado ao primeiro barramento USB da maquina.

8.1.13. mount
O mount um utilitrio usado para disponibilizar, algo tambm conhecido como montar, um determinado sistema de arquivos. Algumas vezes, temos a necessidade de alterar as opes da montagem de um sistema de arquivos que j se encontra disponvel (montado) no sistema, sendo esta uma operao muito til para manuteno do sistema de arquivos, nessas ocasies, a execuo do comando com a opo remount pode ser necessria. Veja o exemplo abaixo: mount -t ext3 /dev/hda2 /boot -o remount,ro

Onde: O parmetro -t seguido do argumento ext3, informa o tipo do sistema de arquivos a ser disponibilizado, neste caso o ext3. O argumento /dev/hda2 o sistema de arquivos que se deseja montar. O argumento /boot o ponto de montagem deste sistema de arquivos. O parmetro -o permite que as opes de montagem sejam informadas, neste caso, os argumentos remount,ro que fazem com que o sistema de arquivos seja remontado (remount) em modo somente leitura (ro).

8.1.14. nice
Configura a prioridade da execuo de um programa. Para reajustar a prioridade de um programa j em execuo, utilize o comando renice, para maiores detalhes, consulte as informaes sobre o renice na seqencia desta seo. nice [opes] [comando]
PG.: 59

APOSTILA GNU/DEBIAN AVANADO

Onde: comando Comando/programa que ter sua prioridade ajustada. opes: -n [numero] Configura a prioridade que o programa ser executado. Se um programa for executado com maior prioridade, ele usar mais recursos do sistema para seu processamento, caso tenha uma prioridade baixa, ele permitir que outros programas tenham preferncia no uso dos recursos. A prioridade de execuo de um programa pode ser ajustada de -20 (a mais alta) at 19 (a mais baixa). Por padro, os programas so executados com prioridade igual a 10. Para ajustar prioridades altas, abaixo de 0 (zero), necessrio ter poderes de administrador do sistema (usurio root). Exemplos: nice -n -19 find / -name apropos Configura a prioridade de execuo do comando find para -19 (muito alta). nice -n -1 top Configura a prioridade de execuo do comando top para -1 (alta).

8.1.15. renice
Este utilitrio altera a prioridade de um ou mais programas em execuo. necessrio ter poderes de administrador do sistema (usurio root) para conceder prioridade mais alta do que a atual a um determinado processo. O comando renice, necessita do PID (Process Identification Number) do processo que se deseja alterar a prioridade. Voc tambm pode informar o UID (User Identification Number) do usurio ao renice, dessa forma, voc poder reajustar a prioridade de todos os programas daquele usurio. renice [prioridade] [opes] Onde: prioridade o nmero que define a nova prioridade do processo, pode variar de -20 (prioridade mais alta) 19 (prioridade mais baixa). opes -g Permite especificar um ou mais grupos, para alterar a prioridade de todos os processos, que estejam sendo executados sob a permisso destes grupos. -u Permite especificar um ou mais usurios, para alterar a prioridade de todos os processos, que estejam sendo executados sob a permisso destes usurios. -p Permite especificar um ou mais PID para que a prioridade dos processos com estes nmeros de identificao sejam alterados. Exemplos: renice 0 1335 Altera a prioridade do processo com PID 1335 para 0 (zero). renice -5 987 -u root marcius -p 900 800 Faz com que os processos com PID 987, 900 e 800 e todos os processos dos usurios root e marcius tenham sua prioridade alterada para -5.
PG.: 60

APOSTILA GNU/DEBIAN AVANADO

renice -1 -g cppc Altera a prioridade de todos os processos que estejam sendo executados sob permisso do grupo cppc para -1.

8.1.16. nohup
Executa um comando ignorando os sinais de interrupo. O comando poder ser executado at mesmo em segundo plano, caso o usurio que tenha iniciado a execuo do comando tenha sado do sistema. nohup [comando] As mensagens de sada do comando nohup so direcionadas para o arquivo ~/nohup.out. Exemplos: nohup find / -uid 0 >/tmp/rootfiles.txt & nohup updatedb &

8.1.17. pidof
Retorna o PID do processo especificado. pidof [opes] [nome] Onde: nome Nome do processo que se deseja obter o nmero PID. opes -s Retorna somente o primeiro PID encontrado. -x Retorna o PID do shell que est executando o script.

-o [PID] Omite um determinado PID da listagem de sada do comando. Exemplos: pidof nmbd Retorna o PID do processo chamado nmbd. pidof smbd nmbd sshd bash -o 2355 Retorna uma lista de PID com exceo do PID 2355.

8.1.18. pstree
Mostra a estrutura de processos em execuo no sistema em forma de rvore. pstree [opes] [pid] Onde: pid Nmero do processo que ter sua rvore listada. Se omitido, lista todos os processos. opes
PG.: 61

APOSTILA GNU/DEBIAN AVANADO

-a Mostra opes passadas na linha de comando. -c Mostra toda a estrutura (inclusive sub-processos do processo pai).

-G Usa caracteres grficos no desenho da rvore de processos. -h Destaca o processo atual e seus antecessores.

-H [PID] Destaca o processo especificado. -l -n Classifica pelo nmero PID ao invs do nome. -p -u Mostra tambm o dono do processo. -U Usa o conjunto de caracteres Unicode para o desenho da rvore. Mostra o nmero PID entre parnteses aps o nome do processo. No faz quebra de linha.

Exemplos: pstree Mostra a arvore de processos. pstree -Ap Mostra a arvore de processos identada por caracteres ASCII e juntamente com cada processo o nmero de seu PID.

8.1.19. shred
um utilitrio para ocultao de contedo. Com ele possvel sobrescrever o contedo de um arquivo de modo que sua recuperao seja extremamente complexa e na maioria das vezes impossvel. Opcionalmente, tambm possvel excluir o arquivo. Quando se trata de dados confidenciais, necessrio tomar as devidas precaues no momento de apagar uma informao, e em muitos casos, os administradores recorrem a scripts que envolvem o dispositivo gerador de bits aleatrios /dev/random, o que torna a operao mais trabalhosa. Nestes casos, o uso do comando shred pode ser bastante prtico e muito til. shred [opes] arquivo Onde: arquivo o arquivo alvo da operao de shred. opes: -f o modo fora bruta. Muda inclusive a permisso do arquivo, se necessrio, para permitir a escrita de dados no arquivo.
PG.: 62

APOSTILA GNU/DEBIAN AVANADO

-n nmero Escreve aleatoriamente o arquivo o nmero de vezes definido pelo argumento nmero. O padro 25 vezes. -s tamanho Permite especificar o tamanho que o arquivo dever ter aps sobrescrito. O tamanho pode ser definido usando os sinalizadores K para kilobytes, M megabytes e G gigabytes. -u Sobrescreve a informao contida no arquivo e o remove aps o trmino dessa operao. -x No arredonda o tamanho do arquivo at o prximo bloco de dados cheio. Est uma ao padro para arquivos no-regulares. -z Aps sobrescrever o arquivo, preenche o mesmo com bits de valor zero para evitar a deteco do uso do comando shred. Exemplos: shred teste.txt Sobrescreve os dados contidos no arquivo teste.txt. shred -s 1M teste.txt Sobrescreve os dados contidos no arquivo teste.txt, sendo que ao final da operao o arquivo ter 1 megabyte de tamanho. shred -u -z teste.txt Sobrescreve, ajusta todos os bits do arquivo teste.txt com valor zero e depois o apaga.

8.1.20. stat
Mostra informaes detalhadas sobre um inode (arquivo do ponto de vista do SO). As informaes exibidas pelo utilitrio so: nmero do dispositivo, numero inode, direitos de acesso, nmeros de links absolutos, ID's de usurio e grupo, tipo de dispositivo para o inode, tamanho total em bytes, nmero de blocos alocados, tamanho do bloco, data e hora do ltimo acesso, ltima modificao e alterao e o contexto de segurana. stat [opes] arquivos Onde: arquivos So os arquivos aos quais desejamos obter as informaes. opes: -c formato Exibe a sada conforme especificado no argumento formato. -f Exibe informaes sobre o sistema de arquivos onde o arquivo est localizado e no sobre o arquivo em si. -L Esta informao serve para obter informaes de um arquivo que referenciado por um link simblico. Voc deve utilizar esta opo, apontando para um link simblico em vez de um arquivo comum.
PG.: 63

APOSTILA GNU/DEBIAN AVANADO

-t

Imprime a sada na forma concisa. til para analise por outros programas.

Exemplos: stat teste.txt Exibe informaes detalhadas sobre o inode do arquivo teste.txt. stat -L meulinksimbolico Exibe informao sobre meulinksimbolico. o arquivo referenciado pelo link simblico

stat -f teste.txt Mostra informaes a respeito do sistema de arquivo sob o qual o arquivo teste.txt armazenado.

8.1.21. sync
Fora a gravao dos dados que esto no cache de disco (em memria) fisicamente nos dispositivos de armazenamento. O cache um mecanismo de acelerao que permite que os dados sejam armazenados temporariamente na memria ao invs de serem imediatamente gravados no dispositivo de armazenamento, quando o sistema estiver ocioso, realizada a persistncia dos dados no dispositivo de armazenamento. O GNU/Linux procura utilizar toda memria RAM disponvel para o cache de programas acelerando seu desempenho de leitura/gravao. O sync bastante til quando temos que desligar o sistema emergencialmente e no podemos executar o desligamento no modo normal (com o comando halt ou shutdown), a execuo do sync nestes casos, evita a perda de dados. sync

8.1.22. tar
Muitas pessoas imaginam que o tar seja um poderoso compactador, isto no verdade. Na realidade, este utilitrio um arquivador, ou seja, possu a capacidade de reunir vrios arquivos/diretrios num mesmo arquivo, sendo a compactao deste arquivo uma opo para o usurio. O tar pode atuar juntamente com os compactadores: gzip (.gz), bzip2 (.bz2) e compress (.Z). Este um comando extremamente til na gerao de cpias de segurana. 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. arquivos-origem Especifica quais arquivos/diretrios sero compactados. Opes: -c, --create Cria um novo arquivo .tar. -t, --list Lista o contedo de um arquivo .tar.

PG.: 64

APOSTILA GNU/DEBIAN AVANADO

-u, --update Atualiza arquivos compactados no arquivo .tar. -f, --file [arquivo] Usa o argumento [arquivo] especificado para gerao do arquivo .tar. -j, --bzip2 Usa o programa bzip2 para processar os arquivos do tar. -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 uma nica mdia como um disquete, por exemplo, seja dividida em mais de uma mdia. -o Grava o arquivo no formato VT7 ao invs do ANSI. -O, --to-stdout Descompacta arquivos para a sada padro (monitor) ao invs de gravar em um arquivo. --remove-files Apaga os arquivos de origem aps serem processados pelo tar. -R, --record-number Mostra o nmero de registros dentro de um arquivo tar em cada mensagem. --totals Mostra o total de bytes gravados com a opo --create. -v Mostra os nomes dos arquivos enquanto so processados. -V [nome] Define o nome do volume em que arquivo tar ser guardado. til para utilizao com fitas de backup. -W, --verify Tenta verificar o arquivo gerado pelo tar aps grav-lo. -x Extra arquivos gerados pelo tar. -X [arquivo] Tenta apagar o arquivo informado como argumento em [arquivo], dentro de um arquivo compactado .tar. -Z -z Usa o programa gzip durante o processamento dos arquivos. --use-compress-program [programa]
PG.: 65

Usa o programa compress durante o processamento dos arquivos.

APOSTILA GNU/DEBIAN AVANADO

Usa o programa de compresso definido no argumento [programa] durante o processamento dos arquivos. A extenso precisa ser especificada no arquivo de destino para sua correta identificao:

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; Caso seja usada a opo -Z para a compactao, a extenso dever ser .tar.Z ou .tgZ.

importante saber qual o tipo de compactador usado durante a gerao do arquivo tar, pois ser necessrio especificar a opo apropriada para descompact-lo. Uma dica importante a de usar o comando file no arquivo tar para descobrir com que utilitrio ele foi compactado. Exemplos: tar -cf index.txt.tar index.txt Cria um arquivo chamado index.txt.tar que armazenar o arquivo index.txt. Voc pode notar usando o comando ls -lh, que o arquivo foi somente arquivado sem compactao, isto til para juntar diversos arquivos em um s. tar -xf index.txt.tar Extra o arquivo index.txt do arquivo tar index.txt.tar. tar -czf index.txt.tar.gz index.txt O mesmo que o exemplo de arquivamento anterior, s que agora usado compactao a opo -z (compactao atravs do programa gzip). Voc agora pode notar digitando ls -lh que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz. tar -cvf /dev/st0 /home Faz o arquivamento dos diretrios que se encontram em /home (diretrios pessoais dos usurios) no dispositivo de fita /dev/st0 (drive de fita SCSI). tar -xzf index.txt.tar.gz Descompacta e extra o arquivo index.txt a partir do arquivo index.txt.tar.gz. tar -t index.txt.tar Lista o contedo de um arquivo .tar. tar -tz index.txt.tar.gz Lista o contedo de um arquivo .tar.gz.

8.1.23. watch
Executa um comando de forma repetida, por padro a cada 2 segundos, e exibe a sada do comando em tela cheia. O watch tambm permite monitorar a diferena entre os resultados obtidos com os comandos executados, algo realmente til para avaliao de resultados. watch [opes] comando Onde: comando o comando que se deseja utilizar e que o watch ir executar repetidamente. interessante especificar o comando utilizando aspas, como por exemplo, ls -lh /tmp.
PG.: 66

APOSTILA GNU/DEBIAN AVANADO

opes: -d, --differences[=cumulative] Reala as diferenas encontradas na sada do comando executado. Se o parmetro cumulative for especificado, o watch ir mostrar de forma realada tudo o que foi alterado desde a primeira execuo do comando. -n segundos Define o intervalo de tempo em segundos, atravs do argumento homnimo, em que o watch dever executar o comando especificado pelo usurio. -t No exibir o cabealho do comando watch. Exemplos: watch -n 5 cat teste.txt Executa o comando cat teste.txt a cada 5 segundos e exibe a sada na tela. watch -t -n 3 differences=cumulative cat -n teste.txt Executa o comando cat -n teste.txt a cada 3 segundos, no exibindo o cabealho do watch e marcando as alteraes sofridas pelo arquivo desde a primeira execuo do comando.

8.1.24. which
Lista o caminho completo do comando que est sendo executado. Utilizado principalmente por scripts shell. Para realizar a busca pelo comando a ser executado, o which usar a varivel de ambiente PATH. which [opes] comando Onde: comando o comando que desejamos saber qual o caminho completo para o executvel. Deve ser informado sem o uso de qualquer parmetro. opes: -a Exibe todos os caminhos em que o comando especificado foi encontrado e no s o primeiro (a partir de onde ele prioritariamente executado). Exemplos: which -a ls Imprime na tela, todos os caminhos encontrados para o executvel ls.

PG.: 67

APOSTILA GNU/DEBIAN AVANADO

8.2. Comandos de Rede


8.2.1. arp
Todos pacotes IP que circulam numa rede, devem conter o endereo IP e o MAC (Media Access Control) do remetente e do destinatrio. Para se obter o endereo MAC do computador de destino, o protocolo ARP (Address Resolution Protocol) envia um broadcast com o IP do destinatrio para a rede, requisitando o endereo MAC do mesmo. Para racionalizar o uso do recurso de broadcast na rede, o SO mantm uma tabela, chamada tabela de cache ARP, que contm os endereos IP e os respectivos MAC das maquinas com as quais o computador local se comunica com maior freqncia. O comando arp, permite exibir, adicionar e remover entradas da tabela de cache ARP do sistema. As entradas de uma tabela ARP podem ser marcadas pelos seguintes sinalizadores: C (completo) que representa um registro comum, M (permanente) que representa um registro esttico e P (publicao) que representa um proxy ARP. Estes sinalizadores, podem ser conferidos atravs da coluna chamada Flags, durante a visualizao da tabela cache ARP. arp [opes] [nome/IP] [MAC] Onde: endereo/IP o endereo IP ou o nome da maquina que desejamos adicionar a tabela de cache ARP do sistema. MAC o endereo fsico (MAC) correspondente a maquina que desejamos adicionar a tabela cache ARP do sistema. opes: -a [nome/IP] Exibe as entradas da tabela em relao ao endereo IP / nome da maquina fornecido como argumento. Caso no seja fornecido nenhum argumento, exibe todas as entradas da tabela. -d nome/IP [pub] Remove o registro de uma maquina da tabela. Voc deve informar o nome da maquina ou endereo IP correspondente ao registro que deseja excluir da tabela. Informe o parmetro pub, caso queira excluir uma entrada de um proxy ARP. -D Permite especificar uma interface de rede associada a um determinado endereo fsico (MAC). Esta opo pode ser utilizada em conjunto com o parmetro -s para criao de uma entrada de proxy ARP. -f arquivo L as entradas a partir de um arquivo fornecido como argumento e as adiciona a tabela. -H tipo Permite especificar o tipo de protocolo a ser utilizado na camada de rede. Exemplos de protocolos que podem ser utilizados como argumento so: ether para redes ethernet (este o padro), ax25 protocolo de rede via rdio, arcnet, pronet e netrom. -i interface Se voc estiver exibindo dados da tabela, esta opo far com que os dados a serem mostrados sejam filtrados, imprimindo na tela somente as entradas correlatas a
PG.: 68

APOSTILA GNU/DEBIAN AVANADO

interface informada atravs do argumento fornecido. No caso de adicionar uma entrada a tabela, esta opo far com que aquela interface, seja associada ao endereo que est sendo configurado (como na opo -D). -n Exibe os endereos IP, em vez dos nomes, de cada entrada da tabela de cache

ARP.

-s endereo/IP MAC [pub] Adiciona uma entrada permanente na tabela cache ARP para a maquina a qual foi fornecido o argumento endereo/IP. O parmetro pub pode ser utilizado para criar uma entrada de proxy ARP. Exemplos: arp Exibe o contedo completo da tabela cache ARP. arp -a 10.15.15.15 Exibe a entrada correspondente ao endereo 10.15.15.15. Caso no haja nenhuma entrada na tabela que corresponda ao endereo fornecido, um erro ser reportado ao usurio. arp -n Mostra as entradas da tabela cache ARP usando endereos IP em vez de nomes no formato DNS. arp -s 10.15.15.15 00:01:a0:5f:55:ab -i eth0 Cria uma entrada permanente na tabela cache ARP, para a maquina com endereo 10.15.15.15, associando esta maquina ao endereo fsico 00:01:a0:5f:55:ab e a interface de rede eth0.

8.2.2. dig
usado para realizar pesquisas em servidores DNS. mais flexvel e exibe informaes mais detalhadas que o obsoleto nslookup. muito utilizado para descobrir problemas relacionados a estrutura de resoluo de nomes DNS numa rede. O comando dig, utiliza todos servidores DNS cadastrados no arquivo /etc/resolv.conf para realizar as pesquisas efetuadas pelo usurio. dig [servidor] [opes] [alvo] Onde: servidor o nome ou endereo IP do servidor DNS que deve ser consultado para realizar a pesquisa pelo domnio que se deseja pesquisar. alvo o domnio ou endereo IP que se deseja pesquisar (ex.: www.debian.org). opes: -b endereo Especifica o IP da maquina de origem sob o qual a pesquisa deve ser realizada. til para maquinas com mltiplos endereos IP. -f arquivo Faz com o dig opere no modo batch. Dessa forma, possvel especificar um arquivo (pelo argumento arquivo) que contenha as pesquisas que devem ser feitas pelo comando dig. O arquivo deve ser organizado da mesma forma como uma pesquisa dig feita atravs da linha de comandos.
PG.: 69

APOSTILA GNU/DEBIAN AVANADO

-p porta Especifica uma porta para acesso ao servidor DNS para realizar a consulta. Por padro, a porta 53 utilizada. -x endereo Realiza a pesquisa reversa, ou seja, permite que o usurio especifique um endereo TCP/IP para que este seja resolvido, um nome correspondente para aquele endereo ser retornado como resultado. Exemplos: dig 10.15.61.248 -p 53 www.debian.org Pesquisa quais so os servidores que respondem pelo domnio www.debian.org, atravs do servidor DNS 10.15.61.248 usando a porta 53. dig -x 10.15.61.248 Faz a pesquisa reversa para o endereo 10.15.61.248.

8.2.3. ifconfig
O utilitrio ifconfig, utilizado para configurar e exibir informaes sobre as interfaces de rede do computador. Diferentemente do mii-tool (veja este comando mais adiante), ele permite verificar e ajustar os protocolos de rede que o sistema ir utilizar para se comunicar em rede. Durante o processo de boot da maquina, ifconfig invocado para configurar as interfaces de rede do computador de acordo com as configuraes gravadas no arquivo /etc/network/interfaces. ifconfig [-v] [-a] [-s] [interface] [opes] Onde: interface a interface de rede que desejamos consultar ou modificar. interface de rede so a eth0, etho:0, eth1, etc.

Exemplos de

opes: -a Disponibiliza informao sobre todas as interfaces atualmente disponveis. -s Exibe uma tabela resumida sobre envio/recebimento de dados nas interfaces, funciona analogamente ao comando netstat -i (veja mais detalhes sobre este comando mais adiante). -v Mostra informaes mais detalhadas, principalmente em algumas situaes de erro especificas. up um sinalizador que faz com que a interface alvo seja ativada, ou seja, faz com que ela fique disponvel para que o sistema possa utiliz-la. down Assim como up um sinalizador, porm, tem funo inversa a deste, sendo down, responsvel pela desativao de uma interface de rede. [-]arp Ativa ou desativa (usando o sinal de -) o uso do protocolo ARP na interface. [-]promisc Ativa ou desativa (usando o sinal de -) o modo de transmisso de pacotes de rede promscuo.
PG.: 70

APOSTILA GNU/DEBIAN AVANADO

[-]allmulti Ativa ou desativa (usando o sinal de -) o modo de transmisso de pacotes de rede multicast. metric nmero Este parmetro ajusta a mtrica de rede, definida pelo argumento nmero, para a interface alvo. mtu nmero Este parmetro ajusta a Unidade Mxima de Transferncia (MTU) da interface. netmask endereo Ajusta o endereo da mascara da sub-rede, definido pelo argumento endereo, do protocolo TCP/IP. irq endereo Ajusta o endereo de IRQ do dispositivo em questo. Opo utilizada para placas de rede antigas que no suportam mudana dinmica de IRQ. io_addr endereo Configura o endereo de IO do dispositivo. mem_start endereo Configura uma rea de memria compartilhada para ser usada pelo dispositivo. [-]broadcast [endereo] Permite ajustar o endereo de broadcast da interface ou ativar e desativar (usando o sinal de -) o sinalizador IFF_BROADCAST. multicast Configura a interface para o uso do modo de transmisso de pacotes de rede multicast. address endereo Configura o endereo TCP/IP da interface, atravs do argumento endereo. Exemplos: ifconfig Exibe informaes de todas as interfaces de rede ativas do computador. ifconfig -v eth0 Exibe informaes sobre a interface eth0. ifconfig eth0 192.168.1.1 netmask 255.255.255.0 Configura e ativa a interface de rede eth0, com endereo de rede 192.168.1.1 e mascara de sub-rede 255.255.255.0.

8.2.4. ifup e ifdown


O comando ifup usado para ativar interfaces de rede. Ao contrrio, ifdown utilizado para desativ-las. A ativao de uma determinada interface de rede, feita com base no arquivo de configurao /etc/network/interfaces. ifup/ifdown [opes] [interface] Onde: interface o dispositivo de rede que desejamos ativar, por exemplo, eth0.
PG.: 71

APOSTILA GNU/DEBIAN AVANADO

opes: -a Ativa/desativa todas as interfaces de rede definidas com a clusula auto no arquivo /etc/network/interfaces. --force Fora a ativao/desativao da interface de acordo com as opes definidas pelo usurio. -i arquivo Permite que a configurao de ativao/desativao das interfaces sejam feitas com base num arquivo diferente de /etc/network/interfaces. Utilize o argumento arquivo para definir qual ser o arquivo de configurao alternativo a ser usado. Exemplos: ifup -a Ativa todas as interfaces de rede da maquina, que contm a clusula auto em sua configurao no arquivo /etc/network/interfaces. ifdown -i arquivo_configuracao.conf Desativa as interfaces de rede de acordo com as configuraes do arquivo alternativo arquivo_configuracao.conf. ifup eth0 Ativa a interface de rede eth0. ifdown eth1 Desativa a interface de rede eth1.

8.2.5. mii-tool
O mii-tool uma ferramenta muito verstil, que possibilita ao administrador do sistema obter vrias informaes a respeito das interfaces de rede que o computador possu, bem como, modificar o estado da conexo fsica de rede (link) de cada uma delas. necessrio ter privilgios de administrador do sistema para poder usar esta ferramenta. mii-tool [opes] [interface] Onde: interface a interface de rede que desejamos consultar ou modificar. interface de rede so a eth0, eth1, etc. opes: -v Exibe informaes com maior nvel de detalhamento. -R Reconfigura a interface com as opes padro para aquele dispositivo. -r Reinicia a negociao pela taxa de transferncia de dados da interface. -w Monitora mudana de status em um link numa determinada interface. -l Utilizado em conjunto com -w, grava as mudanas de status do link de uma
PG.: 72

Exemplos de

APOSTILA GNU/DEBIAN AVANADO

interface no arquivo de log do sistema /var/log/syslog. -F Desabilita o modo de auto-negociao e possibilita que o administrador defina a velocidade de transferncia de dados da interface. Os modos a serem definidos manualmente podem ser: 1000baseTx-FD, 1000baseTx-HD, 100baseTx-FD, 100baseTxHD, 10baseT-FD, ou 10baseT-HD. Exemplos: mii-tool -v eth0 Exibe informaes detalhadas sobre a interface de rede eth0. mii-tool -w eth0 Monitora a mudana da taxa de transferncia de dados na interface de rede eth0. mii-tool eth0 -F 100baseTx-FD Define a velocidade de transferncia de dados da interface de rede eth0 para 100baseTx-FD.

8.2.6. netstat
Mostra o status das conexes de rede, tabelas de roteamento, estatsticas das interfaces, conexes mascaradas e mensagens. netstat [opes] opes: -i [interface] Mostra estatsticas da interface [interface]. -M, --masquerade Se especificado, tambm lista conexes mascaradas (IP Masquerading). -n, --numeric Usa endereos numricos ao invs de tentar resolver nomes das maquinas, usurios e portas. -p Exibe o PID, nome do programa e o respectivo soquete que est sendo utilizado para comunicao. -c, --continuos Mostra a listagem atualizada a cada segundo at que as teclas <CTRL> + <C> sejam pressionadas. Se no for especificada nenhuma opo, os detalhes das conexes atuais sero mostradas. Exemplos: netstat Exibe o status de todas as conexes de rede da maquina. netstat -p Exibe as informaes de conexo do sistema, exibindo o PID, o nome de cada executvel e o soquete especifico utilizado para comunicao.

PG.: 73

APOSTILA GNU/DEBIAN AVANADO

8.2.7. ntpdate
Ajusta a data e a hora do computador local via NTP (Network Time Protocol). O utilitrio ntpdate, possibilita consultar um servidor NTP para sincronizar a data e hora local do computador. de grande valia para manter a data e a hora sempre corretas, evitando problemas em registros de log, bancos de dados e outros servios que dependem dos dados do calendrio e relgio do sistema. O ntpdate pode ser executado manualmente, via uma tarefa agendada pelo cron, via scripts, principalmente durante o boot do sistema, ou ainda, atravs de um daemon dedicado quando se necessita do mximo de preciso e otimizao. Em geral, para estaes e servidores de rede que no necessitem de muita preciso (dcimos de segundos, por exemplo), utiliza-se scripts de boot e tarefas agendas no cron para manter a data e a hora do computador ajustadas corretamente. ntpdate [opes] servidor Onde: servidor a maquina que prov o servio NTP para a rede, de modo que outros computadores possam sincronizar seu calendrio e relgio local com o desse servidor. opes: -a chave Permite especificar uma chave criptogrfica para realizar a autenticao no servidor NTP. Tanto cliente como o servidor devem possuir chaves correspondentes entre si. Por padro, a funo de autenticao desabilitada. -k arquivo Possibilita que o administrador especifique um arquivo contendo a chave criptogrfica para realizar autenticao no servidor NTP. Por padro, o arquivo /etc/ntp.keys utilizado para esta funo. -p nmero Define o nmero de amostras de tempo que devem ser adquiridas de cada servidor NTP para realizar o calculo do tempo. Pode ser utilizado um nmero de amostras de 1 8, o padro 4. -q Faz somente a pesquisa pela data e hora no servidor NTP sem alterar o calendrio e o relgio do computador local. -s Faz com que a sada do comando ntpdate seja redirecionada para o arquivo de log do sistema (/var/log/syslog) ao invs da sada padro. Especialmente interessante, quando o ajuste da hora e data feito via agendamento com o cron. -t segundos Especifica o tempo em que o cliente NTP aguardar por uma resposta de um servidor. O tempo especificado em mltiplos de 0.2 segundos, sendo o tempo de espera padro, 1 segundo. -u Fora a utilizao de portas no-privilegiadas para comunicao com um servidor NTP. til em situaes onde o servidor NTP encontra-se protegido por um firewall, por exemplo. Portas de comunicao TCP no-privilegiadas so as portas de 1024 65535. Exemplos: ntpdate -s ntp.pr.gov.br
PG.: 74

APOSTILA GNU/DEBIAN AVANADO

Sincroniza a data e a hora do computador local usando o servidor NTP ntp.pr.gov.br e direciona a sada do comando ntpdate para o arquivo de log do sistema. ntpdate -q ntp.pr.gov.br Faz uma pesquisa para saber a data e a hora corrente no servidor NTP ntp.pr.gov.br. ### Exemplo de agendamento do ntpdate via cron ### 0**** root ntpdate -s ntp.pr.gov.br ### Fim do exemplo ### Agenda a execuo do ntpdate para sincronizao com o servidor NTP ntp.pr.gov.br, a cada hora do dia, em todos os dias da semana, direcionando a sada do comando para o arquivo de log do sistema. Para realizar a sincronizao do calendrio e da hora durante a inicializao do sistema, possvel acrescentar a seguinte linha ao final do arquivo /etc/init.d/bootmisc.sh, por exemplo: ntpdate -s ntp.pr.gov.br No esquea de ajustar o endereo do servidor NTP conforme sua necessidade. Para clientes da CELEPAR, recomendvel o uso do servidor que citamos nos exemplos (ntp.pr.gov.br).

8.2.8. route
O comando route permite adicionar e remover rotas TCP/IP na tabela de roteamento do Linux. Para modificar a tabela de roteamento, necessrio privilgios de administrador do sistema. O roteamento de pacotes, tcnica que permite guiar os dados transmitidos pela rede atravs de outras interfaces de rede ou roteadores (equipamento dedicado ao roteamento) com o objetivo de atingir um destino numa rede diferente daquela em que o computador de origem faz parte. route [add/del] [opo] [endereo] Onde: add/del Permite adicionar (parmetro add) ou remover (del) uma rota esttica TCP/IP. endereo Para alguns parmetros que utilizamos com o comando route, necessrio fornecer um endereo TCP/IP relativo a funo da opo a ser usada. Por exemplo, a opo net, exige que seja informado um endereo de rede como 192.168.1.0. opes: -A Permite verificar ou modificar a tabela de roteamento especificando a famlia do protocolo a ser alterado. Exemplos de famlia para serem utilizadas com este parmetro so: inet (IPv4, o padro), inet6 (IPv6), ax25 (AX.25), netrom (NET/ROM AMPR), ipx (Novell IPX), ddp (Appletalk) e x25 (X.25). -F Altera informaes contidas na Base de Informaes de Repasse do Kernel (Kernel FIB), que na verdade, a tabela de roteamento padro do sistema. Este o padro para as operaes do comando route. -C Modifica o cache de roteamento do Kernel (mantido em memria). -n Exibe os endereos no formato numrico ao invs de tentar resolver nomes.
PG.: 75

APOSTILA GNU/DEBIAN AVANADO

-e Mostra a tabela de roteamento no formato do comando netstat. target endereo Permite especificar tanto um host (maquina ou equipamento de rede) ou uma rede de destino. Pode ser especificado numericamente ou atravs de nomes. -net endereo Permite especificar a rede de destino atravs do uso do argumento endereo. -host endereo Permite especificar um host (maquina ou equipamento de rede) de destino atravs do uso do argumento endereo. netmask mascara Permite especificar uma mascara de sub-rede, usando o argumento mascara, para o host ou rede de destino que est sendo configurado. gw roteador Permite definir o endereo do roteador padro da interface, atravs do uso da clusula default antes do parmetro em questo, ou do roteador que d acesso rede que est se estabelecendo a rota, atravs do uso do argumento roteador. metric nmero Define a mtrica de rede a ser utilizada para uma determinada rota. mss nmero Permite especificar o Tamanho Mximo do Segmento (MSS) para a rota. Este parmetro pode ser utilizado quando se deseja trafegar pacotes de rede do menor tamanho possvel e quando a operao de negociao do tamanho MTU (Maximum Transfer Unit) no funciona corretamente para aquela rede. reject Configura um bloqueio para uma determinada rota. No o mesmo funcionamento que um firewall possu. Esta clusula quando informada, simplesmente faz com que a procura por uma determinada rota falhe, ou seja, como se a rota para uma determinada rede ou host no existisse realmente. dev interface Permite especificar a interface de rede para onde os pacotes devero ser direcionados para atingirem a rede ou host de destino. Exemplos: route Exibe a tabela de roteamento do Kernel. A coluna chamada Opes, mostrada quando executamos o comando dessa forma, possu os seguintes smbolos e os respectivos significados: U = A rota est ativa. H = O destino um host e no uma rede. G = Usar roteador. R = Reintegrar rota para roteamento dinmico. D = Rota instalada dinamicamente por um daemon. M = Rota modificada ou redirecionada por um daemon. A = Instalada por addrconf. C = Entrada em cache. ! = Rota rejeitada. route add -net 192.56.76.0 netmask 255.255.255.0 dev eth1
PG.: 76

APOSTILA GNU/DEBIAN AVANADO

Adiciona uma rota para a rede 192.56.76.0 com mascara classe C, atravs do dispositivo de rede (interface) eth1. route add default gw 192.168.0.1 dev eth0 Adiciona o roteador padro para a rede a qual o computador faz parte, utilizando a interface eth0. route add -net 224.0.0.0 netmask 240.0.0.0 gw 192.168.1.1 metric 0 dev eth1 Adiciona uma rota para a rede 224.0.0.0 com mascara 240.0.0.0, atravs do roteador 192.168.1.1, estabelecendo a mtrica mnima (valor zero) para se alcanar esta rede usando a interface eth1. route del -net 10.0.0.0 netmask 255.0.0.0 Exclui a rota para a rede 10.0.0.0 com mascara 255.0.0.0 da tabela de roteamento. route add -net 10.0.0.0 netmask 255.0.0.0 reject Faz com que pesquisa por rotas para a rede 10.0.0.0 com mascara 255.0.0.0, sejam rejeitadas, como se a rota no existisse de fato, porm, no exclu a rota da tabela de roteamento do Kernel. route del -net 10.0.0.0 netmask 255.0.0.0 reject Apaga a rota rejeitada para a rede 10.0.0.0 com mascara 255.0.0.0. Quando uma rota esta rejeitada, para apag-la necessrio usar a clusula reject.

8.2.9. tcpdmatch
Simula uma tentativa de conexo via TCP/IP ao sistema. Esta ferramenta bastante til para verificao de segurana da maquina local. O tcpdmatch checa as regras existentes nos arquivos de configurao /etc/hosts.allow e /etc/hosts.deny para determinar se uma tentativa de conexo originada de um determinado endereo IP, maquina ou domnio obter sucesso no acesso a determinado daemon que esteja sendo executado na maquina. As checagens do tcpdmatch, no levam em considerao as protees proporcionadas por firewalls como o iptables. tcpdmatch [opes] daemon endereo Onde: daemon o executvel principal do servio que se deseja verificar a possibilidade de acesso. Exemplos de daemons so: sshd, ftpd, mysqld, etc. endereo o endereo IP, nome da maquina ou domnio de origem da conexo. Serve para simular uma conexo de entrada direcionada para a maquina local. opes: -d Faz com que tcpdmatch considere as configuraes dos arquivos hosts.allow e hosts.deny do diretrio local em vez dos que esto presentes sob o diretrio /etc. -i arquivo Permite especificar um arquivo de configurao alternativo nos moldes do inetd.conf, em vez do arquivo padro localizado sob o diretrio /etc. Exemplos: tcpdmatch sshd 192.168.1.4 Testa se a tentativa de conexo ao daemon SSH sshd vinda do endereo
PG.: 77

APOSTILA GNU/DEBIAN AVANADO

192.168.1.4 ser ou no aceita pelo sistema. tcpdmatch -d ftpd 10.15.61.5 Verifica se a tentativa de conexo ao daemon FTP ftpd vinda do endereo 10.15.61.5 ser ou no aceita pelo sistema, levando em considerao os arquivos hosts.allow e hosts.deny presentes no diretrio atual.

8.2.10. traceroute
Mostra o caminho percorrido por um pacote de rede at chegar ao seu destino. Este comando, mostra na tela o caminho percorrido entre os roteadores de rede e o tempo gasto de retransmisso. til para deteco de problemas de rede. traceroute [opes] [hostname/IP de destino] Onde: hostname/IP destino o endereo para onde o pacote ser enviado, por exemplo, www.debian.org. Caso o tamanho do pacote no seja especificado, o utilitrio assumir o tamanho padro de pacote (40 bytes). opes: -l Mostra o tempo de vida do pacote (ttl). -m [num] Ajusta a quantidade mximas de ttl dos pacotes. O padro 30. -n Mostra os endereos numericamente ao invs de usar resoluo DNS. -p [porta] Ajusta a porta que ser usada para o teste. A porta padro 33434. -r Pula as tabelas de roteamento e envia o pacote diretamente ao computador conectado a rede. -s [endereo] Usa o endereo IP/DNS definido pelo argumento endereo, como origem para o envio de pacotes em computadores com mltiplos endereos IP ou nomes de maquina. -v Mostra mais detalhes sobre o resultado do traceroute. -w [num] Configura o tempo mximo de aguardo por uma resposta. O padro 3 segundos. Exemplos: traceroute www.debian.org Mostra o caminho percorrido pelos pacotes de rede desde a maquina de origem (computador local) at a maquina de destino (www.debian.org). traceroute -v -w 5 www.uol.com.br Exibe mais informaes sobre a rota seguida pelos pacotes enviados pela maquina de origem at a maquina de destino e configura o tempo limite de espera por resposta para 5 segundos.

PG.: 78

APOSTILA GNU/DEBIAN AVANADO

8.2.11. wget
Realiza o download de forma no-interativa de arquivos da Web. um utilitrio muito utilizado em scripts shell para baixar arquivos de um servidor HTTP remoto. Os arquivos copiados via wget sero disponibilizados no diretrio corrente em que usurio estava quando invocou o utilitrio. O wget trabalha em background (segundo plano) e tem a capacidade de executar o download de arquivos via HTTP/HTTPS (inclusive via servidores Proxy) e FTP, mesmo que o usurio que iniciou o download no esteja mais usando o sistema. Para sua configurao, wget utiliza globalmente o arquivo /etc/wgetrc, e alternativamente, os usurios podem manter suas opes particulares no arquivo .wgetrc contido em seu diretrio pessoal (caso ele no exista, pode ser a partir da cpia de /etc/wgetrc). wget [opes] [url] Onde: url - o endereo do arquivo que se deseja fazer o download. Deve ser informado no formato Web (ex.: http://www.servidor.com.br/arquivo.txt). opes: -a arquivo Faz com que toda a sada de wget seja salva de forma incremental no arquivo de log determinado pelo argumento arquivo. Caso o arquivo no exista, ele ser criado. -b Faz com que o utilitrio seja executado em segundo plano. -c Continua o download de um arquivo parcialmente baixado para o computador. Para que esta opo possa ser utilizada, necessrio que o servidor FTP ou HTTP suporte a tcnica de Range Header. -d Ativa a depurao do comando. til para solucionar problemas. --delete-after Exclu cada arquivo baixado no computador local logo aps o trmino do download dos mesmos. til para fazer o carregamento do cache de objetos de um servidor Proxy, por exemplo. --follow-ftp Baixar arquivos presentes nos links FTP dos documentos HTML processados por wget. Por padro este tipo de operao desabilitada. -i arquivo Permite que o usurio especifique um arquivo contendo as URL's que devem ser baixadas por wget. Os endereos Web citados em conjunto com a invocao do comando, tem precedncia sobre as URL's contidas no arquivo. O arquivo deve conter uma URL por linha. -l nvel Define at em que nvel de diretrio uma cpia recursiva deve ser feita. -m Permite fazer o espelhamento de um site inteiro para o computador local. -nd No recriar a estrutura de diretrios quando estiver fazendo uma cpia recursiva.
PG.: 79

APOSTILA GNU/DEBIAN AVANADO

-o arquivo Direciona as sadas de wget para o arquivo determinado no argumento homnimo. O arquivo no usado de forma incremental como na opo -a. --proxy-user=usurio Permite que um usurio do servio de Proxy seja informado, para ser usado para baixar os arquivos. Esta opo, depende do ajuste da varivel de ambiente http_proxy ou do parmetro homnimo nos arquivos de configurao do wget (/etc/wgetrc ou ~/.wgetrc). --proxy-passwd=senha Especifica uma senha para o usurio definido atravs da opo --proxy-user. -r Ativa a cpia recursiva dos dados. -w segundos Especifica o tempo em segundos entre as tentativas que so feitas para baixar os arquivos. Voc pode usar o sinalizador m para informar o tempo em minutos, h para horas ou d para dias. --waitretry=segundos Especifica o tempo em segundos em que wget tentar novamente baixar um arquivo aps uma falha no download. O padro no esperar e prosseguir com o processamento da prxima URL. Exemplos: wget http://ocs.eparana.parana/index.html Faz a cpia do arquivo index.html a partir do site http://ocs.eparana.parana. wget -m http://ocs.eparana.parana Faz a cpia recursiva de todo o contedo do site http://ocs.eparana.parana. wget proxy-user=marcius proxy-passwd=velhinha http://zig.com/linux.tar.gz Faz a cpia do arquivo linux.tar.gz a partir do site http://zig.com atravs do servio de Proxy HTTP, especificando usurio e senha para acesso a Internet atravs deste servio. wget --waitretry=15 ftp://10.15.22.205/tnsnames.ora Realiza o download do arquivo tnsnames.ora a partir do site FTP 10.15.22.205, usando o tempo de 15 segundos entre as tentativas falhas de baixar o arquivo.

PG.: 80

APOSTILA GNU/DEBIAN AVANADO

9. Arquivos de Configurao
Este tpico, tem o objetivo de fundamentar alguns dos principais conceitos de rede e servios que utilizam este recurso. Alm disso, comentaremos sobre os arquivos de configurao mais importantes do sistema.

9.1. Interfaces de Rede


Os arquivos especiais que representam os dispositivos de rede (interfaces de rede) no GNU/Linux, esto localizados sob o diretrio /dev. A maioria destes arquivos, criada dinamicamente pelo sistema de deteco de hardware do GNU/Debian no momento da inicializao do sistema. Este o caso, por exemplo, das interfaces eth, quando o mdulo do dispositivo em questo est disponvel e pode ser carregado pelo Kernel durante o boot. Em alguns casos, os dispositivos so criados dinamicamente em tempo de execuo por programas que necessitam utilizar a interface. Por exemplo, uma interface ppp ser criada no momento em que o usurio desejar se conectar a um provedor Internet via linha discada. Abaixo, a identificao de algumas interfaces de rede utilizadas pelo GNU/Linux. O caractere ?, significa um nmero que identifica as interfaces seqencialmente, iniciando pelo 0 (zero): eth? - Placa de rede Ethernet ou WaveLan. ppp? - Interface de rede PPP (protocolo ponto a ponto). slip? - Interface de rede serial. eql - Balanceador de trfego para mltiplas linhas. plip? - Interface de porta paralela. arc?e, arc?s - Interfaces Arcnet. sl?, ax? - Interfaces de rede AX25 (respectivamente para Kernels 2.0.xx e 2.2.xx). fddi? - Interfaces de rede FDDI. dlci??, sdla? - Interfaces Frame Relay, respectivamente para para dispositivos de encapsulamento DLCI e FRAD. nr? - Interface Net Rom. rs? - Interfaces Rose. st? - Interfaces Strip (Starmode Radio IP). tr? - Interfaces Token Ring. wlan? - Interfaces wirelles.

9.2. Interface de loopback


A interface loopback, um tipo especial de interface que permite fazer conexes, com a prpria maquina. Todos os computadores que usam o protocolo TCP/IP, utilizam esta interface, e existem vrias razes para isto, por exemplo, voc pode testar vrios programas de rede sem interferir o funcionamento de outras maquinas de sua rede. Por conveno, o endereo IP 127.0.0.1, foi escolhido especificamente para funcionar como loopback. Assim, toda conexo cujo alvo o endereo 127.0.0.1, ser feita com o prprio computador local do usurio. A configurao da interface loopback simples e voc deve ter certeza de que ela foi feita corretamente. Voc pode conferir se a configurao est correta, utilizando o comando ifconfig sem nenhum parmetro adicional e conferindo se a interface lo est configurada e apontando para o endereo 127.0.0.1. Caso voc precise configurar manualmente a interface de loopback, voc poder acrescentar as seguintes linhas a seu arquivo /etc/network/interfaces: auto lo iface lo inet loopback Aps adicionar as linhas acima ao arquivo, execute o seguinte comando: ifup lo Caso a interface loopback no esteja configurada de forma correta, voc poder ter
PG.: 81

APOSTILA GNU/DEBIAN AVANADO

problemas quando tentar se conectar a qualquer servio de rede que esteja sendo executado localmente.

9.3. Servios e Portas TCP/IP


As aplicaes fazem acesso camada de transporte do protocolo de rede atravs de portas. As portas, podem ser vistas como canais de comunicao. Cada porta referenciada como nmero inteiro, que a identifica, e a aplicao a qual ela d suporte. Este nmero um valor de 16 bits, que varia de 1 65535. Cada servio de rede oferecido por um computador, deve utilizar uma porta de comunicao exclusiva. As portas de nmero 1 1024, so conhecidas como portas privilegiadas porque os servios oferecidos atravs delas, executam com autoridade de superusurio (root). Elas tambm so chamadas de portas bem conhecidas, porque so padronizadas para os mesmos servios em vrios sistemas. O comando nmap, traz informaes sobre as portas TCP/UDP de uma determinada maquina: nmap -p1-65535 localhost Realiza uma pesquisa completa em todas as portas da maquina e mostra as portas que esto abertas. nmap 10.10.10.10 Realiza uma pesquisa nas portas privilegiadas da mquina 10.15.20.20 e mostra as que esto abertas.

9.4. Arquivos de Configurao


9.4.1. /etc/network/interfaces
Este o arquivo de configurao usado pelos programas ifup e ifdown, respectivamente para ativar e desativas as interfaces de rede. O que estes utilitrios fazem na realidade carregar os utilitrios ifconfig e route atravs dos argumentos passados do arquivo /etc/network/interfaces, permitindo que o usurio iniciante configure uma interface de rede com mais facilidade. Abaixo, um exemplo de configurao do arquivo interfaces: # Arquivo /etc/network/interfaces iface eth0 inet static address 192.168.1.50 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 As interfaces e roteamentos so configurados na ordem que aparecem neste arquivo. Cada configurao de interface inicia com a palavra chave iface. A prxima palavra o nome da interface que se deseja configurar (a mesma forma usada pelos comandos ifconfig e route). Voc tambm pode usar IP aliases (tcnica para adicionar mais de um endereo IP a mesma interface), mas tenha certeza que a interface real inicializada antes que a virtual. Por exemplo, se voc deseja usar a interface virtual eth0:0, voc dever garantir que eth0, a interface real, foi configurada antes. A prxima palavra especifica a famlia de endereos da interface. Escolha a opo inet para as redes TCP/IP, ipx para o protocolo IPX e ipv6 se deseja utilizar o protocolo IPV6. A palavra static, especifica o mtodo que a interface ser configurada, em nosso exemplo (acima em negrito), uma interface com endereo esttico (fixo). Outros mtodos e seus parmetros so especificados abaixo: O mtodo loopback usado para configurar a interface de loopback (lo) do protocolo IPv4.
PG.: 82

APOSTILA GNU/DEBIAN AVANADO

O mtodo static usado para configurar um endereo IPv4 fixo para a interface. As opes que podem ser usadas com este mtodo, so as seguintes: Parmetros obrigatrios: address endereo Endereo IP da Interface de rede (por exemplo, 192.168.1.50). netmask mscara Mscara de rede a ser utilizada pela interface (por exemplo, 255.255.255.0). Parmetros opcionais: broadcast endereo Endereo de broadcast da rede (por exemplo, 192.168.1.255). network endereo Endereo da rede (por exemplo, 192.168.0.0). gateway endereo Endereo do roteador padro (por exemplo, 192.168.1.1). O roteador o equipamento de rede responsvel por conectar o seu computador a outras redes. O mtodo dhcp Este mtodo usado para obter automaticamente os parmetros de configurao do protocolo de rede, atravs de um servidor DHCP da rede, usando as ferramentas: dhclient, pump ou dpcpcp (os dois ltimos somente kernels 2.0.x e 2.2.x). Abaixo, os parmetros que podem ser utilizados: hostname nome Nome da estao de trabalho que ser requisitado. (pump, dhcpcd). leasehours horas Tempo de concesso da configurao a ser usada pelo computador local em horas (pump). leasetime segundos Tempo de concesso da configurao a ser usada pelo computador local em segundos (dhcpcd). vendor vendedor Uma expresso (string) de identificao do vendedor (dhcpcd). client identificao Uma expresso (string) de identificao do cliente (dhcpcd). O mtodo bootp Este mtodo usado para obter um endereo via bootp: bootfile arquivo Faz com que o servidor fornea o arquivo de inicializao especificado no argumento arquivo para as estaes da rede que fizerem uma requisio bootp a ele. server endereo Especifica o endereo do servidor bootp. hwaddr endereo Ao invs de usar o endereo de hardware (MAC) real do servidor, utiliza o alternativo fornecido pelo argumento endereo. Algumas opes se aplicam a todo tipo de interface: noauto No configura automaticamente a interface quando o ifup ou ifdown so
PG.: 83

APOSTILA GNU/DEBIAN AVANADO

executados com a opo -a (normalmente usada durante a inicializao ou desligamento do sistema). pre-up comando Executa um comando antes da inicializao da interface. up comando Executa um comando aps a interface ser iniciada. pre-down comando Executa um comando antes de desativar a interface. down comando Executa um comando aps desativar a interface. Os comandos que so executados atravs das opes up, pre-up, pre-down e down, podem ser utilizados vrias vezes na mesma interface, mas eles so executados na seqncia em que so usados. Outra informao importante, que se um dos comandos falhar, nenhum dos restantes executado. Para forar a execuo dos demais, adicione o artifcio || true, ao final da linha de comando em questo.

9.4.2. /etc/hostname
Arquivo lido pelo utilitrio hostname para definir o nome de sua estao de trabalho.

9.4.3. /etc/hosts
O arquivo /etc/hosts, faz a associao entre um nome de computador e um endereo IP. Basicamente tem a mesma funo do servio DNS, porm, atua somente localmente. Atualmente, este arquivo utilizado para configuraes de resoluo de nomes muito especificas e de escopo local (ex.: maquinas virtuais), e ainda, para aqueles servios e programas que no suportam a resoluo de nomes via servio DNS (ex.: algumas verses do Lotus Notes). A incluso de um computador neste arquivo dispensa a consulta a um servidor de nomes para obter um endereo IP, sendo muito til para mquinas que so acessadas freqentemente e que no tem seu endereo IP constantemente modificado. A desvantagem de usar este recurso, que voc mesmo precisar manter este arquivo atualizado. Em um ambiente de rede bem planejado e que no possu particularidades com relao a resoluo de nomes, o nico endereo que aparecer neste arquivo, referenciar o nome do computador local, como no exemplo a seguir: # Exemplo de arquivo /etc/hosts 127.0.0.1 localhost ecelepar00001.celepar.parana Voc pode especificar mais que um nome de computador por linha como demonstrado no exemplo acima. OBS: Caso encontre problemas de lentido para resolver nomes e at para executar alguns aplicativos (como o gdm, por exemplo), verifique se existem erros neste arquivo de configurao.

9.4.4. /etc/host.conf
O arquivo /etc/host.conf o local onde possvel configurar alguns itens que alteram a forma como a resoluo de nomes feita no sistema. De modo geral, o exemplo abaixo serve para a maioria dos ambientes: #Exemplo do arquivo /etc/host.conf order hosts,bind multi on
PG.: 84

APOSTILA GNU/DEBIAN AVANADO

De acordo com nosso exemplo, a ordem de resoluo de nomes (parmetro order hosts,bind) ser feita primeiro atravs da consulta do arquivo /etc/hosts, e em seguida, uma pesquisa no servio DNS. O parmetro multi on, faz com que todos os endereos IP correspondentes ao nome pesquisado sejam retornados ao programa que emitiu a solicitao. H ainda outros parmetros que podem ser configurados para as finalidades mais variadas. Para maiores detalhes sobre estas configuraes, consulte o manual man host.conf.

9.4.5. /etc/networks
O arquivo /etc/networks tem uma funo similar ao arquivo /etc/hosts. Ele contm um banco de dados simples de nomes de redes com seus respectivos endereos. O formato deste arquivo : Nome_da_Rede Endereo_da_Rede Abaixo, um exemplo de configurao deste arquivo: #Exemplo de arquivo /etc/networks loopnet 127.0.0.0 celepar 10.15.20.0 nasa 200.192.45.0 A configurao de redes nomeadas feita atravs do /etc/networks, particularmente interessante, quando utilizamos comandos como o route. Isto porque, este comando poder exibir o nome das redes em vez dos endereos correspondentes, o que torna a sada do comando muito mais amigvel.

9.4.6. /etc/resolv.conf
O /etc/resolv.conf o arquivo de configurao principal do mecanismo de resoluo de nomes do GNU/Linux. um arquivo texto simples, com um parmetro por linha, e que contm o endereo de servidores DNS que sero usados pelo sistema. Existem trs palavras chaves normalmente usadas na configurao deste arquivo: domain Especifica o domnio DNS ao qual a maquina pertence. search Especifica uma lista de nomes de domnio alternativos ao procurar por um computador, separados por espaos. A linha do parmetro search, pode conter no mximo 6 domnios ou 256 caracteres. nameserver Especifica o endereo IP de um servidor de nomes de domnio para resoluo de nomes (DNS). Pode-se especificar mltiplos servidores com esta opo. Como exemplo, o /etc/resolv.conf se parece com isto: domain celepar.parana search celepar.parana pr.gov.br nameserver 10.15.61.248 nameserver 10.15.61.246 Neste exemplo, o nome de domnio que ir complementar o nome da maquina o celepar.parana. Quando uma pesquisa for realizada para localizar uma maquina por seu nome, primeiramente o sufixo celepar.parana ser acrescido ao nome a ser pesquisado, caso a maquina no seja encontrada, o sufixo pr.gov.br ser acrescentado, e a pesquisa ser reenviada aos servidores DNS especificados com a opo nameserver, na tentativa de resolver o nome e obter o endereo IP da maquina em questo.
PG.: 85

APOSTILA GNU/DEBIAN AVANADO

9.4.7. /etc/nsswitch.conf
a evoluo do /etc/hosts.conf. Possibilita que a ordem de procura para resoluo de nomes seja customizada para cada servio. Ele utilizado nas ltimas distribuies por diversas bibliotecas em vez de /etc/hosts.conf.

9.4.8. /etc/services
O arquivo /etc/services um banco de dados simples que associa um nome a uma porta de comunicao utilizada pelos protocolos TCP/UDP. um arquivo texto de formato muito simples, cada linha representa um servio. Cada item, dividido em trs campos separados por qualquer nmero de espaos em branco (tab ou espaos). Os campos so: nome porta/protocolo apelido # comentrio nome Uma palavra simples que representa o nome do servio sendo descrito. porta/protocolo Este campo dividido em dois sub-campos, veja detalhes abaixo: porta Um nmero que define o nmero da porta em que o servio estar disponvel. Muitos dos servios comuns tem designados um nmero de servio. Estes esto descritos no RFC-1340. protocolo Este sub-campo, pode ser ajustado para TCP ou UDP. importante notar que o item 18/tcp diferente do item 18/udp, e que no existe razo tcnica para o mesmo servio usar estas duas portas distintas. Normalmente, se um servio est disponvel em ambos os protocolos TCP e UDP, voc precisar especificar ambos. apelidos Outros nomes podem ser usados para se referir a entrada deste servio. comentrio Qualquer texto aparecendo em uma linha aps um caractere "#", ignorado e tratado como comentrio.

9.4.9. /etc/protocols
O arquivo /etc/protocols mapeia nmeros de identificao de protocolos em nomes de protocolos. Isto usado por programadores para permiti-los especificar protocolos por nomes em seus programas, e tambm, por alguns programas tal como tcpdump, possibilitando estes a mostrar nomes em vez de nmeros em sua sada. A sintaxe geral deste arquivo : nome_protocolo nmero_identificador apelidos #Comentrios

9.4.10. /etc/alternatives/
um diretrio que contm links para diversos aplicativos padres utilizados pelo sistema. Dentre eles so encontrados links para os editores do sistema, programas clientes de terminal padro, gerenciadores grficos, entre outros. Por exemplo, se voc desejar usar o editor jed ao invs do vi, remova o link editor com o comando rm editor, localize o arquivo executvel do jed com o comando which jed e crie um link para ele neste diretrio usando ln -s /usr/bin/jed editor. De
PG.: 86

APOSTILA GNU/DEBIAN AVANADO

agora em diante o editor padro usado pela maioria dos aplicativos ser o jed.

9.4.11. /etc/default/rcS
Contm variveis padres que alteram o comportamento de inicializao dos scripts contidos em /etc/rcS.d/. Por exemplo, se quiser menos mensagens na inicializao do sistema, ajuste o valor da varivel VERBOSE para o valor no. Para detalhes sobre as variveis que podem ser configuradas neste arquivo, consulte a documentao oficial do rcS com o comando man rcS 5. Recomendamos fortemente que voc estude primeiro qual funo de cada varivel antes de modific-las, pois isto pode evitar transtornos graves no funcionamento do sistema.

9.4.12. /etc/pam.d/
Este diretrio possui arquivos de configurao de diversos mdulos PAM existentes em seu sistema. Os mdulos PAM, desempenham os servios de autenticao do sistema. H vrios arquivos neste diretrio, cada um deles corresponde a um servio que depende do esquema de autenticao dos mdulos PAM.

9.4.13. /etc/security/
Este diretrio contm arquivos para controle de segurana e limitadores de uso de recursos que sero aplicados aos usurios do sistema. O funcionamento de muitos dos arquivos deste diretrio depende de modificaes nos arquivos do diretrio /etc/pam.d/ para habilitar as funes de controle, acesso e restries.

9.4.14. /etc/security/access.conf
lido no momento do login do usurio e permite definir quem ter acesso ao sistema e a partir de onde (terminais, endereos de rede, etc). O formato deste arquivo so 3 campos separados pelo caractere :, cada linha contendo uma regra de acesso. O primeiro campo deve conter o caractere + ou -, para definir se aquela regra permitir (+) ou bloquear (-) o acesso do usurio. O segundo campo deve conter uma lista de nomes de usurios (inclusive no formato usurio@computador), grupos, a palavra ALL (todos usurios/grupos) ou EXCEPT (com exceo para usurios/grupos). O terceiro campo deve conter uma lista de terminais tty (para acessos locais), nomes de computadores, nomes de domnios (iniciando com um .), endereo IP de computadores ou endereo IP de redes (finalizando com .) de origem. Tambm podem ser usadas as palavras ALL (qualquer maquina), LOCAL (mquinas da rede local, cujo nome no possu o caractere .) e EXCEPT (com exceo para maquina). Abaixo um exemplo do arquivo access.conf: # Somente o root poder usar tty1 # -:ALL EXCEPT root:tty1 # bloqueia o acesso ao console a todos usurios exceto marcius e joselito. # -:ALL EXCEPT marcius joselito:console # Bloqueia acessos remotos de contas privilegiadas (grupo gga-suporte), com #exceo das tentativas de conexes vindas de maquinas da rede local ou que #fazem parte do domnio celepar.parana. # -:gga-suporte:ALL EXCEPT LOCAL .celepar.parana
PG.: 87

APOSTILA GNU/DEBIAN AVANADO

# Algumas contas, no tem permisso de acessar o sistema de nenhum lugar: # -:playmobil ze karioka:ALL # Todas as outras contas que no se encaixam nas regras acima, podem acessar o # sistema de qualquer lugar.

9.4.15. /etc/security/limits.conf
Define limites de uso dos recursos do sistema para cada usurio ou grupos de usurios. Os recursos so descritos em linhas da seguinte forma: #<dominio> <tipo> <item> <valor> O campo domnio, pode ser um nome de usurio, um grupo (especificado sob a forma @grupo) ou o caractere coringa * que significa todos usurios e grupos. O campo tipo, pode assumir o valor soft para os limites mnimos, hard para os limites mximos ou - quando nenhum destes dois tipos aplicvel (como na utilizao do item maxlogins, por exemplo). O campo item, pode assumir os seguintes valores: core - limita o tamanho do arquivo core em Kilobytes; data - tamanho mximo de dados em Kilobytes; fsize - Tamanho mximo de arquivos que podem ser criados/modificados em Kilobytes; memlock - Espao mximo de endereos bloqueados na memria em Kilobytes; nofile - Nmero mximo de arquivos abertos; rss - Tamanho mximo dos programas residentes na memria virtual em Kilobytes; stack - Tamanho mximo de pilha em Kilobytes; cpu - Tempo mximo usado na CPU em minutos; nproc - Nmero mximo de processos; as - Limite de espao de endereos; maxlogins - Nmero mximo de acessos realizados por este usurio; priority - Prioridade que os programas deste usurio sero executados. Abaixo, exemplificamos o arquivo entendimento: #<dominio> <tipo> <item> * soft core * hard rss @estagiarios hard nproc @usuarios hard fsize @estagiarios hard nofile ftp hard nproc @estagiarios maxlogins /etc/security/limits.conf, <valor> 0 10000 20 4096 50 0 10 para melhor

9.4.16. /etc/fstab
Contm detalhes para a montagem dos sistemas de arquivos do sistema. um arquivo de configurao de extrema importncia no sistema. Este arquivo utilizado pelos comandos mount e swapon, para disponibilizar os dados e a rea de paginao do sistema. Abaixo, citamos um exemplo do arquivo /etc/fstab: # /etc/fstab: static file system information. # # <sistema> <ponto montagem> <tipo> <opes> <dump> <ordem> proc /proc proc defaults 0 0 /dev/hda3 / xfs defaults 0 1 /dev/hda2 /boot ext3 defaults 0 2
PG.: 88

APOSTILA GNU/DEBIAN AVANADO

/dev/hda4 /dev/hda1 /dev/hdb /dev/fd0

/home none /media/cdrom0 /media/floppy0

xfs defaults 0 swap sw 0 udf,iso9660 user,noauto 0 auto rw,user,noauto 0

2 0 0 0

No exemplo acima, podemos verificar que o arquivo /etc/fstab, composto pelas seguintes colunas: Sistema Corresponde ao sistema de arquivos que se deseja montar. Esta coluna conter parties de disco, dispositivos como CD-ROM, drive de disquetes, etc, e uma rea especial da memria para abrigar o sistema de arquivos do Kernel o /proc. Ponto de montagem o diretrio sob o qual, o sistema de arquivos definido no parmetro anterior, ser disponibilizado para utilizao tanto do sistema bem como dos usurios. Tipo o tipo do sistema de arquivos usado pelos dispositivos para armazenar os dados. Sempre deve-se utilizar o tipo de sistema de arquivos correto para o dispositivo a ser montado, caso contrrio, o sistema de arquivos no ser montado. Exemplos de tipos de sistemas de arquivo so: ext2, ext3, reiserfs, fat, ntfs, udf, iso9660, xfs, swap, entre outros. Opes a coluna onde podemos definir as opes de montagem do sistema de arquivos. As opes variam de acordo com o tipo de sistema de arquivos a ser montado, mas existem tambm, opes globais que podem ser usadas em qualquer tipo de sistema de arquivos (ex.: noauto, user, owner, comment, etc). As opes globais mais utilizadas so: noauto - Para impedir que o sistema de arquivos seja montado automaticamente, durante o processo de inicializao ou atravs do comando mount -a. user Para possibilitar que usurios comuns possam montar os sistemas de arquivos marcados com esta opo. Lembre-se que somente o usurio root tem permisso para montar sistemas de arquivos. Dump Esta uma opo utilizada pelo utilitrio dump, para determinar quais os sistemas de arquivos devem ser processados por este utilitrio. O valor 0 (zero), significa que aquele sistema de arquivos no necessita do dump. Caso voc tenha interesse sobre o funcionamento do dump, acesse sua pgina do manual atravs do comando man dump. Ordem Especifica a ordem de checagem feita durante a inicializao do sistema pelo utilitrio fsck nos sistemas de arquivos. O sistema de arquivos raiz (/) sempre dever ter como ordem de checagem o valor 1 por sua importncia, os demais sistemas de arquivos devem possuir um valor maior ou igual a 2. O valor 0 (zero) significa que o sistema de arquivos no dever ser checado.

9.4.17. /etc/hosts.allow
um dos arquivos de controle de acesso a servios de rede do GNU/Linux, assim como /etc/hosts.deny. As regras contidas neste arquivo so utilizadas pelo daemon tcpd, mais conhecido como TCP Wrapper, para fazer a liberao do acesso ao sistema orientada a servios. O arquivo /etc/hosts.allow, tem a funo de permitir o acesso de um determinado endereo IP ou nome de maquina, aos daemons que controlam os servios que so executados no computador local. Por exemplo, voc poder cadastrar a maquina 10.15.15.15, no arquivo /etc/hosts.allow, para que ela possa acessar o daemon
PG.: 89

APOSTILA GNU/DEBIAN AVANADO

sshd. Para testar as regras contidas neste arquivo, voc poder usar o utilitrio tcpdmatch. O formato deste arquivo de configurao, demonstrado a seguir: daemons : maquinas [:comando] Onde: daemons So os servios que voc deseja liberar o acesso a uma determinada maquina ou a um conjunto delas. Exemplos de daemons so: sshd, ftpd, indentd, etc. maquinas o endereo IP, nome da maquina, ou em alguns casos, o domnio (iniciado pelo caractere .), que ter acesso aos daemons especificados pelo parmetro explicado anteriormente. comandos um parmetro opcional que permite especificar um comando que ser executado pelo shell /bin/sh, quando uma conexo recebida corresponder a uma determinada regra existente. Particularmente interessante quando o computador est sofrendo um ataque. Voc poder utilizar caracteres coringas como * e ? para especificar nomes e endereos de maquinas, alm das palavras chave ALL, LOCAL, UNKNOWN, KNOWN, PARANOID e EXCEPT. As palavras chave ALL e EXCEPT, tambm podem ser usadas no parmetro daemons. Para entender o significado de cada uma das palavras chave, consulte a documentao atravs do comando man hosts.allow. Exemplos: ALL: ALL Libera o acesso a todos os daemons do sistema a qualquer maquina/domnio. sshd:10.15.15.15 ecelepar00001 Libera o acesso ao daemon SSH sshd para as maquinas 10.15.15.15 e ecelepar00001. sshd ftpd: 10.* EXCEPT 10.15.15.15 necessrio muito cuidado na observao desta regra. Ela libera o acesso aos daemons SSH sshd e FTP ftpd para todas as maquinas da rede 10.0.0.0/8, com exceo para 10.15.15.15, que ainda assim, pode ter seu acesso garantido, caso no exista uma regra explicita em /etc/hosts.deny, impedindo seu acesso ao sistema, j que por padro, o acesso aos servios liberado.

9.4.18. /etc/hosts.deny
um dos arquivos de controle de acesso a servios de rede do GNU/Linux, assim como /etc/hosts.allow. Todas as regras contidas neste arquivo, tem o objetivo de proibir o acesso de uma ou mais maquinas a um determinado daemon da maquina local, funo contrria daquela desempenhada por /etc/hosts.allow. O formato como o arquivo deve ser configurado e os parmetros que podem ser usados na sua configurao, so exatamente os mesmos de /etc/hosts.allow (veja o tpico daquele arquivo para mais detalhes). importante frisar aos leitores deste documento que, por padro, o acesso as daemons da maquina local via rede so liberados, embora isso possa no ser possvel por configuraes particulares que o usurio fez em cada um deles. Portanto, caso se queira negar o acesso a determinado daemon, necessrio configurar apropriadamente este arquivo.
PG.: 90

APOSTILA GNU/DEBIAN AVANADO

Exemplos: ALL: ALL Probe o acesso a qualquer daemon da maquina local a qualquer computador. sshd : 10.* EXCEPT 10.15.15.15 Probe o acesso ao daemon SSH sshd a qualquer maquina da rede 10.0.0.0/8 com exceo da maquina 10.15.15.15. mysqld : * EXCEPT 10.* Probe o acesso ao daemon do MySQL mysqld a todas as maquinas, com exceo as maquinas da rede 10.0.0.0/8.

9.4.19. /etc/inetd.conf
O arquivo /etc/inetd.conf o arquivo de configurao do daemon inetd (Internet Daemon), tambm conhecido como super servidor. Para saber qual funo do daemon inetd, necessrio entender o processo de comunicao numa rede TCP/IP, mesmo que de modo muito simplificado. Assim, para que uma maquina possa disponibilizar qualquer servio nesse tipo de rede, necessrio que um daemon permanea continuamente escutando a rede, atravs de uma porta de comunicao, para que possa receber as solicitaes destinadas aquele servio. Toda troca de informao entre duas maquinas, ocorre pela utilizao de um endereo de rede e uma porta. Ento, quanto mais servios uma maquina tem que disponibilizar, maior o nmero de portas que ela dever usar, e maior tambm, ser seu consumo de recursos (CPU, memria, etc), j que necessita manter estes daemons executando permanentemente no sistema. A idia trazida pelo inetd, otimizar e simplificar todo este processo. Para isso, os servios a serem disponibilizados pela maquina, ao invs de utilizarem daemons especficos, utilizaram apenas o inetd, que redirecionar as requisies de forma apropriada somente para o servio correspondente, racionalizando o consumo de recursos da maquina e evitando que vrias portas fiquem abertas, o que pode gerar problemas de segurana. Para usufruir de toda esta facilidade, necessrio simplesmente o ajuste adequado do arquivo de configurao do inetd, o /etc/inetd.conf. O formato deste arquivo, exposto abaixo: <servio> <tipo_soquete> <protocolo> <flags> <usurio> <daemon> <parmetros> A seguir, uma linha de exemplo de configurao do arquivo: #<servio> <tipo_soquete> <protocolo> <flags> <usurio> <daemon> <parmetros> netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd Mesmo que voc no tenha a necessidade de disponibilizar nenhum servio na rede, importante editar este arquivo para desabilitar os servios providos via inetd, comentando (com o caractere #) o inicio das linhas do arquivo que correspondem a configurao de um servio. importante entender tambm, que servios com elevados nmeros de acessos, devem ser configurados para trabalhar com daemons prprios e no com o inetd, devido ao ganho de desempenho que ser obtido nesse modo de operao. O arquivo /etc/inetd.conf, possu muitas opes de configurao, caso voc necessite saber mais elas, consulte a documentao com o comando man inetd.conf.

9.4.20. /etc/inittab
Este o arquivo de configurao utilizado pelo programa init para a inicializao do sistema, para maiores sobre este assunto, consulte a seo Sistema de Boot e Runlevels presente neste documento. O formato deste arquivo, mostrado na linha abaixo: identificao:nveis_execuo:ao:processo

PG.: 91

APOSTILA GNU/DEBIAN AVANADO

Agora, vamos mostrar um exemplo funcional do arquivo /etc/inittab, e comentarmos sobre suas caractersticas principais. Os comentrios iniciam-se com o caractere # e so ignoradas pelo programa init: ## Indica o nvel de execuo padro do sistema id:3:initdefault: # System initialization. ## Indica o diretrio de scripts a ser executado, ## dependendo do nvel de execuo configurado. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Trap CTRL-ALT-DELETE ## A seqncia de teclas indica o comando descrito, ## ou seja, reinicializa o sistema. ca::ctrlaltdel:/sbin/shutdown -t3 -r now ## Se por algum motivo a energia cair, o sistema ## agenda o desligamento do sistema para 2 minutos ## a partir do momento da queda de energia. pf::powerfail:/sbin/shutdown -f -h +2 "Falta de energia: Sistema desligando" ## Se a fora for restaurada antes de ser executado ## o comando anterior a este ser cancelado. pr:12345:powerokwait:/sbin/shutdown -c "Cancelando o desligamento" # Run gettys in standard runlevels ## Executa terminais em nveis de execuo padro, ## utilizados para conexes da console. 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6

9.4.21. /etc/mtab
Contm uma lista dos sistemas de arquivos montados atualmente no sistema. Seu contedo idntico ao do arquivo virtual /proc/mounts. O comando mount executado sem parmetros, exibe o contedo de /etc/mtab.

9.4.22. /etc/issue
Contm um texto ou mensagem que ser mostrada antes do login do sistema.

9.4.23. /etc/issue.net
Mesma utilidade do arquivo /etc/issue, mas mostrado antes do login numa sesso telnet. Outra diferena, que este arquivo aceita os seguintes tipos de variveis:
PG.: 92

APOSTILA GNU/DEBIAN AVANADO

%t - Mostra o terminal (tty) atual. %h - Mostra o nome de domnio qualificado (FQDN). %D - Mostra o nome do domnio NIS. %d - Mostra a data e hora atual. %s - Mostra o nome do Sistema Operacional. %m - Mostra o tipo de hardware do computador. %r - Mostra a reviso do Sistema Operacional. %v - Mostra a verso do Sistema Operacional. %% - Mostra um simples sinal de porcentagem (%).

9.4.24. /etc/motd
Exibe um texto ou mensagem aps usurio se conectar com sucesso ao sistema. Tambm usado pelo telnet, ftp, e outros servidores que requerem autenticao do usurio (nome e senha).

PG.: 93

APOSTILA GNU/DEBIAN AVANADO

10. Firewall iptables Conceitos Bsicos


A funo principal de um firewall, regular o trfego de dados entre redes distintas e impedir a transmisso e/ou recepo de dados nocivos ou no autorizados de uma rede para outra. Este conceito inclu a aplicao de tcnicas como a de filtragem de pacotes e de proxy de aplicaes (anlise de contedo dos pacotes), nas redes que empregam os protocolos TCP/IP. A implementao e o gerenciamento de firewalls, se tornou umas das competncias do administrador contemporneo, isto porque, cada vez maior a necessidade manter a informao segura. E por essa razo, que decidimos incluir esta seo neste documento. Este captulo tem como objetivo fazer uma rpida introduo sobre os conceitos e o funcionamento do firewall iptables que acompanha a distribuio Debian e uma das ferramentas para filtragem de pacotes mais utilizadas atualmente.

10.1. Introduo
O iptables foi introduzido a partir verso 2.4 do Kernel do GNU/Linux, com o objetivo de substituir o ipchains que era utilizado pelas verses 2.2. Este novo firewall, tem como vantagem ser muito estvel (assim como o ipchains e ipfwadm), confivel, permitir muita flexibilidade na programao de suas regras, mais opes disponveis para o controle de trfego e melhor organizao devido a organizao aprimorada das etapas de roteamento. O iptables um firewall em nvel de pacotes (veja mais detalhes sobre este conceito na seo Tipos de Firewall) e funciona baseado em endereos/portas de origem/destino. Ele desempenha suas funes atravs da comparao de regras, organizadas e armazenadas em tabelas internas, para saber se um pacote tem ou no permisso para adentrar a rede/maquina que est sendo protegida. Em configuraes mais restritivas, o pacote bloqueado e registrado para que o administrador do sistema tenha condies de avali-lo posteriormente. O iptables tambm pode ser usado para modificar e monitorar o trfego da rede, fazer NAT (IP masquerading e source/destination NAT), redirecionamento e marcao de pacotes, modificar a prioridade de pacotes que entram e saem do seu sistema, contagem de bytes, dividir trfego entre mquinas e criar protees contra vrias tcnicas de ataque (anti-spoofing, syn flood, DoS, etc). As possibilidades oferecidas pelos recursos de filtragem iptables e a sua eficcia, dependem em grande parte dos conhecimentos do administrador do sistema em relao aos conceitos de funcionamento das redes TCP/IP e da manipulao precisa das regras que so utilizadas pela ferramenta para fazer a validao de cada pacote que trafega pela rede/maquina protegida por este firewall. necessrio portanto, que o administrador seja consciente e tenha claro em sua mente o que deseja quais servios sero protegidos, quais so os endereos que sero aceitos/bloqueados, quais portas tero redirecionamento, etc.

10.2. Tipos de Firewall

De forma simplificada, existem dois tipos de firewall a saber: Nvel de aplicao - Este tipo de firewall, analisa o contedo do pacote para tomar suas decises de filtragem. Firewalls deste tipo, so mais intrusivos (pois analisam o contedo de tudo que passa por ele) e permitem um controle relacionado com o contedo do trfego. Alguns firewalls em nvel de aplicao combinam recursos bsicos existentes em firewalls em nvel de pacotes combinando as funcionalidade de controle de trfego/controle de acesso em uma s ferramenta. Nvel de pacotes - Este tipo de firewall toma as decises baseadas nos parmetros do pacote, como porta/endereo de origem/destino, estado da conexo, e outros parmetros do pacote. O firewall ento pode barrar o pacote (DROP) ou aceit-lo (ACCEPT). O iptables um excelente firewall que se encaixa nesta categoria.

PG.: 94

APOSTILA GNU/DEBIAN AVANADO

10.3. Planejando a Implementao


Antes de iniciar a construo de um firewall, necessrio levar em considerao os seguintes aspectos: Quais servios preciso ser protegidos. Servios que devem ter acesso garantido a usurios externos e quais sero bloqueados a todas ou a determinadas mquinas. recomendvel implantar uma poltica austera de acesso a todas portas menores que a 1024 (portas privilegiadas) por disponibilizarem servios muito importantes. Que tipo de conexes sero bloqueadas/permitidas. Servios com autenticao em texto plano e potencialmente inseguros como rlogin, telnet, FTP, NFS, DNS, LDAP, SMTP RCP, X-Window, etc. so servios que devem ter acesso garantido somente para mquinas/redes que voc confia. Outros fatores que devem ser levados em considerao so: Que mquinas tero acesso livre e quais sero restritas; Que servios devero ter prioridade no processamento; O volume de trfego que o servidor manipular. Atravs disso voc pode balancear o trfego entre outras mquinas, configurar protees contra ataques do tipo DoS, syn flood, etc; Que pacotes tero permisso para trafegar de uma rede para outra. A anlise destes pontos pode determinar a complexidade do firewall, custos de implementao, prazo de desenvolvimento e tempo de maturidade para implementao. Existem muitos outros pontos que podem influenciar a implementao de um sistema de segurana, procuramos elencar aqui, o que consideramos ser os mais comuns para que voc tenha uma base para seu projeto.

10.4. Conhecendo os conceitos do iptables


Neste tpico, explicaremos a estrutura de funcionamento no qual o iptables baseado.

10.4.1. O que so regras?


As regras so como comandos passados ao iptables para que ele realize uma determinada ao (como bloquear ou permitir a passagem de um pacote), de acordo com o endereo/porta de origem/destino, interface de origem/destino, etc. As regras so armazenadas dentro dos chamados chains e processadas na ordem que so inseridas. As regras so armazenadas em memria, o que significa que quando o computador for reiniciado todas sero perdidas. Por este motivo, elas devero ser gravadas em um arquivo para serem aplicadas a cada inicializao do sistema. Um exemplo de regra: iptables -A INPUT -s 123.123.123.1 -j DROP

10.4.2. O que so chains?


Os chains, so locais onde as regras do firewall definidas pelo usurio so armazenadas para operao do firewall. Existem dois tipos de chains: os embutidos (como os chains INPUT, OUTPUT e FORWARD) e os criados pelo usurio. Os nomes dos chains embutidos devem ser especificados sempre em letras maisculas (note que os nomes dos chains devem ser escritos respeitando maisculas e minsculas).

10.4.3. O que so tabelas?


Tabelas so os locais usados para armazenar os chains e um conjunto de regras com uma determinada caracterstica em comum. As tabelas podem ser referenciadas com a opo -t nome do iptables. Por padro, existem 3 tabelas disponveis no iptables: filter Esta a tabela padro, contm 3 chains padres: INPUT - Consultado para os pacotes que chegam a mquina
PG.: 95

APOSTILA GNU/DEBIAN AVANADO

OUTPUT - Consultado para os pacotes que saem da mquina FORWARD - Consultado para os pacotes que so redirecionados para outra interface de rede ou outra mquina. Os chains INPUT e OUTPUT so verificados somente para conexes que se originam na maquina local. nat Usada para pacotes que necessitam criar outra conexo (IP masquerading, source/destination NAT, Port Forwarding e Proxy transparente so alguns exemplos). Possu 3 chains padres: PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam. o chain ideal para realizao de DNAT e redirecionamento de portas. OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente consultado para conexes que se originam de endereos IP de interfaces locais. POSTROUTING - Consultado quando os pacotes precisam ser modificados aps o tratamento de roteamento. o chain ideal para realizao de SNAT e IP Masquerading. mangle Utilizada para alteraes especiais de pacotes (como modificar o Tipo de Servio (TOS) ou outros detalhes). Possu 5 chains padres: INPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain INPUT da tabela filter. FORWARD - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain FORWARD da tabela filter. PREROUTING - Consultado quando os pacotes precisam ser modificados antes de ser enviados para o chain PREROUTING da tabela nat. POSTROUTING - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain POSTROUTING da tabela nat. OUTPUT - Consultado quando os pacotes precisam ser modificados antes de serem enviados para o chain OUTPUT da tabela nat.

10.5. Manipulando Chains


Neste tpico, vamos aprender a gerenciar o iptables. Para isso, necessrio compreender como efetuar algumas operaes bsicas. Os procedimentos de gerenciamento envolvem a criao, modificao, excluso e visualizao do conjunto de regras que so organizadas nos chains, e esses por sua vez, em tabelas.

10.5.1. Adicionando regras


Como exemplo, vamos criar uma regra que bloqueia o acesso a nosso prpria mquina (127.0.0.1). Primeiro, verificaremos com um ping a resposta dada pela maquina: #ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.6 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.5 ms --- 127.0.0.1 ping statistics --2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.5/0.5/0.6 ms Da forma prevista, a mquina deve ter respondido a todas as requisies. Agora, vamos incluir (opo -A) uma regra, no chain INPUT (-A INPUT), da tabela de filtragem (-t filter), que bloqueie (-j DROP) qualquer pacote cujo destino (opo -d) seja o endereo 127.0.0.1 (-d 127.0.0.1): iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
PG.: 96

APOSTILA GNU/DEBIAN AVANADO

Agora verificamos novamente com o comando ping as respostas dadas pela maquina local: #ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --2 packets transmitted, 0 packets received, 100% packet loss Desta vez a mquina no respondeu, pois todos os pacotes com o destino 127.0.0.1 so rejeitados. A opo -A usada para adicionar novas regras ao final do conjunto de regras de cada chain. Alm de -j DROP que serve para rejeitar os pacotes, podemos tambm usar -j ACCEPT para aceitar pacotes. A opo -j chamada de alvo da regra ou somente alvo, pois define o destino do pacote que atravessa a regra. OBS1: - O acesso a interface loopback (127.0.0.1) no deve ser de forma alguma bloqueado permanentemente, pois muitos aplicativos utilizam soquetes TCP para realizarem conexes localmente, caso do gerenciador de janelas X-Windows System. OBS2: - A tabela filter ser usada por padro caso nenhuma tabela seja especificada atravs da opo -t.

10.5.2. Listando regras


A seguinte sintaxe usada para listar as regras criadas: iptables [-t tabela] -L [chain] [opes] Onde: tabela uma das tabelas usadas pelo iptables. Se a tabela no for especificada, a tabela filter ser usada como padro. chain Um dos chains disponveis na tabela citada pelo argumento acima. Caso o chain no seja especificado, todos os chains da tabela sero mostrados. opes: As seguintes opes podem ser usadas para listar o contedo de chains: -v Exibe mais detalhes sobre as regras criadas nos chains. -n Exibe endereos de mquinas/portas como nmeros ao invs de tentar a resoluo DNS e consulta ao /etc/services. A resoluo de nomes pode tomar muito tempo dependendo da quantidade de regras que suas tabelas possuem e da velocidade de sua conexo. -x Exibe nmeros exatos ao invs de nmeros redondos. Tambm mostra a faixa de portas de uma regra de firewall. --line-numbers Exibe o nmero da posio da regra na primeira coluna da listagem. Para listar a regra criada anteriormente usamos o comando: #iptables -t filter -L INPUT Chain INPUT (policy ACCEPT)
PG.: 97

APOSTILA GNU/DEBIAN AVANADO

target DROP

prot opt source all -- anywhere

destination localhost

Os campos exibidos, possuem o seguinte significado: Chain INPUT Nome do chain listado. (policy ACCEPT 78 packets, 5820 bytes) Policiamento padro do chain, neste caso, o padro aceitar os pacotes (policy ACCEPT). Esta linha tambm apresenta o nmero de pacotes, 78 no exemplo, e o nmero de bytes que atravessaram essa regra. pkts Quantidade de pacotes que atravessaram a regra. bytes Quantidade de bytes que atravessaram a regra. Pode ser referenciado com K (Kilobytes), M (Megabytes), G (Gigabytes). target O alvo da regra, o destino do pacote. Pode ser ACCEPT, DROP ou outro chain. Veja Especificando um alvo, Seo 10.3.6 para detalhes sobre a especificao de um alvo. prot Protocolo especificado pela regra. Pode assumir os valores udp, tcp, icmp ou all. opt Opes extras passadas a regra. Normalmente "!". in Interface de entrada (de onde os dados chegam).

out Interface de sada (para onde os dados vo). source Endereo de origem. destination Endereo de destino. outras opes: Estas opes normalmente aparecem quando so usadas a opo -x: dpt ou dpts - Especifica a porta ou faixa de portas de destino. reject-with icmp-port-unreachable - Significa que foi usado o alvo REJECT naquela regra.

10.5.3. Apagando uma regra


Para apagar uma regra, existem duas alternativas: 1. Quando sabemos qual o nmero da regra no chain (listado com a opo -L) podemos referenciar a regra por seu nmero diretamente. Por exemplo, para apagar a primeira regra criada listada: iptables -t filter -D INPUT 1 Esta opo no a mais indicada quando temos um firewall complexo com um
PG.: 98

APOSTILA GNU/DEBIAN AVANADO

grande nmero de regras por chains, neste caso a segunda opo a mais apropriada, veja: 2. Usamos a mesma sintaxe para criar a regra no chain, mas trocamos a opo A por -D: iptables -t filter -D INPUT -d 127.0.0.1 -j DROP Ento a regra correspondentes no chain INPUT da tabela filter ser automaticamente apagada (confira listando o chain com a opo "-L"). Caso o chain possua vrias regras semelhantes, somente a primeira ser apagada. OBS: No possvel apagar os chains padres do iptables (INPUT, OUTPUT...).

10.5.4. Inserindo uma regra


Precisamos que o trfego vindo (opo -s) de 192.168.1.15 no seja rejeitado pelo nosso firewall. No podemos adicionar uma nova regra (com a opo -A) pois esta seria includa no final do chain e o trfego seria rejeitado pela primeira regra (nunca atingindo a segunda). A soluo inserir a nova regra antes da regra que bloqueia todo o trfego para o endereo 127.0.0.1 na posio 1: iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT Aps este comando, temos a regra inserida na primeira posio do chain (repare no nmero 1 aps INPUT) e a antiga regra nmero 1 passa a ser a nmero 2. Desta forma, a regra acima ser consultada, se a mquina de origem possuir o endereo 192.168.1.15, ento os pacotes tero permisso de chegar ao destino (maquina local), caso contrrio, o trfego ser bloqueado pela regra seguinte.

10.5.5. Substituindo uma regra


Aps criarmos a regra exemplificada na seo Adicionando uma regra, percebemos que a nossa inteno, era somente bloquear os pacotes que so enviados pelo utilitrio ping (pacotes ICMP) para o endereo 127.0.0.1, e no havia necessidade portanto, de bloquear todo o trfego que chegasse at a mquina local. Neste caso, existem duas alternativas: a primeira apagar a regra e inserir uma nova no lugar; a segunda, modificar diretamente a regra j criada sem afetar outras regras existentes e manter a sua ordem no chain. Caso voc opte pela segunda alternativa, poder utilizar o seguinte comando: iptables -t filter -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP O nmero 2, representa a regra que ser substituda no chain INPUT da tabela filter, e deve ser especificado obrigatoriamente. O comando acima, substituir a regra 2 do chain INPUT (-R INPUT 2) bloqueando (-j DROP) qualquer pacote do protocolo ICMP (-p icmp) com o destino 127.0.0.1 (-d 127.0.0.1).

10.5.6. Criando um novo chain


Em firewalls organizados com um grande nmero de regras, interessante criar chains personalizados para organizar regras de um mesmo tipo, ou que tenham por objetivo, analisar um trfego de uma mesma categoria (interface, endereo de origem, destino, protocolo, etc), pois podem consumir muitas linhas de chains padres e tornar o gerenciamento do firewall confuso (e conseqentemente causar srios riscos de segurana). O tamanho mximo para um nome de chain de 31 caracteres e podem conter tanto letras maisculas quanto minsculas. O comando para criar novos chains : iptables [-t tabela] [-N novochain] Para criar o chain chamado internet (que pode ser usado para agrupar as regras de acesso a Internet), poderamos usar o seguinte comando, por exemplo:
PG.: 99

APOSTILA GNU/DEBIAN AVANADO

iptables -t filter -N internet Para inserir regras no chain internet, basta especifica-lo aps a opo -A: iptables -t filter -A internet -s 200.200.200.200 127.0.0.1 -j DROP E ento criamos um desvio (opo -j) do chain INPUT para o chain internet: iptables -t filter -A INPUT -j internet Se uma mquina com o endereo 200.200.200.200 tentar acessar sua mquina (127.0.0.1), o iptables consultar as seguintes regras: INPUT ---------------------------------------------------------------| Regra1: -s 192.168.1.15 -d 127.0.0.1 -j DROP | |---------------------------------------------------------------| | Regra 2: -j internet | ---------------------------------------------------------------internet --------------------------------------------------------------------| Regra1: -s 200.200.200.200 -d 127.0.0.1 -j DROP | --------------------------------------------------------------------O pacote que possu o endereo de origem 200.200.200.200, passa pela primeira regra do chain INPUT, a segunda regra deste mesmo chain, direciona o fluxo de checagem para o chain internet. No chain internet, a primeira regra confere com o endereo de origem 200.200.200.200 e o pacote ser bloqueado. Aps o processamento da nica regra existente neste chain (internet), o fluxo de checagem redirecionado ao chain anterior (INPUT), e como no h mais nenhuma regra para ser verificada, o processamento finalizado. -d

10.5.7. Renomeando um chain criado pelo usurio


Se por algum motivo, for necessrio renomear um chain criado por voc, nas tabelas filter, nat ou mangle, isto poder ser feito, usando a opo -E do iptables: iptables -t filter -E nome-antigo novo-nome Note que no possvel renomear os chains padres do iptables (INPUT, OUTPUT,...).

10.5.8. Limpando as regras de um chain


Para limpar todas as regras de um chain, use o seguinte comando: iptables [-t tabela] [-F chain] Onde: tabela a tabela que contm o chain que desejamos excluir todas as regras. chain o chain que desejamos limpar. Caso um chain no seja especificado, todos os chains da tabela tero suas regras excludas. Exemplos: iptables -t filter -F INPUT iptables -t filter -F

PG.: 100

APOSTILA GNU/DEBIAN AVANADO

10.5.9. Apagando um chain criado pelo usurio


Para apagarmos um chain criado pelo usurio, usamos a seguinte sintaxe: iptables [-t tabela] [-X chain] Onde: tabela Nome da tabela que contm o chain que desejamos excluir. chain Nome do chain que desejamos apagar. Caso no seja especificado, todos os chains definidos pelo usurio na tabela especificada sero excludos. Os chains padres do iptables no podem ser apagados. Exemplos: iptables -t filter -X internet iptables -X

10.5.10. Zerando o contador de bytes dos chains


Este comando zera os campos pkts e bytes de uma regra do iptables. Estes campos podem ser visualizados com o comando iptables -L -v. Caso voc deseje reiniciar a contagem de pacotes/bytes de um chain, use a seguinte sintaxe: iptables [-t tabela] [-Z chain] [-L] Onde: tabela Nome da tabela que contm o chain que queremos zerar os contadores de bytes e pacotes. chain Este argumento define o chain que deve ter os contadores zerados. Caso no seja especificado, todos os chains da tabela tero os contadores reiniciados. Note que as opes -Z e -L podem ser usadas juntas, assim o chain ser listado e imediatamente zerado. Isto evita a passagem de pacotes durante a listagem de um chain. Exemplos: iptables -t filter -Z INPUT

10.5.11. Especificando o policiamento padro de um chain


O policiamento padro determina o que acontecer com um pacote quando ele chegar ao final das regras contidas em um chain e no se enquadrar a nenhuma delas. O policiamento padro do iptables "ACCEPT", mas isto pode ser alterado com o comando: iptables [-t tabela] [-P chain] [ACCEPT/DROP] Onde: tabela Tabela que contm o chain que desejamos modificar o policiamento padro. chain Define o chain que ter o policiamento modificado. O chain deve ser especificado obrigatoriamente com este argumento. ACCEPT/DROP ACCEPT faz com os pacotes sejam aceitos caso nenhuma regra do chain se
PG.: 101

APOSTILA GNU/DEBIAN AVANADO

enquadre aquele pacote (usado em regras permissivas). DROP rejeita os pacotes caso nenhuma regra do chain se enquadre (usado em regras restritivas). O policiamento padro de um chain, pode ser exibido atravs do uso do comando iptables -L, conforme o exemplo abaixo: # iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source DROP icmp -- anywhere destination localhost

No exemplo acima, o policiamento padro de INPUT ACCEPT (policy ACCEPT), o que significa que qualquer pacote que no seja rejeitado pelas regras contidas neste chain, sero por padro aceitos pelo sistema. Para alterar o policiamento padro deste chain usamos o comando: iptables -t filter -P INPUT DROP NOTA: Os policiamentos PERMISSIVOS (ACCEPT), normalmente so usados em conjunto com regras restritivas no chain correspondente (tudo bloqueado e o que sobrar liberado), j os policiamentos RESTRITIVOS (DROP), so usados em conjunto com regras permissivas no chain correlato (tudo liberado e o que sobrar bloqueado pelo policiamento padro).

10.5.12. Especificando um endereo de origem/destino


As opes -s (ou src / --source) e -d (ou --dst / --destination) servem para especificar endereos de origem e destino respectivamente. permitido usar um endereo IP completo (como 192.168.1.1), um hostname (nome da maquina), um endereo FQDN (scelepar00001.celepar.parana) ou um par rede/mscara (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24). Caso um endereo/mscara no sejam especificados, assumido o valor 0/0 como padro (todos as mquinas de todas as redes). A interpretao dos endereos de origem/destino dependem do chain que est sendo especificado (como INPUT ou OUTPUT, por exemplo). OBS: Caso seja especificado um endereo FQDN e este resolver mais de um endereo IP, sero criadas vrias regras, uma para cada endereo IP retornado. recomendvel sempre que possvel, a especificao de endereos IP nas regras, pois alm de serem muito rpidos (dispensam resoluo DNS), so mais seguros para evitar que nosso firewall seja enganado por um ataque de IP spoofing. # Bloqueia o trfego vindo da rede 200.200.200.*: iptables -t filter -A INPUT -s 200.200.200.0/24 -j DROP # Bloqueia conexes com o destino 10.1.2.3: iptables -t filter -A OUTPUT -d 10.1.2.3 -j DROP # Bloqueia o trfego da mquina ecelepar00001.celepar.parana com destino a rede # 210.21.1.3. Neste exemplo, nossa mquina possu o endereo 210.21.1.3: iptables -t filter -A INPUT -s ecelepar00001.celepar.parana d 210.21.1.3 -j DROP

10.5.13. Especificando a interface de origem/destino


As opes -i (ou --in-interface) e -o (ou --out-interface), especificam as interfaces de origem/destino dos pacotes. Nem todos as chains aceitam as interfaces de origem/destino simultaneamente, a interface de entrada (-i) nunca poder ser especificada em um chain como o OUTPUT, e a interface de sada (-o) por sua vez,
PG.: 102

APOSTILA GNU/DEBIAN AVANADO

nunca poder ser especificada em um chain como o INPUT. referncia: Tabela Chain Interface Entrada (-i) filter INPUT OUTPUT FORWARD nat PREROUTING OUTPUT POSTROUTING mangle PREROUTING OUTPUT SIM NO SIM SIM NO NO SIM NO

Abaixo uma rpida

Sada (-o) NO SIM SIM NO SIM SIM NO SIM

O caminho do pacote na interface ser determinado pelo tipo da interface e pela posio dos chains nas etapas de seu roteamento. O chain OUTPUT da tabela filter somente poder conter a interface de sada (veja a tabela acima). No caso do chain FORWARD da mesma tabela, podemos perceber que este o nico que aceita a especificao de ambas as interfaces, este um timo chain para controlar o trfego que passa entre as diferentes interfaces de rede do firewall. Por exemplo, para bloquear o acesso do trfego de qualquer mquina com o endereo IP 200.123.123.10, que venha da interface ppp0 (uma placa de fax-modem), podemos utilizar o seguinte comando: iptables -t filter -A INPUT -s 200.123.123.10 -i ppp0 -j DROP A mesma regra pode ser especificada de uma forma um pouco diferente: iptables -t filter -A INPUT -s 200.123.123.10 -i ppp+ -j DROP O sinal de "+" funciona como um coringa, assim a regra ter efeito em qualquer interface de ppp0 a ppp9. As interfaces ativas no momento podem ser listadas com o comando ifconfig. Tambm permitido, especificar uma regra que faa referncia a uma interface que ainda no existe, isto interessante, para conexes intermitentes como o PPP (acesso a Internet via modem). Vamos a outro exemplo, suponha agora que queremos bloquear a passagem de trfego da interface ppp0 para a interface eth1 (uma de nossas redes internas). Podemos fazer isso usando o seguinte comando: iptables -t filter -A FORWARD -i ppp0 -o eth1 -j DROP

10.5.14. Especificando um protocolo


A opo -p (ou --protocol) usada para especificar protocolos que podem ser configurados para uso com o iptables. Os protocolos que podem ser usados so: TCP, UDP e ICMP. Por exemplo, supondo que se deseja rejeitar todos os pacotes UDP vindos do endereo 200.200.200.200, podemos incluir a seguinte regra no iptables: iptables -t filter -A INPUT -s 200.200.200.200 -p udp -j DROP OBS: Os nomes de protocolos podem ser especificados usando letras maisculas ou minsculas.

10.5.15. Especificando portas de origem/destino


As portas de origem/destino devem ser especificadas aps o protocolo, e podem ser precedidas por uma das seguintes opes: --source-port ou --sport - Especifica uma porta ou faixa de portas de origem.
PG.: 103

APOSTILA GNU/DEBIAN AVANADO

--destination-port ou --dport - Especifica uma porta ou faixa de portas de destino.

Uma faixa de portas pode ser especificada atravs do formato PortaOrigem:PortaDestino, conforme exemplificado logo abaixo: iptables -t filter -A OUTPUT -d 200.200.200.200 -p tcp --dport 0:1024 -j DROP No exemplo acima, qualquer pacote com destino 200.200.200.200 na faixa de portas de 0 a 1024 do protocolo TCP ser bloqueado pelo firewall. Caso o argumento relativo a porta de origem de uma faixa de portas no seja especificado, o valor 0 (zero) assumido por padro, caso o argumento no especificado seja a porta de destino, ento, o valor 65535 assumido por padro.

PG.: 104

APOSTILA GNU/DEBIAN AVANADO

11. Compilao do Kernel


Um dos assuntos que mais despertam curiosidades em pessoas que esto aprendendo a administrar o GNU/Linux o Kernel. De forma especial, a compilao do Kernel, uma das atividades que as pessoas ligadas ao Linux mais gostam de mistificar. A compilao do Kernel, exige alguns cuidados claro, mas no de forma nenhuma o bicho de sete cabeas que muitos pintam. Alm do mais, a recompilao do cdigo fonte do ncleo, uma operao que hora ou outra ser necessria para muitos usurios. De fato, muitas vezes o Kernel no oferece suporte nativo a dispositivos de hardware que foram lanados muito recentemente, o que implica na compilao para adicionar um mdulo ou funcionalidade. Em outros casos, interessante compilar para fazer o ncleo ficar sob medida para a maquina a qual ele est instalado, enxugando funcionalidades que no so usadas pelo usurio final e por conseqncia, obtendo um produto menor e em alguns casos com uma melhor performance. Enfim, h muitas razes para realizar a compilao do Kernel. Nesta seo, apresentaremos ao leitor, o procedimento para realizar a compilao de Kernel no GNU/Debian verso etch. O mais importante neste processo todo, que voc busque informaes a respeito do ncleo que ir compilar. H muitas pginas na Internet dedicadas ao Kernel do GNU/Linux, mas realmente interessante, estar sempre a par do que est acontecendo com o kernel atravs do endereo http://kernel.org, pois este o site oficial do desenvolvimento do ncleo do sistema Linux.

11.1. Preparao para Compilao


Antes de mais nada, importante lembrar, que assim como a grande maioria dos cdigos fonte de programas comuns, o Kernel tambm precisa de algumas bibliotecas para ser compilado. As bibliotecas necessrias, podem variar de acordo com a verso e dos recursos do ncleo a serem compilados e das interfaces de configurao pr-compilao que sero utilizadas pelo administrador, para ajustar as opes de compilao que o Kernel possu. Voc poder utilizar o APT, ferramenta de instalao/configurao de pacotes do GNU/Debian, para procurar pelas verses do Kernel oficialmente disponibilizadas pela Debian ou baixar as ltimas verses disponveis do software, atravs do site oficial do Kernel em http:// kernel.org. Recomendamos fortemente, que voc compile verses disponibilizadas oficialmente pelo time da Debian, isto porque, estas verses contem ajustes implementados pela equipe de desenvolvimento do GNU/Debian, que visam adequar o Kernel disponibilizado no site oficial as particularidades do sistema Debian. Caso voc opte por baixar o cdigo fonte via APT, de acordo com nossa recomendao, confira se o arquivo /etc/apt/sources.list est configurado conforme indicado no captulo sobre a instalao do GNU/Debian, deve haver a seguinte linha: Para verificar as verses do Kernel disponveis atravs do APT, execute os comandos: apt-get update apt-cache search linux-image Depois de ter decidido qual verso do ncleo ser compilada, necessitamos baixar o cdigo fonte do mesmo, para posteriormente, instalar as bibliotecas necessrias para sua compilao. A seguir, os procedimentos para realizao de cada uma destas etapas: 1. Baixar o cdigo fonte via APT. Em nosso exemplo, vamos usar o cdigo do ltimo Kernel disponibilizado para o Debian etch, a verso 2.6.18: apt-get source linux-image-2.6.18-5-686 2. Com o comando indicado no primeiro passo, o cdigo ser baixado, extrado e atualizado diretamente no diretrio de compilao padro /usr/src. Agora necessrio baixarmos os pacotes necessrios para compilao da verso do Kernel escolhida. Isto pode ser feito com o seguinte comando: apt-get build-dep linux-image-2.6.18-5-686 3. Instale a biblioteca padro para compilao:
PG.: 105

deb-src http://www.repositorios.eparana.parana/debian/ etch main

APOSTILA GNU/DEBIAN AVANADO

apt-get install libncurses5-dev Agora, podemos modificar algumas opes do arquivo de configurao /etc/kernelpkg.con, do pacote kernel-package, para personalizar a compilao do novo ncleo. Para editar este arquivo, pode-se usar o comando vi /etc/kernel-pkg.conf. Abaixo, os parmetro que alteramos neste arquivo para exemplo. As linhas que iniciam com o caractere # so comentrios e no possuem funcionalidade alguma: ### Arquivo /etc/kernel-pkg.conf ### #Nome do mantenedor do Kernel maintainer := Marcius Marcelo Roger #E-mail do mantenedor email := marcius@celepar.pr.gov.br #Prioridade desta reviso do Kernel. Normalmente utilizamos prioridade baixa (valor Low) priority := Low Depois de realizar as mudanas, necessrio salvar o arquivo de configurao.

11.2. Compilando o Kernel


Os cdigos fontes do Kernel para serem compilados devem estar armazenados logo abaixo do diretrio /usr/src. Caso voc tenha optado por baixar os fontes atravs do APT, eles sero colocados neste local automaticamente. Caso voc tenha pego o arquivo com os fontes no site oficial, ele dever ser descompactado tambm nesta localidade (/usr/src). Como primeiro passo para realizar o processo de compilao, acesse o diretrio gerado pela descompactao do Kernel que ir ser compilado: cd /usr/src/linux-2.6.18 Substitua a pasta linux-2.6.18 do exemplo acima, pelo nome da pasta gerada pela descompactao do Kernel que voc est compilando em seu sistema. Com nosso prximo passo, o processo de compilao ir de fato se iniciar. Vamos usar a interface modo texto do menuconfig para configurar as opes de compilao. Existem outras interfaces como o gconfig, elas permitem fazer a seleo das opes de compilao via ambiente grfico, contudo, essas interfaces demandam a instalao de bibliotecas especificas para sua utilizao. Caso voc esteja interessado em utilizar interfaces de configurao no modo grfico, pesquise as dependncias para compilao do cdigo da interface em questo (gconfig, xconfig, etc.) e instale esse software no sistema antes de tentar compilar o seu cdigo, caso contrrio a compilao da interface no ser possvel. make menuconfig Depois de compilado, o utilitrio de configurao menuconfig ser automaticamente carregado. Nele voc poder configurar todas as opes que desejar para compilar seu Kernel de acordo com suas necessidades. Nos utilitrios de configurao para compilao, como no caso do menuconfig, voc encontrar uma ajuda online que explica o que , e o que faz, cada uma das opes disponveis. Aps configurar todas as opes necessrias, saia do utilitrio atravs selecionando a opo < Exit > do configurador. Voc ser questionado se deseja salvar as alteraes realizadas Do you wish to save your new kernel configuration ?, responda < Yes > para salvar. O prximo passo, limpar os arquivos objetos gerados por compilaes anteriores, isso s realmente necessrio, caso voc j tenha compilado o cdigo do Kernel anteriormente, caso essa seja sua primeira tentativa de compilao, voc poder pular esta etapa. make-kpkg clean Finalmente, chegou a hora de executar o comando que far a compilao do ncleo e criar um pacote (.deb) para instalao apropriada deste no sistema. make-kpkg -append-to-version -personalizado --initrd -us -uc kernel_image
PG.: 106

APOSTILA GNU/DEBIAN AVANADO

No comando acima, os parmetros utilizados tem o seguinte significado: --append-to-version Acrescenta a palavra que voc indicar (no exemplo, "-personalizado") verso do pacote criado. til para diferenciar seu Kernel recompilado de um "oficial"; --initrd Indica que junto com o Kernel, deve ser criado um arquivo "initrd", que o padro da Debian (e o modo mais flexvel). Para mais informaes, "man 4 initrd"; --us e --uc Estas opes fazem com que o pacote seja criado sem uma assinatura GPG e sem modificaes do arquivo changelog, respectivamente. Se desejar entender melhor estas questes, "man dpkg-buildpackage"; kernel_image a ao que o utilitrio make-kpkg vai executar, ou seja, com essa ao, ele cria um pacote no formato Debian com a imagem do Kernel, para que voc possa instal-lo facilmente em seu sistema depois. H outras aes possveis, caso voc esteja curioso, veja a documentao "man make-kpkg". V tomar um caf e relaxe. Essa operao um tanto demorada. Tenha um pouco de pacincia e aguarde o seu trmino. Ao final da compilao, caso o sistema pergunte algo conforme o pargrafo seguinte (por causa do parmetro --initrd): Warning: You are using the initrd option, that may not work unless you have applied the initrd cramfs patch to the kernel, or modified mkinitrd not to use cramfs by default. The cramfs initrd patch, is included in the Debian supplied kernel sources, but is not present in pristine kernel sources. By default, I assume you know what you are doing, and I apologize for being so annoying. Should I abort[Ny]? s digitar "n", e em seguida pressionar <ENTER> para continuar. Agora s instalar o pacote que foi criado pelo utilitrio make-kpkg durante a compilao do cdigo fonte do ncleo. O pacote criado no diretrio um nvel acima a partir de onde foi compilado, ou seja, ele se encontra em /usr/src. Para instalar o pacote execute cada um dos comandos abaixo: cd /usr/src dpkg -i linux-image-2.6.18-5-personalizado_i386.deb Pronto! O sistema j cria e configura automaticamente os arquivos e o gerenciador de boot para inicializao do SO a partir do novo ncleo. Agora basta reiniciar o sistema e testar seu novo Kernel. Caso ocorra algum problema durante este processo, basta reiniciar o computador e iniciar o sistema a partir da imagem antiga do Kernel (a que j existia antes da compilao). Boa sorte !

PG.: 107

APOSTILA GNU/DEBIAN AVANADO

11.3. Utilitrios do Kernel


11.3.1. depmod
Alguns mdulos provem servios (conhecidos como smbolos) que podem usados por outros mdulos do sistema. Se um mdulo utiliza um servio de outro, isto gera uma dependncia. Essas dependncias podem se tornar demasiadamente complexas. O utilitrio depmod, responsvel por analisar o contedo do diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA, e gerar um arquivo (modules.dep) contendo a relao de dependncia de cada mdulo presente naquele diretrio. O utilitrio modprobe necessita de uma lista atualizada de dependncias de mdulos gerada por depmod para poder operar. Em algumas situaes, torna-se necessidade a execuo do comando depmod. Por exemplo, quando um mdulo novo foi instalado no diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA e necessita-se carreg-lo atravs do comando modprobe. depmod [opes] [arquivo] Onde: arquivo o nome do arquivo mdulo que se deseja analisar as dependncias, e por conseguinte, gravar esta informao em um arquivo mantido por depmod. Deve-se informar o caminho completo para o arquivo que se deseja analisar. opes: -a Analisa a dependncia de todos os mdulos do sistema, contidos no diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA. Esta a opo padro caso nenhum arquivo mdulo seja informado. -b diretrio Caso os arquivos de mdulos do sistema no estejam localizados sobre o diretrio normal /lib/modules/VERSO_DO_KERNEL_UTILIZADA, permite especificar um diretrio alternativo para realizar a analise de dependncias. -e Imprime uma lista de todos os smbolos no resolvidos. -n Exibe o arquivo de dependncia na sada padro. -q No exibe mensagens de erro e smbolos ausentes. -r Permite que o usurio root carregue mdulos no pertencentes a ele.

-s Redireciona as mensagens de erro para o mecanismo de log do sistema (syslog). -v Imprime a lista com todos os mdulos processados. -A Faz a atualizao rpida do arquivo de dependncias. Para isso, utiliza a data e hora e verifica as mudanas recentes no diretrio
PG.: 108

APOSTILA GNU/DEBIAN AVANADO

/lib/modules/VERSO_DO_KERNEL_UTILIZADA. -C arquivo Utiliza um arquivo de configurao alternativo em vez de /etc/modules.conf. Tambm possvel usar as configuraes a partir da varivel de ambiente MODULECONF -F arquivo Usa um arquivo de smbolos alternativo para construir as dependncias. Geralmente, se usa uma cpia do arquivo System.map de um outro sistema ou a sada de /proc/ksyms. Exemplos: depmod -a Constri um arquivo de dependncias usando todos os mdulos disponveis no sistema. depmod -n Gera o arquivo de dependncias e o imprime na sada padro (tela). depmod -v /lib/modules/2.6.18-5-k7/kernel/drivers/char/drm/drm.ko Gera as dependncias do mdulo drm.ko e exibe detalhes sobre este procedimento para o usurio.

11.3.2. insmod
Carrega um mdulo do kernel em tempo de execuo. O utilitrio insmod, no resolve dependncias no momento da carregamento de um mdulo. Por essas e outras facilidades, muitos usurios deixaram de usar insmod e passaram a usar o comando modprobe. insmod arquivo [parmetros] Onde: arquivo o arquivo mdulo que se deseja carregar. parmetros So os parmetros do mdulo que esto disponveis para serem utilizados no momento do carregamento do mdulo. Nem todos os mdulos possuem parmetros de carregamento. Exemplos: insmod /lib/modules/2.6.18-5-k7/kernel/drivers/char/drm/drm.ko Carrega o mdulo drm, armazenado no arquivo drm.ko. insmod /lib/modules/2.6.18-5-k7/kernel/drivers/char/drm/drm.ko cards_limit=2 Carrega o mdulo drm, armazenado no arquivo drm.ko, com o parmetro limitador do nmero de placas de vdeo.

11.3.3. lsmod
um comando que lista todos os mdulos carregados pelo kernel, apresentando informaes como: nome do mdulo, tamanho (em unidades de 4 Kb), nmero de mdulos dependentes, e se for o caso, nome dos mdulos dependentes. A mesma informao pode ser obtida em /proc/modules. O comando lsmod no possu parmetros, sendo muito simples de usar. lsmod

PG.: 109

APOSTILA GNU/DEBIAN AVANADO

11.3.4. modinfo
O utilitrio modinfo extra informaes de mdulos do kernel do Linux, para exibilas ao administrador do sistema. Em geral, para se utilizar este comando, fornecido o caminho e o nome de um arquivo mdulo e o modinfo retornar as informaes sobre o mdulo em questo. Algumas vezes, o administrador poder fazer a busca pelo nome oficial do mdulo ao invs do nome do arquivo que utilizado para armazen-lo, neste caso, modinfo consultar o diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA, assim como comando modprobe, para tentar detectar a qual arquivo aquele nome de mdulo se refere, e se possvel, extrair informao a partir dele. Por padro, as informaes mostradas pelo comando modinfo so: nome do mdulo, descrio, autor, licena, dependncias e parmetros. modinfo [opes] arquivo/nome Onde: arquivo/nome Representa o caminho completo do arquivo do mdulo que se deseja consultar, ou apenas, o nome oficial do mdulo em questo. opes: -F campo Exibe apenas a informao contida no argumento campo na tela. Argumentos vlidos para utilizao em campo, so: author, description, license, param, depends, alias, param, depends e filename. -a Lista o nome do autor do mdulo. -d Exibe a descrio do mdulo. -l Exibe a licena. -p Exibe os parmetros para utilizao daquele mdulo. -n O nome do arquivo. Exemplos: modinfo -F author thermal Exibe o nome do autor do mdulo thermal. modinfo /lib/modules/2.6.18-5-k7/kernel/drivers/acpi/thermal.ko Exibe todas as informaes disponveis sobre o arquivo mdulo thermal.ko.

11.3.5. modprobe
Adiciona ou remove mdulos do kernel em tempo de execuo. O modprobe um utilitrio inteligente, capaz de resolver as dependncias de um mdulo que est sendo adicionado ou removido. Assim como acontece com o utilitrio modinfo, voc poder especificar o caminho completo mais o nome do arquivo mdulo, ou apenas, o nome oficial do mdulo para carregar/descarreg-lo com o modprobe. Caso seja informado um nome de mdulo ao invs de um nome de arquivo, o utilitrio ir fazer uma busca no diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA, para tentar carregar/descarregar o mdulo em questo.
PG.: 110

APOSTILA GNU/DEBIAN AVANADO

Em alguns sistemas, o modprobe pode possuir um arquivo de configurao, o /etc/modprobe.conf, e na maioria das vezes, a estrutura de diretrios /etc/modprobe.d/ estar presente, para organizar e facilitar a configurao de um dado conjunto de mdulos daquela maquina. Um mdulo carregado atravs do modprobe, no ser automaticamente carregado na prxima inicializao da maquina. Voc poder especificar os mdulos a serem carregados durante a inicializao do sistema, atravs do arquivo /etc/modules. modprobe [opes] arquivo/nome Onde: arquivo/nome Representa o caminho completo do arquivo do mdulo que se deseja carregar/descarregar, ou apenas, o nome oficial do mdulo em questo. opes: -v Exibe mensagens sobre o que modprobe est fazendo. -C arquivo Ignora as configuraes do arquivo /etc/modprobe.conf e utiliza as configuraes providas por um arquivo alternativo, definido atravs do argumento arquivo, e tambm as definies contidas na varivel de ambiente MODPROBE_OPTIONS. -c Exibe o contedo do arquivo de configurao /etc/modprobe.conf. No utilize esta opo em conjunto com as demais. -i, --ignore-install, --ignore-remove Essa opo faz com que qualquer comando install ou remove do arquivo de configurao /etc/modprobe.conf, seja ignorada. -q Faz com mensagens geradas durante a execuo de modprobe no sejam exibidas para o usurio. -r, --remove Esta opo faz com que um mdulo do kernel seja descarregado. Caso o mdulo contenha dependncias, e caso elas tambm no estejam sendo utilizadas por outros mdulos, elas tambm sero descarregadas. Voc pode especificar mais de um mdulo para ser descarregado na mesma linha de execuo de modprobe, ao contrrio do que acontece na ao de carregamento. -l expresso Lista todos os mdulos contidos no diretrio /lib/modules/VERSO_DO_KERNEL_UTILIZADA, que conferem com o padro fornecido atravs do argumento expresso. O uso de caracteres coringa tambm so permitidos para formar a expresso a ser pesquisada. -a Carrega todos os mdulos contidos na linha de execuo do comando. -t diretrio Restringe a busca, quando a opo -l usada, somente ao diretrio especificado pelo usurio. -s Esta opo faz com que todas as mensagens de erro geradas pela execuo do modprobe, sejam redirecionadas ao mecanismo de log do sistema.
PG.: 111

APOSTILA GNU/DEBIAN AVANADO

--set-version verso Permite que o usurio defina uma verso do kernel a ser utilizada no momento da instalao de um mdulo, ao invs de obter esta informao automaticamente atravs do utilitrio uname (este o padro). --show-depends mdulo Exibe os arquivos mdulo correspondente a cada dependncia que este possu, incluindo o prprio arquivo correspondente ao mdulo em questo. Exibe informao relevante para ser utilizada com o comando insmod. -o nome Permite renomear um mdulo j carregado. Isto til somente no caso de testes, em geral feito por desenvolvedores, j que no possvel carregar mdulos que possuem o mesmo nome. Exemplos: modprobe sis Carrega o mdulo sis, utilizado para placas de vdeo SIS. modprobe -l ther* Lista todos os arquivos de mdulos que iniciam com a expresso ther. modprobe -s -a sis thermal floppy Carrega os mdulos sis, thermal e floppy e redireciona os erros para o sistema de log do Linux (syslog). modprobe -r floppy Descarrega o mdulo floppy. modprobe show-depends thermal Exibe as dependncias para o mdulo thermal, incluindo o prprio arquivo do mdulo em questo. modprobe -o disquete floppy Renomeia o mdulo carregado floppy com o nome disquete.

11.3.6. rmmod
um programa para remover um mdulo carregado da memria (descarregar o mdulo). Muitos usurios tem optado por utilizar o comando modprobe -r em vez de rmmod, pela eficincia e facilidade de uso do primeiro comando. rmmod [opes] mdulo Onde: mdulo o nome oficial do mdulo que se deseja descarregar (remover da memria, desconectar do kernel). opes: -v Imprime as aes que esto sendo realizadas pelo rmmod. -f Opo extremamente perigosa. Fora a remoo de um mdulo do kernel, mesmo que este, esteja sendo utilizado por outros mdulos. S use esta opo em casos emergenciais. -w
PG.: 112

APOSTILA GNU/DEBIAN AVANADO

Faz com que rmmod isole o mdulo em questo, e aguarde at que todos os recursos do sistema no necessitem mais utiliz-lo, e faa a remoo segura do mdulo da memria. -s Envia os erros encontrados durante a operao ao mecanismo de log do sistema (syslog). Exemplos: rmmod drm Remove o mdulo drm da memria (descarrega o mdulo). rmmod -w sis Aguarda at que nenhum outro recurso esteja utilizando o mdulo sis, para descarreg-lo da memria de forma segura. rmmod -f floppy Fora o descarregamento do mdulo do kernel denominado floppy.

11.3.7. sysctl
O utilitrio sysctl uma interface que permite examinar e alterar dinamicamente parmetros do Kernel do GNU/Linux. Geralmente, esses parmetros (identificados como objetos na MIB Management Information Base) so usados para ajustes como limitar o tamanho do segmento da memria compartilhada, o nmero de threads que o SO pode utilizar, o nmero mximo de processos executados pelo sistema, alterar funcionalidades como IP forwarding, restries de segurana para o superusurio (root) e nveis de depurao. A grande vantagem de se alterar parmetros do Kernel via sysctl, que isto evita em muitos casos, a recompilao do ncleo do sistema. O sysctl a ferramenta mais importante do sistema para se fazer ajustes finos de funcionalidades (tunning), e por isso, necessrio que o administrador do sistema domine o uso deste utilitrio, tanto para sanar problemas como para melhorar o desempenho do sistema. sysctl [opes] [varivel] [=valor] Onde: varivel a opo que define a varivel a ser consultada/alterada com o uso de sysctl. valor Esse parmetro s pode ser utilizado com a opo anterior (varivel), e permite estipular o novo valor que dever ser assumido pela varivel que est sendo alterada. opes: -n Esta opo evita que o nome da varivel seja impressa juntamente com seu valor, esta a forma padro da sada do sysctl (ex.: kernel.hostname = ecelepar00001), sendo que somente o valor da varivel ser impresso quando -n for informado. -e Ignora erros quando a varivel informada no existe. -N Imprime o nome da varivel em vez do seu valor. Funciona de modo contrrio a opo -n. -q Por padro, quando um valor alterado, sysctl exibe a alterao realizada na tela. Use esta opo caso voc no deseje este tipo de comportamento.
PG.: 113

APOSTILA GNU/DEBIAN AVANADO

-w Use esta opo para alterar o valor de uma varivel. -p [arquivo] Permite carregar as opes para o sysctl atravs de um arquivo, definido atravs do argumento homnimo ou atravs de /etc/sysctl.conf sem nenhum argumento for fornecido. -a Imprime todas as variveis disponveis no sistema. -A Imprime todas as variveis disponveis no sistema de forma tabulada. Exemplos: sysctl -a Imprime todas as variveis do sistema que o administrador poder modificar. sysctl kernel.hostname Imprime o valor da varivel kernel.hostname no formato padro usado por sysctl. sysctl -w kernel.hostname=maquina Ajusta o valor da varivel kernel.hostname para maquina.

PG.: 114

APOSTILA GNU/DEBIAN AVANADO

12. Anexos
12.1. NFS - Network File System
- Servio de rede que permite o compartilhamento transparente de sistemas de arquivos ou diretrios entre os ns de uma rede. Utiliza a implementao de RPC (Remote Procedure Call), cujos protocolos so descritos usando XDR (eXternal Data Representation). Para exemplificar o uso vamos apenas criar um exemplo para que rapidamente possa estar utilizando esse recurso. Em nosso exemplo teremos apenas um cliente e um servidor com os endereos abaixo: Servidor: 10.15.15.32 Cliente: 10.15.15.45

No servidor proceda da seguinte forma: Para poder utilizar o nfs necessrio instalar os pacotes abaixo: # apt-get install nfs-common nfs-kernel-server portmap O arquivo /etc/exports determina os sistemas de arquivos a serem exportados e abaixo est um exemplo da sintaxe a ser utilizada: /mnt/publico -rw 10.15.15.45 Para que nosso exemplo possa funcionar corretamente, crie no servidor a pasta /mnt/publico com os comandos abaixo: # mkdir /mnt/publico # chmod 777 /mnt/publico Reinicie os servios abaixo para garantir o acesso: # /etc/init.d/nfs-kernel-server restart # /etc/init.d/nfs-common restart # /etc/init.d/portmap restart

Na estao cliente faa do seguinte comando para testar se o sistema de arquivos est disponvel: # mkdir /mnt/publico # sudo mount -t nfs 10.15.15.32:/mnt/publico /mnt/publico # mount No resultado do comando mount dever aparecer a seguinte linha: 10.15.15.32:/mnt/publico on /mnt/publico type nfs (rw,addr=10.15.15.32)

PG.: 115

APOSTILA GNU/DEBIAN AVANADO

12.2. Shell Scripts


Muitas vezes o administrador do sistema ou mesmo usurios comuns, tem a necessidade de executar tarefas rotineiras. A automao de tarefas um dos grandes objetivos que a informtica deve cumprir. Por isso, faremos neste tpico uma rpida introduo sobre o uso de scripts shell. O uso de scripts shell, permite que os usurios automatizem tarefas que so executadas de forma sistematizada, ou seja, sempre da mesma forma, e com isso, economizem tempo e evitem erros. O administrador tambm deve se familiarizar com uso de shell scripts, pelo fato destes serem a base para construo dos pacotes utilizados pelo GNU/Debian. A maioria dos servios do sistema, tambm utilizam scripts para sua manuteno e funcionamento, da a importncia de compreender bem como os shell scripts funcionam. Um shell script, contm os mesmos comandos que utilizamos na linha de comandos, todos organizados de forma lgica, e na maioria das vezes, fazendo uso de estruturas de controle (if, while, test, case,for, etc).

12.2.1. O primeiro script


Como um script um arquivo de texto comum, podemos edit-lo com nosso editor de textos favorito. Em nossos exemplos utilizaremos o vim. Abaixo descreveremos passo passo, como criar nosso primeiro script funcional: 1. Criar o arquivo que armazenar nosso script: vim /home/usuario/primeiro_script 2. Adicionar a chamada ao shell a ser utilizado para interpretar os comandos, na primeira linha do script, inserindo o seguinte texto ao arquivo: #!/bin/bash 3. Inserir nosso primeiro comando ao script, na linha posterior a chamada do shell, ficando o arquivo conforme mostrado a seguir: #!/bin/bash echo Meu script funciona ! 4. O prximo passo, salvar o arquivo (no vim, pressione <ESC> e a seqncia :x) e ajustar a permisso de execuo do arquivo com o comando: chmod +x /home/usuario/primeiro_script 5. A permisso de execuo necessria para tornar o arquivo texto comum num executvel. Agora, vamos testar nosso script, executando-o como um comando qualquer: /home/usuario/primeiro_script 6. Aps digitar o caminho completo para seu script e pressionar a tecla <ENTER>, caso voc tenha feito tudo conforme explicado, voc dever ver a mensagem Meu script funciona ! em sua tela. Caso voc esteja atualmente dentro do diretrio /home/usuario (em nosso exemplo), poder executar o script apenas digitando ./primeiro_script.

12.2.2. Os primeiros erros


muito comum quando estamos aprendendo cometer muitos erros. Listaremos aqui, os erros mais comuns que podem acontecer durante a criao e execuo dos seus primeiros scripts: Arquivo ou diretrio no encontrado Este erro significa que o interpretador de comandos (o bash, em nossos exemplos) no encontrou o arquivo que contm o seu script. Verifique se voc est invocando o script usando o caminho correto, ou se realmente, o arquivo foi criado e est armazenado no caminho que voc est indicando para execuo.

Permisso negada
PG.: 116

APOSTILA GNU/DEBIAN AVANADO

Este erro ocorrer caso voc esteja tentando executar um arquivo, o qual no possua permisso de execuo (permisso x, concedida com o comando chmod), ou caso voc no possua permisses efetivas para executar o arquivo, ou seja, no seja o dono do arquivo, nem faa parte do grupo de acesso e a permisso para outros no conceda permisso de execuo. Erro de sintaxe Isso acontecer caso seu arquivo seja encontrado, voc possua as devidas permisses para execut-lo, mas o arquivo contenha erros de sintaxe no uso dos comandos que voc inseriu. Lembre-se, os comandos devem ser utilizados com 100% de acurcia em relao a sua sintaxe, para que o script possa ser executado sem erros.

12.2.3. Melhorando seu primeiro script


Vamos incrementar o nosso pequeno script. Como voc j conhece os passos para criao e execuo do arquivo, pularemos esta parte e iremos mostrar o script que implementaremos: #!/bin/bash #Vamos saudar o usurio. #O "\n" um cdigo especial para inserir uma nova linha. echo -e "Bom dia $USERNAME, hoje : \n" date echo -e "\n" echo "Voc quer ter mais informaes ? [s\n]" #L a resposta informada pelo usurio. #RESPOSTA uma varivel. read RESPOSTA #O comando test, testa a resposta dada pelo usurio. #Se for diferente de "s", ento a execuo do script finalizada. test "$RESPOSTA" != "s" && exit #O \t um cdigo especial para insero de espaamento tabulado. echo -e "\t Uso do disco:\n" df echo -e "\n" echo -e "\t Uso da memria: \n" free

12.2.4. Expresses aritmticas


Voc tambm pode realizar clculos matemticos simples (somar, subtrair, multiplicar e dividir) usando o shell. Veja o exemplo abaixo: #!/bin/bash #Efetua um clculo matemtico simples. echo -e 2 x 3 = $((2*3)) echo -e (5 + 3)/2 = $(((5+3)/2)) echo -e 4 - 2 = $((4-2)) Perceba que para realizar os clculos, necessrio que os operandos e operadores estejam entre a expresso "$((...))". Caso voc necessite executar clculos mais complexos via linha de comando, poder instalar alguns utilitrios que atuam no modo texto, especialmente criados para esta finalidade como o pacote wcalc.

12.2.5. Recebendo argumentos do shell


PG.: 117

APOSTILA GNU/DEBIAN AVANADO

Muitas vezes, preciso que o usurio informe parmetros que vo nortear a execuo de um script. Nestes casos, podemos capturar os argumentos enviados pelo usurio atravs da linha de execuo do script, para us-los de alguma forma no decorrer do fluxo de execuo do prprio script. Por exemplo, suponha que o usurio tenha executado o script com o comando abaixo: # ./meu_script Marcius Malta O nosso script est preparado para tratar os argumentos que foram enviados via linha de comando. Ele primeiro imprimir o primeiro e o segundo argumento, e depois, unir e imprimir os dois. Veja como ele foi organizado para isto: #!/bin/bash #Imprime o valor do primeiro parmetro. echo -e Primeiro parmetro: $1 \n #Imprime o valor do segundo parmetro. echo -e Segundo parmetro: $2 \n #Junta e imprime os parmetros. echo -e $1 $2 Como resultado, a terceira linha do script dever mostrar a frase Primeiro parmetro: Marcius quando executada, a quinta linha Segundo parmetro: Malta e a ltima linha, Marcius Malta.

12.2.6. Estruturas de controle


Neste tpico explicaremos o uso das estruturas de controle mais utilizadas: if, while, for e case. Para utilizar qualquer uma das estruturas de controle, fundamental zelar pela sintaxe de utilizao de cada estrutura. Tudo deve ser rigidamente obedecido afim de evitar erros de sintaxe durante a execuo do script. Para testar valores em cada uma das estruturas que apresentaremos a seguir, voc poder utilizar os seguintes operadores sobre os operandos que desejar nas estruturas de teste em questo: Operador Significado -eq Igual != Diferente -gt Maior -lt Menor && E lgico || OU lgico -d Se for um diretrio -e Se existir -z Se estiver vazio -f Se contiver texto -o Se o usurio for o dono -r Se o arquivo pode ser lido -w Se o arquivo pode ser alterado -x Se o arquivo pode ser executado

A estrutura if O if a estrutura de testes condicionais. Ele semelhante ao if utilizado na linguagem C/C++. Abaixo a sintaxe de uso: if TESTE then comandos elif TESTE comandos else comandos
PG.: 118

APOSTILA GNU/DEBIAN AVANADO

fi Exemplos: Exemplo 01: Testa se o arquivo chamado meu_texto.txt existe. #!/bin/bash #Testa se o arquivo chamado meu_texto.txt existe. #Note que os espaos utilizados so obrigatrios. if [ -e /home/usuario/meu_texto.txt ] #Note tambm, que o then fica numa linha prpria. then echo O arquivo existe. else echo O arquivo no existe. fi Exemplo 02: Testa se um nmero maior do que outro. #!/bin/bash #Testa se o arquivo chamado meu_texto.txt existe. #Note que os espaos utilizados so obrigatrios. if [ 5 -gt 4 ] #Note tambm, que o then fica numa linha prpria. then echo Sim, 5 maior do que 4. else echo No, 5 no maior do que 4. fi Exemplo 03: Faz dois testes numricos usando o E lgico. #!/bin/bash #Testa se o arquivo chamado meu_texto.txt existe. #Testando se as duas condies so verdadeiras. if [ 5 -eq 5 ] && [ 3 -gt 5 ] #Note tambm, que o then fica numa linha prpria. then echo Sim, as duas condies so verdadeiras. else echo No, pelo menos uma condio est errada. fi A estrutura while O while uma das estruturas de repetio utilizadas em shell scripts. Abaixo, a sintaxe de uso: while TESTE do comandos done

Exemplos: Exemplo 01: Imprime a frase Isto um teste sete vezes. #!/bin/bash #Inicializa a varivel var com valor 0 (zero). var="0" while #Testa se o valor de var menor do que 7. [ $var -lt 7 ] do echo "Isto um teste"
PG.: 119

APOSTILA GNU/DEBIAN AVANADO

#Incrementa o valor da varivel var var=$(($var + 1)) done A estrutura for uma outra estrutura de repetio, assim como while. A seguir, a sintaxe de utilizao: for VARIVEL in LISTA do comandos done

ou, podemos utilizar o formato ANSI C/C++: for ((EXPRESSO1;EXPRESSO2;EXPRESSO3)) Exemplos: Exemplo 01: Imprime a frase Isto um teste sete vezes. #!/bin/bash #Inicializa a varivel var com valor 0 (zero). var="0" #Usa o comando seq para gerar uma seqncia de 7 repeties. for var in $(seq 7) do echo "Isto um teste" done A estrutura case uma estrutura de deciso, ainda mais sofisticada que if. A seguir, a sintaxe de utilizao: case VARIVEL in VALOR1) comandos;; VALOR2) comandos;; VALOR3) comandos;; *) comandos;; esac

Exemplos: Exemplo 01: Detecta o nmero digitado pelo usurio ou retorna uma mensagem de erro. #!/bin/bash echo "Digite um nmero entre 0 e 2:" #L a varivel numero a partir da entrada do usurio. read numero #Determina o valor da varivel atravs da estrutura de controle. case $numero in 0) echo "O numero zero foi digitado.";; 1) echo "O numero um foi digitado.";; 2) echo "O numero dois foi digitado.";; *) #Caso o valor no corresponda a nenhuma das opes: echo "Voc digitou um caractere invlido.";;
PG.: 120

APOSTILA GNU/DEBIAN AVANADO

esac

12.2.7. Funes
Funes so aglomerados de comandos que podem ser definidos para uso posterior em qualquer parte do cdigo. Praticamente todas as linguagens usam funes que ajudam a organizar o cdigo. Vejamos a sintaxe de uma funo: nome_da_funcao() { comandos } O corpo das funes devem construdos sempre antes de serem utilizados, caso contrrio, o sistema retornar um erro do tipo command not found, que significa que a funo em questo no pode ser encontrada. Exemplo: #!/bin/bash #Corpo da funo mostra_data. mostra_data(){ date } #Corpo da funo mostra_calendario. mostra_calendario(){ cal } echo "Digite 1 para exibir a data, ou 2, para o calendrio:" #L a varivel numero a partir da entrada do usurio. read numero #Determina o valor da varivel atravs da estrutura de controle. case $numero in 1) #Chama a funo mostra_data. mostra_data;; 2) #Chama a funo mostra_calendario. mostra_calendario;; *) #Caso o valor no corresponda a nenhuma das opes: echo "Voc digitou uma opo invlida.";; esac

12.2.8. sed
O utilitrio sed um editor de streams. Um programa desta natureza, usado para realizar transformaes num arquivo de texto ou num pipe (fluxo de dados). Sed bastante til para fazer trocas de letras, palavras ou linhas inteiras de texto. uma ferramenta largamente utilizada em scripts shell. Embora a principio, o uso deste utilitrio parea simples, ele um dos programas mais poderosos do mundo Linux. possvel realizar operaes que demandariam um grande esforo manual e um trabalho de edio de dados muito complexo, atravs de um script sed. sed [opes] [script] [arquivo/pipe] Onde: script um conjunto de comandos do sed e dados, que definem o que ser alterado no arquivo definido pelo argumento que denominamos arquivo.
PG.: 121

APOSTILA GNU/DEBIAN AVANADO

arquivo/pipe a fonte dos dados que desejamos modificar. opes: -e [script] Opo utilizada para executar um script (comandos e dados) sed, presente na prpria cadeia de execuo do comando (in line script). -f [arquivo] Permite especificar um arquivo que contenha um script (comandos e dados) sed. Esta uma opo interessante, quando necessrio executar muitas operaes do sed sobre um mesmo arquivo. -i Utiliza o prprio arquivo fonte de dados para gravar as alteraes.

-n Modo silencioso, impede que os resultados dos comandos do sed sejam impressos na sada padro (monitor). Por padro, caso no seja utilizado o parmetro i, sed imprimir o resultado da execuo de seus comandos para sada padro. Caso n seja utilizado em conjunto com -e, somente a sada decorrente do script a ser executado pelo segundo parmetro ser exibida na sada padro. Comandos Internos H ainda, comandos internos do sed que so usados para desempenhar as diversas funes com relao a edio de streams. Estes comandos so utilizados para compor os scripts sed. Abaixo uma breve descrio sobre os principais comandos que o utilitrio possu: q Permite que o usurio informe em qual linha do processamento da fonte dos dados (arquivo ou pipe) o sed deve encerrar sua execuo. Este parmetro deve ser precedido de um nmero indicando a linha em que o processamento ser encerrado. d I Torna a busca pelo padro independente de maisculas e minsculas. Imprime uma linha. Pode ser precedido por um nmero indicando o nmero da linha que se deseja imprimir na sada padro (monitor). Caso o parmetro de linha de comando -n no tenha sido utilizado, imprime o contedo da fonte de dados (arquivo ou pipe). Comando de substituio. Faz com que um determinado padro (expresso) seja substitudo por outro. Trabalha de acordo com o formato, incluindo as aspas: s/string original/string de substituio/ um dos comandos sed mais utilizados. Este comando, possu uma lista de parmetros e sinalizadores, abaixo demonstramos alguns dos mais importantes: \L Torna a string (cadeia de caracteres) minsculo at que \U ou \E seja encontrado na seqencia. \l Torna o prximo caractere da seqencia minsculo. \U
PG.: 122

Exclu um padro (expresso).

APOSTILA GNU/DEBIAN AVANADO

Torna a string (cadeia de caracteres) maiscula at que \L ou \E seja encontrado na seqencia. \u Torna o prximo caractere da seqencia maisculo. \E Para a converso de strings (cadeia de caracteres) iniciada por \L ou \ U. \n Insere uma nova linha na string (cadeia de caracteres). \t Insere um espao de tabulao na string (cadeia de caracteres). \ Caractere de escape. necessrio quando desejamos inserir algum caractere especial, como / (barra) por exemplo, ou quando necessitamos usar um parmetro, como \n (nova linha) exemplificando, dentro de uma string (cadeia de caracteres). g Substitu todas as ocorrncias do padro encontrado na fonte de dados por uma nova expresso. i Ignora maisculas e minsculas na busca pelo padro (expresso) a ser substitudo. [nmero] Um nmero que indica qual das ocorrncias encontradas, e que confere com o padro informado, ser substituda. O escopo de atuao deste sinalizador uma linha. p Imprime linhas de uma fonte de dados (arquivo ou pipe) que esto sendo substitudas. Exemplos: sed n teste.txt Imprime o contedo do arquivo teste.txt na sada padro (monitor). sed -n 2,4p teste.txt Imprime da segunda quarta linha do arquivo teste.txt na sada padro (monitor). sed s/z/marcius/ teste.txt Substitu a primeira ocorrncia da string z de cada linha por marcius, presente no arquivo teste.txt. sed -e 2q -e s/z/marcius/ teste.txt Processa o arquivo teste.txt at o inicio da segunda linha, substituindo a primeira ocorrncia da string z por marcius. sed s/z/marcius/2 teste.txt Substitu a segunda ocorrncia da string z de cada linha, pela string marcius, presente no arquivo teste.txt. sed /^$/d teste.txt Apaga as linhas em branco do arquivo teste.txt. sed /z/d teste.txt Apaga as linhas que contenham a string z do arquivo teste.txt. sed -i s/samba/rede/ teste.txt Substitu a primeira ocorrncia da string samba de cada linha por rede, e grava esta alterao no arquivo teste.txt.
PG.: 123

APOSTILA GNU/DEBIAN AVANADO

sed /CPPC/Id teste.txt > teste_modificado.txt Apaga todas as linhas que contenham a string CPPC, independentemente de maisculas e minsculas, gravando o resultado no arquivo teste_modificado.txt. sed -nf sed.scp teste.txt ### Arquivo sed.scp ### #!/usr/bin/sed -nf s/palavra/frase completa/p 3,5p ### Fim do script ### Exemplo de uso do sed por meio de um arquivo de script. O script acima, faz a substituio da string palavra por frase completa, caso esta substituio ocorra em algum lugar do arquivo alvo, a linha em questo ser exibida na tela. O ultimo comando (3,5p) tem a funo de imprimir da terceira a quinta linha da fonte de dados. Todas as linhas que comeam com o caractere #, so comentrios. Para mais informaes sobre sed, consulte: http://www.gnu.org/software/sed/manual/sed.html http://www.student.northpark.edu/pemente/sed/sed1line.txt http://www.zago.eti.br/script/sed.html

PG.: 124

Você também pode gostar