Você está na página 1de 119

Apostila de introduo ao GNU/Linux

Objetivo do curso:
Esta apostila tem como objetivo ser uma ensinar aos estudantes e entusiastas o sistema operacional GNU/Linux informaes para a operao e manuteno de um ambiente de trabalho utilizando o sistema operacional GNU/Linux (e outros tipos de sistemas operacionais baseados em Unix). Desta forma podemos preparar profissionais competentes para o mercado de trabalho.

Nota de Copyright:
Copyleft 2005 Bruno Csar Brito Sant'Anna Todo contedo aqui contido pode ser livremente copiado, distribudo e modificado mediante os termos da GNU Free Documentation License verso 1.1 ou posterior, publicado pela Free Software Foundation.

Fonte de pesquisa:
Grande parte desta apostila foi baseada no Guia FOCALinux (http://focalinux.cipsga.org.br/) do autor Gleydson Mazioli da Silva. Tambm consultei o e-book Entendendo e dominando o Linux do autor Carlos E. Morimoto disponvel no site http://www.guiadohardware.net/ebooks/linux/index.html. Muita coisa aqui escrita pode ser encontraa na internet utilizando ferramentas de busca. E-books da IBM Developer Works, Escritos por Daniel Robbins, Chris Houser e Aron Griffis disponiveis no site http://www.106.ibm.com/developerworks/edu/l-dw-linuxlpi2-i.html. Uma outra fonte de pesquisa utilizada nesta apostila e que pode ser de grande ajuda o TLDP (The Linux Documentation Project http://www.tldp.org/ )

Contato:
O contato pode ser feito por e-mail: brunocesar@ajato.com.br ou pelo site http://gusl.usjt.objectis.net No site visite o forum e deixe seu comentrio, esta apostila esta em constante desenvolvimento todas as dicas so bem vindas.

Sobre o autor.
Bruno Csar Brito Sant'Anna um universitrio cursando Cincia da computao na Universidade So Judas Tadeu (USJT), atua como profissional de informtica (administrador de rede, programador e tcnico de suporte) nos ltimos quatro anos. Tem alguns artigos publicados em sites de Linux: Utilizando certificados e-CNPJ e e-CPF no Linux: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2466 Rede wireless: autenticao em uma rede WPA: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2100 Monitorando o servidor Jabber 2 com o Bandersnatch: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2335 Servidor Samba com antivrus Clamav: http://www.dicas-l.unicamp.br/dicas-l/20050203.php

Recomendaes:
Para um bom aproveitamento do contedo desta apostila sugiro que siga as seguintes recomendaes:

Pratique imediatamente o que aprendeu, desta forma o conhecimento recm adquirido ser fixado com mais facilidade. preciso interesse em aprender, se tiver vontade de aprender algo, voc ter menos dificuldade do que algo que no gosta e est se obrigando. Decorar no adianta, pode at atrapalhar seus estudos, algumas vezes nos vemos forados a decorar alguns comandos mas o objetivo entender qual a funo deste comando.

_____________________________________________________________________________Pgina 1

ndice:
Prefacio Apresentao Como ser a sua aula Requisitos necessrios Mercado de trabalho para administradores Linux Captulo 1 Conhecendo o GNU/Linux 1.1.O que o GNU/Linux 1.2.Caractersticas 1.3.Distribuies de Linux 1.4.Conceitos utilizados 1.4.1.Kernel 1.4.2.Mdulos do Kernel 1.4.3.Shell 1.4.4.Arquivos 1.4.5.Diretrios 1.4.6.Login / Logout 1.5.Exerccios Captulo 2 Introduo ao bash 6.1.Bash 6.2.Comando cd 6.3.Paths 2.3.1.Comando pwd 2.3.2.Path absoluto 2.3.3.Path relativo 6.4.Atalhos para paths 2.4.1.Atalho . 2.4.2.Atalho .. 2.4.3.Atalho ~ 2.4.4.Atalho - 6.5.Exerccios Captulo 3 Comandos bsicos. 3.1.Utilizao de comandos no GNU/Linux e pginas do manual 3.2.Comandos para manuseio de arquivos e diretrios 3.2.1.Comando touch 3.2.2.Comando mkdir 3.2.3.Comando mv 09 09 10 10

12 12 13 15 15 15 15 16 17 17 17

19 19 20 20 20 20 21 21 21 21 22 22

24 25 25 25 26

_____________________________________________________________________________Pgina 2

3.2.4.Comando cp 3.2.5.Comando rm 3.2.6.Comando rmdir 3.3.Comando ls 3.4.Exerccios Captulo 4 Wildcards, links e redirecionamentos 4.1.Wildcards 4.1.1.Sintaxe * 4.1.2.Sintaxe ? 4.1.3.Sintaxe [ ] 4.1.4.Sintaxe [!] 4.1.5.Formatao de wildcards 4.2.Links 4.2.1.Soft Links 4.2.2.Hard Links 4.3.Redirecionamento 4.3.1.Pipe 4.3.2.> 4.3.3.>> 4.3.4.<< 4.4.Exerccios

26 26 26 27 29

31 31 31 32 32 32 33 33 34 35 35 36 36 37 37

Captulo 5 Hierarquia do sistema de arquivos. Localizando arquivos e diretrios. 5.1.Hierarquia do sistema de arquivos 40 5.2.Localizando arquivos 41 5.2.1.O $PATH 41 5.2.2.Comando whereis 41 5.2.3.Comando locate 41 5.2.4.Comando find 42 5.3.Exerccios 43 Captulo 6 Expresses Regulares. Controle de Processos. 6.1.Expresses regulares 6.1.1.Texto simples 6.1.2.Sintaxe . 6.1.3.Sintaxe [ ] 6.1.4.Sintaxe [^] 6.1.5.Sintaxe * 6.1.6.Sintaxe ^ e $

45 45 45 45 46 46 46

_____________________________________________________________________________Pgina 3

6.2.Controle de processos 6.2.1.Iniciando um aplicativo 6.2.2.Parando um aplicativo 6.2.3.Listando processos 6.2.4.Foreground e background 6.2.5.Finalizando um aplicativo 6.2.6.Iniciando um aplicativo em background 6.2.7.Mltiplos processos em background 6.2.8.Prioridades de processos 6.3.Exerccios Captulo 7 Usurios, grupos e permisses de acesso 7.1.Usurios 7.1.1.Usurio root 7.1.2.Usurio normal 7.1.3.Criando um usurio 7.1.4.Modificando um usurio 7.1.5.Modificando o password 7.1.6.Excluindo um usurio 7.2.Grupos 7.2.1.Criando um grupo 7.2.2.Excluindo um grupo 7.3.Permisses de acesso 7.3.1.Verificao de conta 7.3.2.Verificao de permisses com ls -l 7.3.3.Definindo posse de arquivos e diretrios por usurio com chown 7.3.4.Definindo posse de arquivos e diretrios por grupo com chgrp 7.3.5.O comando chmod 7.3.6.Definindo permisses de acesso por triplets 7.3.7.Definindo permisses de acesso pelo modo numrico 7.4.Permisses especiais 7.4.1.Umask 7.4.2.Suid 7.4.3.Sgid 7.4.4.Sticky 7.5.Exerccios Captulo 8 Instalando programas e trabalhando pacotes binrios 8.1.Instalando novos programas 8.2.Compilando pelo cdigo-fonte 8.2.1.Obtendo programas 8.2.2.Descompactando/Desempacotando

47 47 47 47 48 49 49 50 50 51

53 53 53 54 54 55 55 55 55 56 56 56 57 58 58 59 59 60 60 60 61 62 62 62 64 64 64 65

_____________________________________________________________________________Pgina 4

8.2.3.Arquivos README/INSTALL 8.2.4.Script configure 8.2.5.Compilando com make 8.2.6.Instalando com make install 8.2.7.Resumo da instalao por cdigo fonte 8.2.8.Resolvendo problemas 8.2.9.Desinstalando com make uninstall 8.3.Trabalhando com pacotes binrios 8.4.Empacotamento RPM 8.4.1.Obtendo pacotes RPM 8.4.2.Instalando pacotes RPM 8.4.3.Resolvendo dependncias 8.4.4.Atualizando pacotes RPM 8.4.5.Forando a instalao de pacotes 8.4.6.Gerenciamento de pacotes RPM 8.4.7.Desinstalando pacotes RPM 8.5.Empacotamento Debian 8.5.1.Ferramenta apt 8.5.2.O arquivo /etc/apt/sources.list 8.5.3.Atualizando a lista de pacotes disponveis via apt 8.5.4.Instalando pacotes Debian via apt 8.5.5.Atualizando pacotes Debian via apt 8.5.6.Removendo pacotes via apt 8.5.7.Outras formas de obter pacotes Debian 8.5.8.Instalando / atualizando pacotes Debian 8.5.9.Resolvendo dependncias 8.5.10.Forando a instalao de pacotes Debian 8.5.11.Desinstalando pacotes Debian 8.6.Exerccios Captulo 9 Interface Grfica: Servidor X 9.1.O que o servidor X? 9.1.1.Configurando o servidor X 9.1.2.Iniciando e finalizando o servidor X 9.2.Window Managers 9.3.KDE 9.3.1.Configurando o KDE 9.3.2.Otimizando o KDE 9.4.GNOME 9.4.1.Configurando o GNOME

65 65 66 66 67 67 67 67 68 69 69 69 70 71 71 72 73 73 75 77 77 77 78 78 78 79 80 80 80

82 82 83 83 83 84 84 85 85

_____________________________________________________________________________Pgina 5

9.4.2.Otimizando o GNOME 9.5.Outros Window Managers Captulo 10 Configurando o Sistema 10.1.Introduo aos mdulos do kernel 10.2.Configurando placas de rede 10.3.Configurando placas de rede Wi-Fi 10.4.Configurando placas de som 10.5.Configurando modem 10.6.Configurando impressoras 10.7.Configurando scanners 10.8.Configurando multi-funcionais 10.9.Configurando gravadores de CD/DVD 10.10.Configurando cmeras digitais Captulo 11 Acessando a rede 11.1.Configurando a rede 11.2.Configurando via DHCP 11.3.Acessando a Internet 11.3.1.Discando via modem 11.3.2.Acessando via banda-larga 11.4.Acessando uma rede Windows 11.4.1.Apresentando o Samba 11.4.2.Configurando o Samba via SWAT 11.4.3.Montando uma unidade de rede 11.4.4.Compartilhando diretrios 11.4.5.Compartilhando impressoras 11.5.Acessando uma rede Linux 11.5.1.Montando uma unidade de rede 11.5.2.Compartilhando uma unidade de rede

86 86

88 88 90 90 92 92 94 94 95 96

98 98 98 99 99 100 100 100 102 102 103 103 103 103

Apndice A Instalando o GNU/Linux (Distribuio Fedora Core 2) A.1.Consideraes iniciais A.1.1.Onde conseguir o Linux? A.1.2.Outros meios de instalao A.2.Bootando o Linux A.3.O Instalador A.3.1.Definindo o perfil da instalao A.3.2.Particionando o disco rgido

106 106 106 107 107 110 111

_____________________________________________________________________________Pgina 6

A.3.3.Configurando o Bootloader (GRUB) A.3.4.Configurando a rede A.3.5.Idioma Padro / Zona de Horrio A.3.6.Senha de root A.3.7.Finalizando

114 114 115 116 116

_____________________________________________________________________________Pgina 7

Aula inicial, sero apresentados os materiais do curso, a metodologia utilizada em classe e o professor. Tambm sero apresentados os requisitos necessrios para o curso e uma perspectiva do mercado de trabalho.

_____________________________________________________________________________Pgina 8

Apresentao
Esta apostila foi desenvolvida especialmente para o curso de sistemas operacionais do IDEPAC, com os principais comandos e rotinas utilizadas no Linux, cobrindo grande parte das duvidas e tarefas que um administrador de sistemas deve desempenhar em uma empresa. Sero cobertas desde a introduo ao Linux at rotinas avanadas de administrao. Em todos os captulos colocarei links para sites da internet onde podem ser encontradas mais informaes sobre o tpico abordado. Para melhorar o entendimento do curso, dividi em captulos os temas do curso, todos podem ser acompanhados pelo ndice que esta acima listado. Voc provavelmente estar lendo esta apostila por um programa chamado Adobe Acrobat Reader, o que torna a navegao mais rpida, basta ir ao ndice, verificar a pagina que contem o contedo da aula, depois disso vamos clicar na caixa branca abaixo do programa e especificamos a pagina. Um exemplo abaixo:

Exemplo de utilizao do Acrobat na leitura da apostila.

Como ser a sua aula


O computador que voc vai utilizar j tem GNU/Linux instalado, a apostila ser acompanhada pelo prprio computador, na lousa em todo inicio de aula estar escrito o tema e a pagina que se encontra o assunto do dia, cabendo-lhe a tarefa de ao iniciar a aula abrir a apostila e j ir para a pagina especificada na lousa. A navegao pela internet ficar desligada, podendo no entanto ser requisitada pelo professor quando for utilizada. Para um melhor aprendizado, recomendo que todas as aulas crie um arquivo simples de texto e escreva com suas palavras o que foi discutido, o que foi aprendido e salve em seu prprio disquete. Ao final da aula haver uma lista de exerccios para fixao de contedo
_____________________________________________________________________________Pgina 9

aprendido, com alguns comandos teis.

Requisitos necessrios
Por ser um sistema operacional avanado, o Linux requer alguns conhecimentos que foram abordados nos mdulos anteriores do curso do IDEPAC e/ou conhecimentos equivalentes: Conhecimento bsico em internet. Conhecimento bsico em redes de computadores. Conhecimento com editores de texto. Conhecimento bsico em Hardware.

Mercado de trabalho
O Linux um sistema operacional com o foco corporativo, ou seja sua utilizao ampla em empresas, pois tem trs fatores decisivos que tornam vivel sua implementao; segurana, estabilidade e baixo custo. O mercado de trabalho para ns administradores de sistemas com conhecimento Linux bem promissor, grande parte das empresas j esto em processo de migrao. Um outro fator positivo para estudantes e profissionais de Linux, o governo brasileiro e favorvel implementao de software livre em reparties pblicas e instituies governamentais em geral. Por outro lado, a utilizao em computadores pessoais, tambm chamados de desktops baixa se comparada com outros sistemas operacionais, sendo utilizada em casos distintos. O Linux ainda est em processo de crescimento, nos prximos anos a tendncia e de que se estabilize tanto no mercado corporativo quanto no mercado de computadores pessoais.

_____________________________________________________________________________Pgina 10

Neste captulo ser apresentado ao aluno o Sistema Gnu/Linux, suas caractersticas e seus principais conceitos. Ao final deste captulo voc ser capaz de:

Reconhecer um sistema GNU/Linux. Observar as principais caractersticas deste sistema operacional. Escolher, localizar e fazer o download de um sistema Linux distribudo pela internet por meio de Distribuies Linux. Entender os termos e conceitos do sistema.

_____________________________________________________________________________Pgina 11

1.1. O que o GNU/Linux


O GNU/Linux, ou simplesmente Linux um sistema operacional criado em 1991 por Linus Torvalds na universidade de Helsinki Finlndia. um sistema operacional de cdigo aberto distribudo gratuitamente pela Internet. Voc no precisa pagar nada para utilizar, no crime fazer copias e instalar em diversos computadores. Diante disto a comunidade Linux cresce de uma maneira impressionante, muitos desenvolvedores e usurios contribuem com o Linux fazendo otimizaes e melhorias diversas. Um bom exemplo so as tradues feitas para o portugus do Brasil.

1.2. Caractersticas

A lista abaixo foi copiada do Guia FocaLinux. livre e desenvolvido voluntariamente por programadores experientes, hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a contribuio para a melhoria e crescimento deste sistema operacional. Convive sem nenhum tipo de conflito com outros sistemas operacionais (com o DOS, Windows, OS/2) no mesmo computador. Multitarefa real . Multiusurio . Suporte a nomes extensos de arquivos e diretrios (255 caracteres) . Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha, PowerPc, ARM, Unix, Windows, DOS, etc. Proteo entre processos executados na memria RAM . Suporte a mais de 63 terminais virtuais (consoles) . Modularizao - O GNU/Linux somente carrega para a memria o que usado durante o processamento, liberando totalmente a memria assim que o programa/dispositivo finalizado . Devido a modularizao, os drivers dos perifricos e recursos do sistema podem ser carregados e removidos completamente da memria RAM a qualquer momento. No h a necessidade de se reiniciar o sistema aps a modificar a configurao de qualquer perifrico ou parmetros de rede. Somente necessrio reiniciar o sistema no caso de uma instalao interna de um novo perifrico, falha em algum hardware (queima do processador, placa me, etc.). No precisa de um processador potente para funcionar. O sistema roda bem em computadores 386Sx 25 com 4MB de memria RAM (sem rodar o sistema grfico X, que recomendado 8MB de RAM). O crescimento e novas verses do sistema no provocam lentido, pelo contrrio, a cada nova verso os desenvolvedores procuram buscar maior compatibilidade, acrescentar recursos teis e melhor desempenho do sistema . No requerida uma licena para seu uso. O GNU/Linux licenciado de acordo com os termos da GPL. Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2, NTFS, SunOS, Amiga, Atari, Mac, etc. Utiliza permisses de acesso a arquivos, diretrios e programas em execuo na memria RAM. NO EXISTEM VRUS NO LINUX! Em 13 anos de existncia, nunca foi registrado NENHUM tipo de infeces desde que respeitadas as recomendaes padro de poltica de segurana e uso de contas privilegiadas (como a de root, como veremos adiante). Rede TCP/IP mais rpida que no Windows e tem sua pilha constantemente melhorada. O GNU/Linux tem suporte nativo a redes TCP/IP e no depende de uma camada intermediria como o WinSock. Em acessos via modem a Internet, a velocidade de transmisso 10% maior. Roda aplicaes DOS atravs do DOSEMU Roda aplicaes Windows atravs do WINE. Suporte a rede via rdio amador. Suporte a dispositivos Plug-and-Play.

_____________________________________________________________________________Pgina 12

Suporte a dispositivos USB. Vrios tipos de firewalls de alta qualidade e com grande poder de segurana de graa. Possui recursos para atender a mais de um endereo IP na mesma placa de rede, sendo muito til para situaes de manuteno em servidores de redes ou para a emulao de "mais computadores" virtualmente. O sistema de arquivos usado pelo GNU/Linux (Ext3) organiza os arquivos de forma inteligente evitando a fragmentao e fazendo-o um poderoso sistema para aplicaes multi-usurias exigentes e gravaes intensivas. Permite a montagem de um servidor Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o Apache, distribudo gratuitamente junto com o Linux. O mesmo acontece com o Sendmail. Por ser um sistema operacional de cdigo aberto, voc pode ver o que o cdigo fonte (o que foi digitado pelo programador) faz e adapta-lo as suas necessidades ou de sua empresa. Esta caracterstica uma segurana a mais para empresas srias e outros que no querem ter seus dados roubados. Suporte a diversos dispositivos e perifricos disponveis no mercado, tanto os novos como obsoletos.

1.3. Distribuies de Linux


Por ser um sistema livre, surgiram grupos de pessoas, empresas e organizaes que resolveram distribuir o Linux com pacotes de programas, instaladores prprios e algumas customizaes, que diferenciam-se entre si. Este o conceito principal de distribuio no Mundo Linux. Existem diversas distribuies distintas, cada uma com suas caractersticas. Algumas, recomendadas para iniciantes, outras para usurios avanados. A escolha de uma distribuio uma questo de gosto. Neste curso utilizaremos a distribuio Debian porem aprenderemos conceitos das distribuies mais utilizadas no mercado. Segue abaixo a relao das principais distribuies :
Nome: Site: Caracterstica: Debian www.debian.org O Debian considerado pelos profissionais uma distribuio estvel pois todos os programas inclusos so rigorosamente testados (testes que levam de dois a trs anos). desenvolvido por profissionais e no tem vnculos com nenhuma empresa. Intermedirio / Avanado. Conectiva www.conectiva.com.br O foco da distribuio Conectiva o pblico brasileiro, de fcil utilizao, tem suporte nacional (pago). desenvolvida pela Empresa Conectiva S/A. esta possui diversos cursos de especializao. Iniciante.

Nvel de utilizao: Nome: Site: Caracterstica:

Nvel de utilizao:

_____________________________________________________________________________Pgina 13

Nome: Site: Caracterstica:

Red Hat www.redhat.org A distribuio norte americana Red Hat Linux bem conhecida pelos profissionais pois alm de ser antiga, bem documentada de fcil utilizao e pode ser usada tanto em Desktops quanto em Servidores. Deu origem ao projeto Fedora. Iniciante / Intermedirio. Slackware www.slackware.com A distribuio Slackware j um pouco mais difcil, a maioria das configuraes dela so feitas editando manualmente arquivos de texto, isto um pesadelo para iniciantes mas por outro lado tornase uma distribuio extremamente customizvel, proporcionando um contato direto com o Linux Grande parte de sua documentao encontra-se em ingls. Intermedirio / Avanado. SuSe www.novell.com/linux/suse/ A distribuio alem SuSe de fcil utilizao, tem grande suporte hardware. uma distribuio ideal para quem est comeando pois muito amigvel e tem um sistema de instalao de programas robusto. Pode ser utilizada tanto em Desktops quanto em Servidores Iniciante. Kurumin www.kurumin.org A distribuio brasileira Kurumin de fcil utilizao e tem como foco o usurio iniciante, roda direto do CD-Rom e no necessria a sua instalao. Eu recomendo pessoalmente que seja utilizada s em primeiros contatos com o Linux pois sua utilizao fica limitada sua interface grfica. Usurios que j tem conhecimento no sistema Linux podem utilizar o console de comando mas suas dependncias de pacotes e conflitos de hardware a tornam uma distribuio no indicada para utilizao longo prazo. Iniciante.

Nvel de utilizao: Nome: Site: Caracterstica:

Nvel de utilizao: Nome: Site: Caracterstica:

Nvel de utilizao: Nome: Site: Caracterstica:

Nvel de utilizao:

Foram mencionadas acima somente as distribuies mais conhecidas e comentadas nos ltimos tempos, uma boa fonte de pesquisa demais distribuies no site http://www.linuxiso.org, onde tambm sero encontradas seus CDs para download.

_____________________________________________________________________________Pgina 14

1.4. Conceitos utilizados


No mundo Linux, veremos uma srie de termos estranhos a princpio mas que se tornaro comuns em nosso curso e posterior carreira. Termos o quais nunca ouvimos falar tais como o Kernel, shell e etc. mas que so to importantes para o conhecimento do sistema. Segue abaixo uma explicao sobre os mesmos:

1.4.1. Kernel
Sendo bem claro, o Kernel prprio Linux, ele o corao do sistema, que controla todos os dispositivos do computador (como memria, placas de som, vdeo, discos rgidos, disquetes, sistemas de arquivos, redes e outros recursos disponveis). O Kernel do linux tem o cdigo aberto, desta forma, todos podem editar e compilar o Kernel conforme nossas necessidade, habilitando suporte a novos dispositivos. Mais adiante no curso aprenderemos como modificar e recompilar o Kernel do Linux para habilitar e desabilitar determinadas caractersticas, inclusive a criao de mdulos do kernel, explicados abaixo. O Kernel do Linux desenvolvido por um time de profissionais e pode ser acompanhado pelo seu site oficial: www.kernel.org .

1.4.2. Mdulos do Kernel


Mdulos so partes do Kernel que so carregadas na execuo do sistema com o objetivo de implementar um novo recurso ou servio ao sistema operacional. Podem ser carregados a qualquer hora e descarregados quando no forem mais necessrios, isto til pois economiza recursos computacionais e no requer a inicializao do SO. Um exemplo prtico; para se utilizar uma placa de rede precisamos de um driver certo? Ns indicamos com o comando modprobe modulo_da_placa e nossa placa vai ser habilitada no sistema, caso no precisemos mais utilizar a placa digitamos rmmod modulo_da_placa e a placa ser desabilitada, trataremos de mdulos detalhadamente adiante.

1.4.3. Shell
Shell um interpretador de comandos, ou seja, ele quem traduz uma ordem dada pelo usurio via teclado ao Kernel, existem diversos shell no linux sendo que o padro o Bash. Atravs do shell controlamos o sistema operacional, a utilizao do shell pode parecer primitiva, um usurio de Windows raramente precisa entrar no shell para realizar suas operaes, mas no linux as coisas mudam de figura, todos os programas rodam a partir de um shell inclusive a interface grfica. Mas ento toda vez que formos iniciar um programa precisamos iniciar um shell antes? A resposta no. Podemos abrir programas quando estivermos na interface grfica com cliques em cima dos cones. Comandos executados no shell podem executar tarefas de uma maneira muito mais rpida do que na parte grfica. Aprenderemos diversos comandos do shell adiante.

_____________________________________________________________________________Pgina 15

No caso do exemplo acima, o Terminal um programa chamado Konsole.

No GNU/Linux, em modo texto, voc pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de funo corresponde a um nmero de terminal do 1 ao 6 (o stimo usado por padro pelo ambiente grfico X). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 esto disponveis inicialmente por motivos de economia de memria RAM (cada terminal virtual ocupa aproximadamente 350 Kb de memria RAM) .

1.4.4. Arquivos
Um arquivo pode conter um texto feito por ns, uma msica, programa, planilha, etc. Cada arquivo deve ser identificado por um nome, assim ele pode ser encontrado facilmente quando desejar usa-lo. Se estiver fazendo um trabalho de histria, nada melhor que salva-lo com o nome historia. Um arquivo pode ser binrio ou texto.
texto Seu contedo compreendido pelas pessoas. Um arquivo texto pode ser uma carta, um script, um programa de computador escrito pelo programador, arquivo de configurao, etc. binrio Seu contedo somente pode ser entendido por computadores. Contm caracteres incompreensveis para pessoas normais. Um arquivo binrio gerado atravs de um arquivo de programa (formato texto) atravs de um processo chamado de compilao. Compilao basicamente a converso de um programa em linguagem humana para a linguagem de mquina.

O GNU/Linux Case Sensitive ou seja, ele diferencia letras maisculas e minsculas nos arquivos. O arquivo historia completamente diferente de Historia. Esta regra tambm vlido para os comandos e diretrios. Prefira, sempre que possvel, usar letras minsculas para identificar seus arquivos, pois quase todos os comandos do sistema esto em minsculas.
_____________________________________________________________________________Pgina 16

Um arquivo oculto no GNU/Linux identificado por um "." no inicio do nome (por exemplo, .bashrc). Arquivos ocultos no aparecem em listagens normais de diretrios, deve ser usado o comando ls -a para tambm listar arquivos ocultos.

1.4.5. Diretorios
Diretrio o local utilizado para armazenar conjuntos arquivos para melhor organizao e localizao. O diretrio, como o arquivo, tambm "Case Sensitive" (diretrio /teste completamente diferente do diretrio /Teste). No podem existir dois arquivos com o mesmo nome em um diretrio, ou um sub-diretrio com um mesmo nome de um arquivo em um mesmo diretrio. Um diretrio nos sistemas Linux/UNIX so especificados por uma "/" e no uma "\" como feito no DOS. Diretrios tambm podem ser ocultos utilizando o . antes do nome.

1.4.6. Login / Logout


Login a primeira coisa que aparece quando voc inicia o Linux, ele pede usurio e senha assim como sites de webmail, desta forma o sistema tem um controle de dos usurrios que acessam a maquina, definindo as suas permisses. Logout a sada do sistema quando so digitados logout, exit, CTRL+D.

Exerccios de fixao
Para fixar o contedo aprendido execute os exerccios abaixo: 1. Abra um shell, e utilize os comandos: a. uname -a para exibir as informaes sobre seu sistema (Respecitiamente: Sistema operacional, nome do host, verso do kernel, data e arquitetura.) b. lsmod para exibir os mdulos do kernel carregados atualmente. c. echo $SHELL para exibir o shell que esta sendo utilizando no momento. d. mkdir primeirodiretorio para criar um diretrio chamado primeirodiretorio. e. touch primeiroarquivo para criar um arquivo sem contedo chamado primeiroarquivo. f. ls para listar os arquivos e os diretrios localizados no local atual (diretrio atual). 2. Crie um arquivo oculto, depois de criado, demonstre que este arquivo existe utilizando o comando ls -a . 3. Efetue o logout do shell atual utilizando o comando logout .

_____________________________________________________________________________Pgina 17

No captulo anterior vimos o shell, e vimos que o padro no GNU/Linux o bash, neste captulo veremos mais funes do bash, comandos bsicos de navegao paths e atalhos de paths. Ao final deste capitulo voc ser capaz de:

Navegar corretamente por diretrios no GNU/Linux Distinguir paths absolutos e paths relativos Dominar os atalhos de navegao

_____________________________________________________________________________Pgina 18

2.1. Bash
Bash o uma abreviao de bourne shell again, vimos no capitulo anterior que ele o shell padro do GNU/Linux. Apesar de sua funo principal ser interpretar comandos dados e passa-los ao kernel, existem outros aspectos importantes que devemos abordar antes de prosseguir no curso. Quando estamos logados no bash a seguinte linha aparece no console: bruno@Shinji:~$ Esta linha representa respectivamente; o usurio logado, o smbolo @ (arroba que em ingls significa at, at em portugus significa em) o hostname (nome da mquina), o diretrio atual (veremos adiante neste captulo que o smbolo ~ indica diretrio home) e finalmente o smbolo $. Quando temos o smbolo $ no final da linha, significa que estamos trabalhando com um usurio normal, ou seja, sem poderes de administrador. O outro smbolo que podemos encontrar no final da linha o #, significa que estamos trabalhando como o usurio root, o usurio root tem poderes de administrador, explicaremos usurios nos captulos posteriores. Desta forma temos certeza de que tipo de conta estamos utilizando, geralmente quando temos um tutorial na internet explicando como instalar algum programa ou outra tarefa similar via console, os autores utilizam estes simbolos para determinar qual comando pode ser executado como usurio normal e qual deve ser executado como usurio root. O bash tambm permite a criao de programas simples, chamados shell scripts, no Apndice B veremos um tutorial de shell scripts. Outra caracterstica importante do bash e que ele pode armazenar variveis de ambiente, o nome do usurio por exemplo fica armazenado na variavel $USERNAME, assim como diversas outras variveis, que podem ser mudadas conforme a necessidade, uma relao completa das variveis de um bash atual pode ser obtida com o comando set.

2.2. Comando cd
Este e tranqilamente o comando mais utilizado no ambiente Linux, serve somente para mudar de um diretrio para outro, permitindo assim a navegao pelo sistema de arquivos: bruno@Shinji:~$ cd / Com o comando acima mudamos para o diretrio / tambm conhecido como diretrio root, que o diretrio que esta no topo da arvore de diretrios.

_____________________________________________________________________________Pgina 19

2.3 Paths
Path em ingls significa caminho, path nada mais e do que o diretrio ou caminho para determinado arquivo ou programa.

2.3.1. Comando pwd


O comando pwd retorna o path atual ( ou diretrio atual ): bruno@Shinji:/$ pwd / Como anteriormente mudamos para o diretrio / com o comando cd o path atual torna-se o diretrio /, vamos agora para um outro diretrio e verificar o path: bruno@Shinji:/$ cd /tmp bruno@Shinji:/tmp$ pwd /tmp O diretrio para o qual mudamos um diretrio absoluto.

2.3.2. Path absoluto


Paths absolutos so os caminhos completos para determinado diretrio, sempre comeam com o caractere / , o que significa que e o caminho desde o diretrio root. Abaixo exemplos de outros paths absolutos: /dev /usr /usr/bin /usr/local/bin

2.3.3. Path relativo


Paths relativos so os caminhos para diretrios que esto dentro do path atual, nunca comeam com o caractere / . Exemplificando; vamos supor que estejamos no diretrio /usr: bruno@Shinji:/tmp$ cd /usr bruno@Shinji:/usr$ pwd /usr Para ir para o diretrio /usr/local/bin usamos o path relativo:

_____________________________________________________________________________Pgina 20

bruno@Shinji:/usr$ cd local/bin bruno@Shinji:/usr/local/bin$ pwd /usr/local/bin Omitimos os campos /usr/ para ir ao diretrio /usr/local/bin. Veja bem que o diretrio /local esta dentro de /usr.

2.4. Atalhos para paths


Para facilitar a navegao foram inventados atalhos para paths mais utilizados.

2.4.1. Atalho .
E o atalho para o diretrio atual, utilizado quando temos que executar algum arquivo que esta no diretrio atual, podemos verificar sua existncia com o comando ls -a : bruno@Shinji:/usr/local/bin$ cd /tmp bruno@Shinji:/tmp$ mkdir novodir bruno@Shinji:/tmp$ cd novodir bruno@Shinji:/tmp/novodir$ ls -a . .. Suponhamos que tenha um programa que queremos executar e este esta no path atual, ento executamos desta forma: ./programa.

2.4.2. Atalho ..
E o atalho para o diretrio acima do atual: bruno@Shinji:/tmp/novodir$ pwd /tmp/novodir bruno@Shinji:/tmp/novodir$ cd .. bruno@Shinji:/tmp$ pwd /tmp

2.4.3. Atalho ~
E o atalho para o diretrio home do usurio atual: bruno@Shinji:/tmp$ cd ~ bruno@Shinji:~$ pwd /home/bruno

_____________________________________________________________________________Pgina 21

Essa linha familiar no? E a mesma linha de quando iniciamos um console :-) Caso precisemos ir para o diretrio home de um outro usurio procedemos da seguinte maneira: bruno@Shinji:~$ cd ~italo bruno@Shinji:/home/italo$ pwd /home/italo

2.4.4. Atalho -
Com este atalho voltamos para o diretrio que estvamos trabalhando anteriormente: bruno@Shinji:/home/italo$ cd bruno@Shinji:~$ pwd /home/bruno

Exerccios de fixao
Para fixar o contedo aprendido execute os exerccios abaixo: 1. Treine a navegao com o comando cd, mude para os diretrios /usr, /tmp, / usr/local/. 2. Analise se os paths abaixo so relativos ou absolutos: a. /usr/local/bin b. local/bin c. /home/bruno d. /etc e. .. f. /usr/local/../local/bin g. ~ 3. Treine a navegao para os atalhos .. , ~ e -. 4. V para o diretrio /aulas/aula2 e execute o arquivo script1.sh com o atalho . .

_____________________________________________________________________________Pgina 22

No captulo anterior vimos o shell com certa profundidade e os atalhos de navegao por diretrios relativos e absolutos. Neste captulo iremos aprender mais alguns comandos do GNU/Linux e a utilizao destes comandos. Ao final deste captulo voc ser capaz de:

Empregar corretamente as sintaxes de utilizao de comandos no GNU/Linux Consultar pginas do manual sobre os comandos do GNU/Linux Manusear arquivos e diretrios Listar o contedo de diretrios Distinguir links, diretrios de arquivos comuns

_____________________________________________________________________________Pgina 23

3.1. Utilizao de comandos no GNU/Linux e pginas do manual


Grande parte dos comandos do GNU/Linux contm uma ou mais opes (geralmente estas opes servem para formatar a sada do comando), desta forma a sua utilizao depende de uma sintaxe, ou seja empregar o comando corretamente. A forma bsica de um comando e esta: $ comando -x -x_por_extenso <informao adicional> Traduzindo a sintaxe acima: $ comando -x -x_por_extenso Bash com usurio normal O comando que iremos executar Opo de execuo do comando, opcional para formatar a sada do comando, um comando pode ter mais de uma opo por vez Uma variaao de como se escreve a opo, para fcil memorizao, geralmente um comando tem uma variao desta forma. por exemplo -l = --list Aparece com -- para evitar confuses. Informao necessria para a utilizao do comando. por exemplo cd /diretorio no caso o /diretorio esta informao.

< informao >

Para obtermos uma lista completa da utilizao de um determinado comando do GNU/Linux consultamos as pginas do manual. O manual do GNU/Linux um manual completo com documentao de comandos e programas do GNU/Linux. Utilizao: $ man comando Por ser um sistema operacional gratuito, podem estar faltando manuais de alguns comandos ou os mesmos podem estar desatualizados. De qualquer forma o manual deve ser consultado primeiro em qualquer ocasio que precise de ajuda. A navegao e efetuada com as setas e quando acabar de ler o manual do comando digite q que fecha a pagina imediatamente. Abaixo a forma como as paginas de manual so formatadas: NAME SYNOPSIS DESCRIPTION Nome do comando e descrio de e uma linha. Como utilizar o comando. Descrio aprofundada sobre a funcionalidade do comando.

_____________________________________________________________________________Pgina 24

EXAMPLES SEE ALSO

Exemplos e sugestes de como utilizar o comando. Tpicos relacionados (geralmente outras paginas de manual)

Estudaremos mais sobre paginas de manual em captulos posteriores.

3.2 Comando para manuseio de arquivos e diretrios.


Entende-se por manuseio a criao, alterao, localizao e excluso de determinado arquivo e/ou diretrio. Para meios didticos, cobrirei a localizao de arquivos no prximo captulo, abaixo vou demonstrar comandos de criao, deslocamento e remoo de arquivos e diretrios.

3.2.1. Comando touch


O comando touch serve, na verdade, para atualizar o horrio de modificao de determinado arquivo, se o mesmo no existir ele cria o arquivo sem contedo. $ touch novoarquivo.txt O comando acima criou o arquivo novoarquivo.txt.

3.2.2. Comando mkdir


O comando mkdir serve para criar um diretrio vazio. $ mkdir dir1 O diretrio dir1/ foi criado. Veja agora o exemplo abaixo:
$ mkdir dir2/dir3 mkdir: cannot create directory 'dir2/dir3': No such file or directory

Isto resulta em erro pois o comando mkdir s pode construir um diretrio por vez, ou seja o diretrio dir3 no pode ser criado se o diretrio dir2 no existe, a maneira correta seria:
$ $ mkdir dir2 mkdir dir2/dir3

Ou ento simplesmente:
$ mkdir -p dir2/dir3

A opo -p permite a criao de mltiplos diretrios de uma s vez.


_____________________________________________________________________________Pgina 25

3.2.3. Comando mv
O comando mv serve para mover arquivos e diretrios de um diretrio para o outro, serve tambm para renomear arquivos e diretrios caso sejam movidos para o mesmo local que esto mas com nomes diferentes. $ mv novoarquivo.txt dir1/ O comando acima moveu o arquivo novoarquivo.txt para o diretrio dir1/ . O mesmo pode ocorrer com diretrios: $ mv dir2/dir3/ dir1/ O comando acima moveu o diretrio dir3/ de dentro do diretrio dir2/ para o dentro do diretrio dir1/.

3.2.4. Comando cp
O comando cp copia arquivos e diretrios. $ cp dir1/novoarquivo.txt dir2/ O comando acima copiou o arquivo novoarquivo.txt que estava no diretrio dir1/ para o diretrio dir2/ , Agora ambos os diretrios dir1 e dir2 possuem o arquivo novoarquivo.txt. Veja agora o exemplo abaixo: $ cp dir2 dir1 cp: omitting directory `dir2/` A segunda linha demonstra o erro resultante na tentativa de copia de um diretrio para outro, para corrigir este erro utilize a opo -r. $ cp -r dir2 dir1

3.2.5. Comando rm
O comando rm remove os arquivos especificados. $ rm dir2/novoarquivo.txt O arquivo novoarquivo.txt que estava no diretrio dir2/ foi removido.

3.2.5. Comando rmdir


O comando rmdir remove os diretrios especificados. $ rmdir dir2/dir3
_____________________________________________________________________________Pgina 26

O diretrio dir3 que estava dentro do diretrio dir2/ foi removido, note que o diretrio dir2 continua intacto, vamos remove-lo tambm: $ rmdir dir2 Pronto, o diretrio dir2 tambm foi removido,veja agora o exemplo abaixo: $ rmdir dir1 rmdir: `dir1/`: Directory not empty Deu erro! Explicao; o diretrio dir1 no estava vazio, ou seja, somente diretrios vazios podem ser removidos. Nestes casos que temos um diretrio com algo dentro imagine se tivessem milhares de arquivos dentro de um diretrio, ou pior, milhares de diretrios dentro de diretrios dentro de mais diretrios dentro deste diretrio que voc esta tentando apagar. Isto levaria dias Para estes casos existe o comando rm com os parmetros -rf. Que simplesmente apaga tudo o que tem no diretrio e logo aps apaga o diretrio em si, este comando e muito perigoso e serve somente para casos extremos, pois pode inutilizar o sistema. $ rm -rf dir1 O comando acima vai deletar o diretrio dir1 e todo seu contedo no importando o que haja nele, por isso deve ser utilizado com cuidado.

3.3. Comando ls
Este comando lista na tela o contedo dos diretrios: $ cd /usr $ ls X11R6 bin share src

doc

games

include

info

lib

local

man

sbin

Especificando a opo -a podemos ver todos os arquivos, inclusive os ocultos: $ ls -a . .. X11R6 bin doc games include info lib local sbin share src Especificando a opo -l podemos ver todos os arquivos, inclusive os ocultos:

man

_____________________________________________________________________________Pgina 27

$ ls -l drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx drwxr-xr-x drwxrwsr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxrwsr-x

6 2 2 2 78 1 160 15 4 2 239 9

root root root root root root root root d3v1l root root root

root 4096 Jan 11 06:23 X11R6 root 49152 May 5 14:43 bin root 12288 Apr 28 13:58 doc root 4096 Apr 6 14:52 games root 8192 May 3 17:01 include root 10 Jan 11 09:41 info -> share/info root 53248 May 5 14:43 lib staff 4096 Apr 18 10:14 local users 4096 Jan 24 14:34 man root 8192 May 5 11:55 sbin root 8192 May 5 11:55 share src 4096 Apr 11 09:03 src

Esta sada traz muitas informaes, vamos utilizar como exemplo primeira linha da sada para explicar a sintaxe utilizada pelo comando ls -l. drwxr-xr-x drwxr-xr-x 6 root root 4096 6 root root 4096 Jan 11 06:23 X11R6

Triplet que mostra o tipo de arquivo e a permisso de acesso ao arquivo. Nmero de Links que o arquivo possui, links so atalhos. Usurio dono do arquivo. Grupo dono do arquivo. Tamanho do arquivo em bytes.

Jan 11 06:23 Data de ltima modificao do arquivo. X11R6 Nome do arquivo. Agora vamos explicar esta linha como deve ser interpretada pelo usurio: drwxr-xr-x 6 root root 4096 Jan 11 06:23 X11R6 drwxr-xr-x d significa diretrio r significa read (leitura em ingls) w significa write (escrita em ingls) x significa execute (executar em ingls) Os dados se repetem 3 vezes para definir as permisses do usurio, do grupo e de outros. O diretrio X11R6 possui 6 links. Usurio root dono do diretrio X11R6

6 root

_____________________________________________________________________________Pgina 28

root 4096

Grupo root dono do diretrio X11R6 O diretrio X11R6 tem o tamanho de 4096 bytes.

Jan 11 06:23 O diretrio X11R6 foi modificado pela ltima vez em 11 de Janeiro s 06:23 horas. X11R6 Nome do diretrio. Para mostrar um exemplo diferenciado, vamos utilizar como exemplo a linha 5 da sada. lrwxrwxrwx 1 root root 10 Jan 11 09:41 info -> share/info lrwxrwxrwx 1 root root 10 Jan 11 09:41 info -> share/info l significa link O link info possui 1 outro link para ele. Usurio root dono do link info Grupo root dono do link info O link info tem o tamanho de 10 bytes. O link info foi modificado pela ltima vez em 11 de Janeiro s 09:41 horas. O link info aponta para o path share/info (path relativo). Links sero explicados detalhadamente no captulo 4. Mas este e um bom exemplo de como identificar um link; sempre aps um link aparecem os caracteres -> simbolizando uma seta que aponta para um path ou arquivo.

O comando ls tem diversas opes, para uma olhada detalhada recomendo que leia o manual deste comando.

Para fixar o contedo aprendido execute os exerccios abaixo: 1. Consulte o manual e as principais opes dos comandos abaixo: a. touch b. mkdir c. mv d. cp e. rm f. rmdir g. ls 2. Crie o diretrio exercicioaula3/, copie o contedo do diretrio /aulas/aula3/ para este diretrio, execute o comando ls -l exercicioaula3/. 3. Remova o diretrio exercicioaula3/.
_____________________________________________________________________________Pgina 29

Exerccios de fixao

No captulo anterior vimos os principais comando de manuseio de arquivos no linux, vimos tambm como consultar os manuais de comando, de agora em diante os comandos na apostila sero somente mencionados, no sero explicados como anteriormente, pois podem ser consultados nos manuais. Vamos agora aprender Wildcards que so caracteres especiais para formatao de comandos, isto nos permite selecionar um ou mais arquivos por vez nas nossas sadas ou ento criar excees. Aprenderemos tambm como criar links para arquivos e diretrios, e como manusear estes links. Por fim, vamos aprender a fazer o redirecionamento de comandos no GNU/Linux. Ao final deste captulo voc ser capaz de:

Customizar a sada de comandos com caracteres especiais Executar as tarefas das aulas anteriores com maior rapidez Criar links Distinguir soft links e hard links Fazer redirecionamento de outputs de comandos para outros comandos.

_____________________________________________________________________________Pgina 30

4.1 Wildcards
Wildcards servem basicamente para substituir caracteres so conhecidos como caracteres curinga, na sua utilizao do Linux, voc vai notar que quando precisar executar uma simples operao como a remoo de diversos arquivos de uma vez, pode tornar-se uma tarefa repetitiva e lenta. $ rm laranja1 laranja2 laranja3 laranja4 laranja5 laranja6 Para resolver este problema, o Linux possui suporte a wildcards, tambm conhecido como glob (man glob). Para ento deletarmos os arquivos acima podemos utilizar a sintaxe abaixo: $ rm laranja[1-6] Isto vai apagar os arquivos laranja que vo de 1 a 6, pode ser tambm que hajam mais arquivos laranja depois do 6 que tambm devem ser deletados. neste caso utilizamos a sintaxe abaixo: $ rm laranja* Isto vai deletar todos os arquivos que comeam com a palavra laranja, veja bem que o * substitui tanto nmeros quanto letras. Abaixo segue mais um exemplo de utilizao, vamos listar todos os arquivos no diretrio /etc que comeam com a letra c:
$ ls -d /etc/i* /etc/identd.conf /etc/identd.key /etc/idle-python2.1

/etc/imlib /etc/inetd.conf /etc/init.d

/etc/inittab /etc/inputrc /etc/irda.conf

/etc/issue /etc/issue.net

4.1.1. Sintaxe *
O coringa * substitui zero ou mais caracteres, isso significa qualquer coisa pode vir aqui, incluindo nada. Exemplos: /etc/g* equivale a todos os arquivos dentro do diretrio /etc/ que comeam com g ou so chamados g. /tmp/my*1 equivale a todos os arquivos dentro do diretrio /tmp/ que comeam com my e terminam com 1.

4.1.2. Sintaxe ?
O coringa ? substitui um nico caractere. Exemplos: myfile? equivale a todos os arquivos que comeam com myfile e so seguidos por um nico caractere.
_____________________________________________________________________________Pgina 31

/tmp/notes?txt pode ser tanto /tmp/notes.txt quanto /tmp/notes_txt se existirem, mas no podem ser /tmp/notes.atxt pois este a no substitudo.

4.1.3. Sintaxe [ ]
O coringa [ ] semelhante ao ?, porm este permite maior preciso, o funcionamento deste wildcard consiste em colocar os caracteres procurados dentro dos colchetes, voc pode inclusive especificar um conjunto de caracteres em ordem. Exemplos: myfile[12] equivale a myfile1 e myfile2, no a myfile12 pois o wildcard [ ] substitui um nico caractere. [Cc]hange[Ll]og equivale a Changelog, ChangeLog, changeLog e changelog. Como voc pode ver a utilizao do wildcard colchetes e til na verificao de letras maisculas e minsculas. ls /etc/[0-9]* vai listar todos os arquivos no diretrio /etc/ que comeam com um nmero. ls /tmp/[A-Za-z]* vai listar todos os arquivos no diretrio /tmp que comeam com uma letra maiscula ou minscula.

4.1.4. Sintaxe [!]


O coringa [!] semelhante ao [ ], porm este explicita excees, ou seja tudo o que no estiver dentro dos colchetes. rm myfile[!9] vai remover todos os arquivos que comeam com myfile mais um nico caractere exceto o arquivo myfile9.

4.1.5.Formatao de wildcards
Por serem caracteres especiais, os caracteres wildcards (?, [, ], !, *) so tratados pelo bash de uma maneira diferenciada, desta forma devemos tomar alguns cuidados quando escrevemos estes caracteres no bash. As trs formas mais comuns de se escrever um caractere wildcard em sua forma literal (por exemplo; fazer o bash entender o ? como um ponto de interrogao, e no como qualquer coisa como vimos anteriormente) devemos colocar os caracteres em uma das maneiras abaixo:

Entre aspas simples: '?' Entre aspas duplas: ? Com uma barra invertida na frente do caractere: \?

Observao: as aspas simples funcionam de maneira semelhante a aspas duplas, porem as aspas simples permitem ao bash a execuo de cdigo.

_____________________________________________________________________________Pgina 32

4.2 Links
Links, em ingls significa ligao, no nosso caso so atalhos, servem principalmente para criar alternativas de paths para arquivos e programas. Imagine por exemplo um arquivo de texto localizado no diretrio, /usr/local/share/documentos/ com o nome de texto.txt, para editarmos este arquivo usamos o editor Vi, ento sempre que formos abrir este texto deveremos digitar no console: $ vi /usr/local/share/documentos/texto.txt E um caminho grande e de difcil memorizao concorda?Agora se criarmos um link nossa pasta home, ficaria muito mais fcil pois sempre que formos abrir este texto pelo atalho basta digitar: $ vi ~/texto.txt Um outro exemplo, temos um programa cujo path /usr/local/share/exemplo, ao invs de abrir o programa por seu path absoluto, podemos criar um link para o mesmo no diretrio /usr/local/bin, que um diretrio padro para links de programas. Desta forma para abrirmos o tal programa podemos simplesmente digitar seu nome no console. Existem dois tipos de links, os soft links e os hard links, a funcionalidade dos dois e praticamente a mesma, ambos so caminhos alternativos para determinado arquivo, no entanto, os dois tem diferenas radicais entre si.

4.2.1. Soft links


So os links mais comuns, tambm chamados de symbolic links, (links simblicos), so tipos de links que se referem a arquivos pelo seu nome, se o arquivo destino for movido ou deletado o link perde sua funcionalidade se tornando um broken link (link quebrado). A criao de links simblicos feita utilizando o comando ln com a opo -s: $ ln -s /aulas/aula4/links1.txt ~/ Agora o arquivo de texto links1.txt tem um link na sua home, experimente agora utilizar o comando ls -l e veja o output para o link e confirme o caminho do mesmo:
lrwxr-xr-x links1.txt 1 bruno users 46 May 11 09:59 links1.txt -> /aulas/aula4/

Veja que o output confirma que nosso link esta para o caminho correto. Agora vamos tentar criar um link simblico de uma outra forma, vamos para o diretrio /aulas/aula4/ , criaremos o link e moveremos o link para a home com o comando mv.
$ cd /aulas/aula4/ $ ln -s links2.txt ln2.txt

Criamos o link para o arquivo links2.txt com o nome ln2.txt, agora verifique para onde aponta o link ln2.txt:
_____________________________________________________________________________Pgina 33

lrwxr-xr-x 1 bruno users 46 May 11 10:14 ln2.txt -> links2.txt Veja que o link aponta para o path relativo, experimente agora mover o link ln2.txt para a sua home, logo aps tente abrir o arquivo pelo link ln2.txt com o programa Vi: $ mv ln2.txt ~/ $ cd ~/ $ vi ln2.txt Veja que o link no funciona. Explicao; observando novamente para onde apontamos o link ln2.txt, vemos que o mesmo aponta para o arquivo links2.txt, ate ai nenhum segredo, mas no tem nenhum arquivo links2.txt no diretrio home, ou seja no vai funcionar pois na sada contem o path relativo do arquivo de destino, o que no funciona em todas as ocasies. Portanto aqui vai a lio mais importante de links simblicos; analise quando utilizar paths absolutos e paths relativos de links, veja qual e mais vantajoso em cada ocasio.

4.2.2. Hard links


Estes links funcionam de maneira diferente, ao invs de se basearem em nomes e paths, eles se baseiam diretamente no hardware para criar o link. No hardware? De que maneira? Aqui vai uma breve explicao: Qualquer objeto localizado no disco rgido tem um nmero nico de ndice (index) chamado de inodo, os hard links se baseiam neste numero, ao invs do nome do arquivo propriamente dito, ou seja ele cria um atalho para a prpria localizao no disco. Um inodo pode ento conter um ou mais hard links, e vai existir at que no existam mais links para ele. Copie o arquivo hardlink.txt do diretrio /aulas/aula4/ para sua home e utilize o comando ls -i | grep hardlink.txt (este ultimo comando ser explicado nos prximos captulos, se chama redirecionamento). $ cp /aulas/aula4/hardlink.txt $ ls -i | grep hardlink 2073563 hardlink.txt ~/

Pronto, obtivemos o numero do inodo do arquivo hardlink.txt, ( comando ls -i), diante disso criaremos um hard link com o comando ln sem parmetros para o arquivo hardlink.txt: $ ln hardlink.txt hardlink2.txt Com o hard link criado, veja agora os nmeros de inodos dos arquivos: $ ls -i | grep hardlink 2073563 hardlink.txt 2073563 hardlink2.txt Como voc pode verificar, os nmeros de inodo so exatamente iguais, experimente agora verificar se so links pelo comando ls -l | grep hardlink:
_____________________________________________________________________________Pgina 34

$ ls -l | grep hardlink -rw-r--r-- 2 d3v1l users -rw-r--r-- 2 d3v1l users

39 May 11 10:44 hardlink.txt 39 May 11 10:44 hardlink2.txt

Como voc pode ver, os links no aparecem nem com o l nos triplets, nem com o -> path, este e um detalhe o qual devemos estar atentos. Experimente agora remover o arquivo original de destino, ou seja o hardlink.txt e tente abrir o link hardlink2.txt com o Vi: $ rm hardlink.txt $ vi hardlink2.txt Este sera um destino para o hard-link. ~ ~ ~ hardlink2.txt 1L, 39C

1,1

All

Para a nossa surpresa o link funcionou, isto comprova que o link no esta vinculado ao arquivo de destino e sim ao inodo. Links utilizando hard links s podem ser feitos para arquivo, e no para diretrios, na verdade os atalhos . e .. so hard links para diretrios mas estes foram criados pelo sistema operacional, e no por um usurio, nem sequer o root pode criar hard links para diretrios. Outra limitao, os hard links no podem transpor sistemas de arquivo diferentes.

4.3 Redirecionamento
O bash nos permite redirecionar outputs de comandos para outros comandos ou para arquivos, nos proporcionando grandes possibilidades se somadas aos inmeros comandos do GNU/Linux.

4.3.1. Pipe
O pipe | serve para passar o output de um comando para outro, ou seja antes de passar para a tela o resultado voc pode literalmente redirecionar para onde vai seu comando, veja a sintaxe abaixo: $ ls /etc/ | grep conf |sort -r | lpr -p LaserJet A sintaxe acima tem 3 redirecionamentos chamados Pipes, o que os comandos acima fazem; Primeiro o comando ls lista tudo o que esta no diretrio / usr/share/empresas/, o pipe manda essa listagem para o comando grep que discarta tudo o que no tem a palavra conf, o terceiro pipe manda estas listagem filtrada para o comando sort -r que coloca tudo em ordem decrescente, e por ultimo o terceiro pipe manda o resultado para o comando lpr -p LaserJet que imprime a listagem filtrada e ordenada. Interessante no? O exemplo acima pode parecer um pouco complicado mas vamos agora para um comando mais simples:
_____________________________________________________________________________Pgina 35

$ cat /etc/samba/smb.conf | mail brunocesar@ajato.com.br

O cat mostra o contedo do arquivo smb.conf, o pipe manda este contedo para o comando mail que manda um e-mail para brunocesar@ajato.com.br. Pipes so teis tambm quando o output de um comando e muito grande, veja so:
$ ls /etc/ | grep conf | less

O ls lista o contedo do diretrio /etc/, o pipe manda esta lista para o comando grep que filtra os arquivos com a palavra conf e finalmente o ltimo pipe manda a lista para o comando less que e um programa pager, ou seja, exibe as paginas permitindo exibir o inicio do texto com a tecla seta p/ cima e ler tudo paulatinamente.

4.3.2. >
Um comando seguido pelo smbolo > redireciona seu output para um arquivo, utilizarei o mesmo exemplo anterior:
$ ls /etc/ | grep conf > novo.txt

O ls lista o contedo do diretrio /etc/, o pipe manda esta lista para o comando grep que filtra os arquivos com a palavra conf, o > manda esta lista para o arquivo novo.txt, para comprovar isto exiba o contedo do arquivo novo.txt com o comand cat novo.txt | less. Uma observaao que deve ser feita: se o arquivo de destino existir ele sera sobrescrito por este redirecionamento, ou seja o contedo anterior do arquivo ser substitudo pelo novo.

4.3.3. >>
O smbolo >> funciona de maneira semelhante ao smbolo > mas este por sua vez no substitui o contedo do arquivo de destino (caso ele exista), somente adiciona ao final do arquivo. Vamos exemplificar:
$ echo Ola mundo>arquivo.txt $ cat arquivo.txt Ola mundo

O vimos que o redirecionamento funcionou, agora vamos adicionar a String tudo bem? no arquivo:
$ echo tudo bem?>arquivo.txt $ cat arquivo.txt tudo bem?

Perai, cade o Ola mundo ? Resposta: foi apagado porque o redirecionamento utilizado foi o > . Veja agora como seria o correto:

_____________________________________________________________________________Pgina 36

$ echo Ola mundo>arquivo.txt $ cat arquivo.txt Ola mundo $ echo tudo bem?>>arquivo.txt $ cat arquivo.txt Ola mundo tudo bem?

Pronto, pode parecer um exemplo bobo mas imagine se fosse uma rotina de logs, de sistema.

4.3.4. <<
O Bash e os outros shells suportam o conceito de arquivoaqui, ou seja ele pode interpretar que o prprio console e um arquivo se desejar, podendo estabelecer variveis entre outras opes. Isso permite estabelecer um intput para um comando em varias linhas, vejamos o exemplo:
$ sort <<CHAMADA Tadeu Jorge Bruno Renato Marcos CHAMADA Bruno Jorge Marcos Renato Tadeu

Ou seja, o comando sort, recebeu do redirecionamento << uma lista de nomes e colocou os mesmos em ordem alfabtica. A lista no caso era uma varivel, agora voce pode ver como o shell extremamente poderoso.

Exerccios de fixao
1. Procure utilizando wildcards: a. Todos os arquivos no diretorio /etc que comeam com g e terminam com .conf b. Todos os arquivos no diretorio /etc que contm um numero qualquer c. Todos os arquivos no diretorio /etc que comeam com a, b, c, d, e ou f e terminam com .conf d. Todos os arquivos no diretorio /etc que no comeam com g e terminam com .conf 2. Crie um arquivo vazio com o nome de arquivteste.txt, depois crie um hard link para o
_____________________________________________________________________________Pgina 37

arquivoteste.txt com o nome de hardlinkteste.txt e finalmente crie um link simbolico para o hardlinkteste.txt com o nome de softlinkteste.txt1 3. Verifique se pode identificar hardlinks e softlinks. 4. Treine os redirecionamentos |, > , >> e <<.

_____________________________________________________________________________Pgina 38

No captulo anterior voc aprendeu sobre wildcards, links e redirecionamento de outputs. Neste captulo vamos deixar o shell um pouco de lado e verificar a FHS (Filesystem Hierarchy Standard) ou seja, a hierarquia do sistema de arquivos, que nada mais do que a padronizao de uma disposio com que os diretrios so colocados independendo de distribuio. Voc tambm vai aprender como localizar arquivos e diretrios utilizando os diversos comandos para esta finalidade. Ao final deste capitulo voc ser capaz de:

Dominar a arvore de diretrios do GNU/Linux Localizar arquivos corretamente

_____________________________________________________________________________Pgina 39

5.1 Hierarquia do sistema de arquivos


Apesar de parecer confusa no inicio, a rvore de diretrios do GNU/Linux muito bem organizada e respeitada em praticamente todas as distribuies, podem haver pequenas variaes, encontramos os seguintes diretrios:

/ (diretrio root)

Abaixo deste esto:

/bin (diferente do /sbin, este diretrio contm vrios comandos teis utilizados
tanto para o administrador do sistema quanto para o usurio comum, contem geralmente os shells, e os programas mais comuns)

/boot (diretrio onde ficam os arquivo essenciais para o boot do GNU/Linux,


fica tambm os novos kernels recompilados e reinstalados.) /dev (diretorio onde ficam armazenados arquivos especiais ou arquivos de dispositivos, o GNU/Linux entende todos os dispositivos como arquivos, tanto o seu dispositivo usb quanto sua placa de som esto aqui.)

/etc (diretrio com os arquivos de configurao de programas, servios ou do


prprio Linux, este o diretrio em que devem ser procurados os arquivos de configurao)

/home (o Linux e um ambiente multi usurio, o que implica que cada usurio
tem um diretrio que pode ser acessado por si e pelo administrador do sistema, estes so os diretrios home e so acessveis por / home/Nomedousuario)

/lib (diretrio onde so encontradas as bibliotecas compartilhadas de


aplicativos e mdulos do kernel)

/lost+found (em sistemas de arquivos com a capacidade de journaling este


diretrio armazena os dados recuperados pelo fsck)

/mnt (diretrio temporrio que serve de ponto de montagem para dispositivos


de armazenamento, tornando os acessveis)

/opt (diretrio reservado para todos os softwares que no fazem parte da


instalao padro)

/proc (diretrio com sistema de arquivos virtual do kernel que demonstra


status de programas ou ento informaes sobre o hardware, e ate mesmo a alterao do status de hardware, no contm arquivos reais)

/root (diretrio home do usurio root) /sbin (diretrio com arquivos executveis de manuteno do sistema e de
tarefas administrativas)

/tmp

(diretrio com arquivos temporrios, muitos programas utilizam-se deste diretrio para criar arquivos lock, e tambm armazenamento de dados temporrio)

/usr (contm uma outra rvore de diretrios compartilhada entre os usurios,


bibliotecas, aplicativos, documentao e etc.)

/var (contm dados variveis como logs de arquivos e spools de impressoras)

No h muito o que discutir respeito do FHS, mais informaes respeito e


_____________________________________________________________________________Pgina 40

diversos exemplos podem ser envontrados em http://www.pathname.com/fhs/

5.2 Localizando arquivos


Um sistema Linux comum instalado possui centenas de milhares de arquivos, para auxiliar no gerenciamento desses arquivos todos temos diversas ferramentas de busca no Linux, cada qual com suas vantagens e desvantagens, cada uma se adapta a uma situao.

5.2.1. O $PATH
Esta e uma varivel padro do bash, como disse anteriormente o bash pode armazenar variveis de ambiente (variveis de ambiente sempre tero o smbolo $ no inicio da palavra), esta por exemplo armazena caminhos de programas binarios. Quando voc executa um comando, o bash procura automaticamente este comando em um dos diretrios armazenados na varivel $PATH. Veja o exemplo abaixo:
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/

Os diretrios esto separados por dois pontos (:), quando executarmos um comando qualquer o bash ira procurar este comando em um dos diretrios listados acima. Nos prximos captulos aprenderemos mais sobre variveis de ambiente.

5.2.2. Comando whereis


O comando whereis procura na varivel $PATH o arquivo, o retorno instantneo porm s retorna programas, ou seja se voc estiver procurando um programa utilize o whereis. Exemplo:
$ whereis gzip gzip: /bin/gzip /usr/share/man/man1/gzip.1.gz

O output do comando foram dois diretrios, o primeiro o local onde se encontra o programa gzip, o segundo o local onde se encontra a pagina de manual do gzip, ou seja; man gzip . Geralmente os outputs do comando whereis seguiro esta ordem.

5.2.3. Comando locate


O comando locate funciona de outra maneira, ele retorna os resultados da pesquisa instantaneamente tambm, sua fonte de pesquisa no entanto um banco de dados de arquivos criado pelo Linux, este banco de dados pode ser atualizado utilizando o comando updatedb, sua vantagem e que pode retornar qualquer tipo de arquivo e diretrio, no tendo restries em suas buscas, outra opo interessante a possibilidade de utilizao de wildcards em suas buscas. Exemplo:

_____________________________________________________________________________Pgina 41

$ locate firefox /usr/bin/firefox /usr/bin/mozilla-firefox /usr/lib/menu/mozilla-firefox /usr/lib/mime/packages/mozilla-firefox

Geralmente o output do comando locate muito grande, no listei todos. Sua desvantagem que o banco de dados pode ficar desatualizado em poucos dias, (quando o banco tem mais de 8 dias o comando locate j avisa) e sua atualizao demora algum tempo, pode demorar alguns minutos dependendo da velocidade de seu HD, esta atualizao s pode ser efetuada pelo usurio root.
# updatedb

Depois de aguardar alguns minutos o novo banco de dados estar atualizado, esta demora ocorre pois o sistema vai reindexar todos os arquivos no banco de dados.

5.2.4. Comando find


O comando find no tem uma fonte de pesquisa, na verdade sua fonte de pesquisa vai ser passada como parmetro no comando, desta forma ele pode ser usado em qualquer situao, pode localizar arquivo, diretrios, textos dentro de arquivos, arquivos por tempo, por tipo de arquivo e tambm por seu tamanho. Como podemos ver uma busca bem completa, sua desvantagem o tempo necessrio para a pesquisa, por ser feita em tempo real pode demorar desde segundos at alguns minutos, tudo vai depender dos parmetros passados na pesquisa. Veja o exemplo abaixo:
$ find /usr/share/doc -name README\* /usr/share/doc/base-files/README.base /usr/share/doc/base-passwd/README /usr/share/doc/bash/README.Debian.gz /usr/share/doc/bash/README.bash_completion.gz /usr/share/doc/bash/README.abs-guide /usr/share/doc/bash/README.commands.gz

Comando: find </diretorio/> -opao <parametro> No caso utilizamos a opo -name que especifica o nome do arquivo. O output deste comando tambm foi volumoso, portanto retirei diversos resultados. A procura acima consistia em procurar no diretrio /usr/share/doc/ todos os arquivos que tinham como nome a palavra README+qualquercoisa, (lembra-se que o * significa qualquer coisa certo?). Para ignorar letras maisculas e minsculas deve-se colocar como opo -iname. Para procurar agora por expresses regulares, (veremos expresses regulares no prximo capitulo), serve para procurar arquivos e tendo como critrio o que esta dentro deste arquivo. um exemplo; para procurar no diretrio /etc/ todos os arquivos que contm
_____________________________________________________________________________Pgina 42

a expresso php utilizamos a seguinte sintaxe:


$ find /etc/ -regex ".*php.*" /etc/cron.d/php4 /etc/php4 /etc/php4/apache /etc/php4/apache/php.ini /etc/apache/conf.d/phpmyadmin.conf /etc/apache/conf.d/php4.conf /etc/apache-perl/conf.d/phpmyadmin.conf /etc/apache-ssl/conf.d/phpmyadmin.conf /etc/phpmyadmin /etc/phpmyadmin/apache.conf /etc/phpmyadmin/config.footer.inc.php /etc/phpmyadmin/config.header.inc.php /etc/phpmyadmin/config.inc.php /etc/phpmyadmin/htaccess /etc/phpmyadmin/blowfish_secret.inc.php

Utilizamos a opo -regex que especifica uma expresso regular dentro de um arquivo (simplificando, um texto, uma frase uma palavra escrita em alguma parte do arquivo), para ignorar diferenciao entre maisculas e minsculas utilize a opo -iregex. Existem muitas outras opes no comando find, o manual deste comando contem explicaes e exemplos sobre estas opes .

Exerccios
1. Procure o arquivo passwd em todo o sistema operacional. 2. Procure o programa xcalc. 3. Procure o arquivo smb.conf dentro do diretrio /etc/ .

_____________________________________________________________________________Pgina 43

No captulo anterior vimos o FHS do Linux e aprendemos como localizar arquivos e diretrios. Neste captulo iremos aprender expresses regulares e tambm como controlar os processos de programas. Ao final deste captulo voc ser capaz de:

Entender a sintaxe de regex (regular expressions) Abrir programas em foreground e background Modificar estado de execuo de programas Fechar programas travados Listar e gerenciar processos pelo PID Definir prioridades de processos

_____________________________________________________________________________Pgina 44

6.1. Expresses regulares.


Expresses regulares, ou regex so sintaxes usadas para descrever textos. No Linux, so utilizadas principalmente para encontrar textos em arquivos. Funcionam de maneira semelhante a dos wildcards, ou seja funcionam como caracteres especiais que facilitam a busca de informaes.

6.1.1. Texto simples


Um texto simples e considerado como um regex bsico, por exemplo se desejamos procurar em um arquivo uma expresso de texto qualquer utilizamos o comando grep, o comando grep imprime todas as linhas que contm a regex passada como parmetro . Veja o exemplo abaixo:
$ grep ftp /etc/services ftp-data 20/tcp ftp 21/tcp tftp 69/udp sftp 115/tcp ftps-data 989/tcp ftps 990/tcp venus-se 2431/udp codasrv-se 2433/udp frox 2121/tcp proxy zope-ftp 8021/tcp

# FTP over SSL (data) # udp sftp side effect # udp sftp side effect # frox: caching ftp # zope management by ftp

O comando grep procurou pela regex ftp dentro do arquivo /etc/services e imprimiu somente as linhas que continham esta regex. Dica; utilize sempre aspas em regex pois exitem alguns caracteres especiais que podem alterar o resultado da procura.

6.1.2. Sintaxe .
O . em uma regex trabalha de maneira semelhante ao ? nos wildcards, ou seja substitui um nico caractere qualquer, exemplo:
$ grep dev/hda. /etc/fstab /dev/hda2 / /dev/hda3 none /dev/hda1 /mnt/windows

ext3 swap ntfs

errors=remount-ro sw rw,user,exec,noauto

0 0 0

1 0 0

6.1.3. Sintaxe [ ]
A sintaxe [ ] utilizada quando se quer restringir a busca do . , especificando entre colchetes os caracteres que devero retornar, veja o exemplo:

_____________________________________________________________________________Pgina 45

$ grep dev/hda[23] /etc/fstab /dev/hda2 / ext3 /dev/hda3 none swap

errors=remount-ro sw

0 0

1 0

Lembre-se que quando usados os [ ] sempre ser substitudo somente um caractere.

6.1.4. Sintaxe [^ ]
A sintaxe [^ ] realiza o trabalho inverso aos [ ] , ou seja, vai retornar as expresses que no contenham o que esta dentro de [^ ], veja o exemplo:
$ grep dev/hda[^23] /etc/fstab /dev/hda1 /mnt/windows ntfs

rw,user,exec,noauto

6.1.5. Sintaxe *
A sintaxe * serve para modificar o significado da regex anterior, dizendo que a regex anterior pode ocorrer zero ou mais vezes repetidas, (vimos ate agora que s e substitudo um caractere por vez).
$ grep ".*bash" /etc/shells /bin/bash /bin/rbash

O comando grep imprimiu as linhas que continham um caractere qualquer, repetido diversas vezes e que era seguido do texto simples bash.

6.1.6. Sintaxe ^ e $
Os caracteres ^ e $ servem respectivamente para localizar os caracteres do inicio e do final de uma linha. Utilizando a regex ^ especificamos o caractere inicial de uma linha, veja o exemplo:
$ grep ^# /etc/fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options>

<dump>

J a regex $ serve para verificar o caractere final de uma linha:


$ grep '\.$' /etc/fstab # /etc/fstab: static file system information.

_____________________________________________________________________________Pgina 46

6.2 Controle de processos


O kernel do Linux controla aplicativos que esto no nvel do usurio atravs de processos, organizados por seus PIDs (process identification). Os processos so gerenciados automaticamente pelo kernel, porm, o usurio tambm pode gerenciar estes processos conforme sua necessidade. Antes de mais nada para iniciarmos um processo precisamos iniciar um aplicativo.

6.2.1. Iniciando um aplicativo


Para acompanharmos um processo corretamente nvel didtico, iniciaremos um programa atravs de um shell comum, primeiro abra um console e inicie um programa qualquer, neste exemplo utilizaremos o programa xeyes:
$ xeyes

Imediatamente o programa vai iniciar, so dois olhos que ficam seguindo o mouse, note que o terminal ficou bloqueado, no aceitando mais nenhum comando.

6.2.2. Parando um aplicativo


Aplicativos podem ser parados a qualquer momento de sua execuo, quando paramos um aplicativo este vai parar de consumir processamento mas ainda vai consumir memria pois no foi finalizado, todos os aplicativos parados ficaro estticos mas ainda esto abertos e funcionando. A maneira mais prtica de se parar um aplicativo apertando as teclas Ctrl + Z no shell onde se iniciou o aplicativo:

[1]+ $

Stopped

xeyes

Note agora que o programa parou de funcionar, como se estivesse travado (os olhos no seguem mais o movimento do mouse. Note tambm que o shell ficou livre novamente para a execuo de comandos. Uma outra maneira de parar um processo, que vai funcionar em todos os casos por sinal, executando o comando kill -STOP <pid>, ou seja o comando kill serve para enviar comandos para processos, a opo -STOP sinaliza que o comando kill deve parar processo e o parmetro pid o nmero pid do processo que veremos como obter adiante.

6.2.3. Listando processos


Para listarmos os processos no Linux utilizamos o comando ps, assim podemos obter os pids de processos e saber quais e quantos processos esto sendo executados no momento, para vermos os processos sendo executados no bash atual utilizamos o comando ps sem parmetros exemplo:

_____________________________________________________________________________Pgina 47

$ ps PID 9598 9978 10130

TTY pts/4 pts/4 pts/4

TIME 00:00:00 00:00:00 00:00:00

CMD bash xeyes ps

PID TTY TIME CMD

Abaixo a descrio das colunas da lista obtida: Nmero de identificao do processo Console sob o qual o processo esta sendo executado Tempo de processamento na CPU formatado em HH:MM:SS Comando ou aplicativo Para obtermos uma listagem mais completa utilizamos a opo ps u veja abaixo:

$ ps u USER PID %CPU %MEM d3v1l 4303 0.0 0.6 d3v1l 9598 0.0 0.6 bin/bash d3v1l 9978 0.0 0.6 d3v1l 10536 0.0 0.3

VSZ 2692 2668 3152 2500

RSS TTY 1564 tty2 1488 pts/4 1504 pts/4 860 pts/4

STAT START Ss+ 07:26 09:59 Ss T R+ 10:22 10:49

TIME COMMAND 0:00 -bash 0:00 / 0:00 xeyes 0:00 ps u

Descrio: USER Usurio que executou o processo %CPU %MEM VSZ RSS STAT Porcentagem de utilizao do processador Porcentagem de utilizao de memria Tamanho de memria virtual utilizada Espao fsico ocupado na memria pelo processo So caracteres que identificam o estado do processo. (lista em man ps)

Finalmente para listarmos todos os processos que esto sendo executados, (no os processos exclusivos do shell atual) utilizamos a opo ps aux. A lista e muito extensa portanto no ser inclusa aqui. Agora que temos conhecimento como trabalhar e identificar processos atravs do PID podemos passar para a prxima parte, vamos reiniciar o processo que paramos na seo anterior.

6.2.4. Foreground e Background


Foreground e backgroud so os nveis de execuo de aplicativos no sistema, foregroud significa primeiro plano, e background significa plano de fundo ou segundo plano. Para reiniciarmos o nosso processo (xeyes) podemos utilizar duas opes, a primeira utilizar o comando fg no shell onde o aplicativo foi iniciado/parado):
_____________________________________________________________________________Pgina 48

$fg xeyes

(A outra maneira seria utilizar o comando kill -CONT <pid>, a diferena que o -CONT vai reiniciar o processo em background diretamente.) O processo retornou execuo, porm o shell ficou bloqueado novamente. para mandarmos o processo para o background paramos novamente o processo e utilizamos o comando bg (o comando kill -CONT <pid> faz isto):
$ bg [2]+ xeyes &

Temos agora um bash funcional rodando um processo em background.

6.2.5. Finalizando um aplicativo


Para finalizarmos um aplicativo ou um programa travado utilizamos o comando kill <pid>, desta forma o programa vai ser fechado:
$ kill 9978 [2]+ Terminated

xeyes

O programa xeyes foi terminado. Se o programa estiver em foreground aperte as teclas Ctrl+C. Uma outra maneira de finalizar programas pelo modo grfico utilizando o programa xkill, o mouse vai mudar de cone e quando clicar na janela abaixo do mouse esta ser fechada.

6.2.6. Iniciando um aplicativo em background


Para evitar todo este processo de iniciar o aplicativo, parar e enviar para background manualmente podemos simplesmente iniciar o processo em background, para isto utilizamos o caractere & logo aps o comando. Veja o exemplo abaixo:
$ xeyes -center lightblue & [1] 12941

O programa xeyes foi iniciado agora em background, abaixo vemos dois campos, o primeiro seu JOB number, ou seja a tarefa nmero 1 do console atual, o segundo campo seu PID. Podemos iniciar diversos aplicativos em backgroud simultaneamente utlizando sempre o caractere & no final de cada comando.

_____________________________________________________________________________Pgina 49

6.2.7. Mltiplos processos em background


Vamos agora trabalhar com diversos processos, inicie em background o programa xeyes com a opao -center pink:
$ xeyes -center pink & [2] 13014

Veja que o JOB number mudou. Vamos agora listar os jobs do console atual com o comando jobs -l:
$ jobs -l [1]- 12941 Running [2]+ 13014 Running

xeyes -center lightblue & xeyes -center pink &

O job 2 possui um sinal de + ao lado, isto significa que o job atual e o comando fg vai surtir efeito diretamente neste e no no primeiro job (marcado com -). Caso queria mandar o primeiro para foreground especifique seu job number como parmetro ao comando fg:
$ fg 1 xeyes -center lightblue

6.2.8. Prioridades de processos


Os processos no Linux possuem prioridades que determinam como e com que frequncia podem acessar CPU. A maioria dos processos iniciados pelo usurio possuem a mesma prioridade (0), o que os torna iguais nvel de processamento. Imagine agora que voc tenha que compilar um programa muito importante e ao mesmo tempo abre o seu player de mp3, os dois programas vo utilizar o processador da mesma forma e com a mesma frequncia, seria mais interessante colocar o processo de compilao com uma prioridade maior, isto vai acelerar a compilao. Este s um exemplo, um outro exemplo prtico; na sua vida como administrador Linux haver horas em que seu servidor de webpages est recebendo muitas requisies, nestas horas para o acesso do usurio no ficar lento voc dever tambm redefinir a prioridade do seu servidor. Para definirmos processos na hora em que iniciamos o programa utilizamos o comando nice antes do comando, veja o exemplo:
$ nice -n 10 mpg123 musica.mp3

Para o comando nice, quanto maior for o nmero passado como parmetro, menor sua prioridade, ou seja, no exemplo acima o programa mpg123 vai ter uma prioridade menor do que a de um compilador por exemplo. O comando nice, no entanto, s pode definir a prioridade quando o processo iniciado, para redefinir (modificar) a prioridade de algum processo no Linux voc dever utilizar o comando renice, veja no exemplo abaixo sua utilizao:

_____________________________________________________________________________Pgina 50

$ nice -n 10 mpg123 musica.mp3

Para o comando nice, quanto maior for o nmero passado como parmetro, menor sua prioridade, ou seja, no exemplo acima o programa mpg123 vai ter uma prioridade menor do que a de um compilador por exemplo. O comando nice, no entanto, s pode definir a prioridade quando o processo iniciado, para redefinir (modificar) a prioridade de algum processo no Linux voc dever utilizar o comando renice, veja no exemplo abaixo sua utilizao: utilizao:
$ firefox & [1] 13627 $ renice 10 13627 13627: old priority 0, new priority 10

O processo firefox passou a ter a prioridade 10. Uma informao importante, quando um usurio comum tenta aumentar a prioridade de um processo ele barrado pelo sistema, isto se d por segurana, o Linux foi desenvolvido para ser um sistema multi-usurio ou seja diversos usurios ao mesmo tempo, seria uma baguna tremenda se todos os usurios pudessem melhorar os desempenhos de seus processos em relao aos outros.
$ renice 0 13627 renice: 13627: setpriority: Permission denied

O nico usurio que pode aumentar a prioridade de processos o usurio root.


# renice 0 13627 13627: old priority 10, new priority 0

Para listar prioridades de processos digite o comando ps -l e acompanhe a coluna NI, l est listada a prioridade de cada processo.

Exerccios
1. Exiba a regex bash dentro do arquivo /etc/passwd. 2. Exiba as entradas /dev/hda1 e /dev/hda3 do arquivo /etc/fstab utilizando um nico comando. 3. Inicie um processo normal em foreground, mande o para background atravs de outro console, e redefina sua prioridade para 10, depois finalize o processo.

_____________________________________________________________________________Pgina 51

Neste capitulo conheceremos as caractersticas e ferramentas que tornam o GNU/Linux um sistema operacional multi-usurio, veremos como trabalhar com contas de usurios e grupos de usurios, tambm veremos como trabalhar com permisses de acesso a arquivos e diretrios e finalmente permisses especiais de arquivos e diretrios. Este capitulo muito importante pois vai tornar clara como funciona a segurana com relao usurios no Linux. Ao final deste captulo voc ser capaz de:

Adicionar, alterar e remover contas de usurios no sistema. Trabalhar com grupos de usurios. Entender e definir permisses de acesso arquivos e diretrios. Entender e definir permisses de acesso especiais.

_____________________________________________________________________________Pgina 52

7.1. Usurios
J foi comentado anteriormente que o Linux um sistema multi usurio, mas afinal o que isto quer dizer? Um sistema operacional multi usurio permite que mltiplos usurios utilizem o computador e rodem programas ao mesmo tempo, compartilhando os recursos da mquina. Para que se utilize desta caracterstica cada usurio deve ter uma conta vlida no computador para que o sistema possa controlar as polticas de segurana, mediante autenticao o usurio pode utilizar o sistema local e remotamente. As caractersticas de acesso usurios no Linux so rgidas, tornando-o um sistema extremamente seguro, veremos abaixo que existem dois tipos de usurio; os usurios normais e o usurio root (administrador).

7.1.1. Usurio root


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

7.1.2. Usurio normal


Os usurios normais possuem permisso de escrita somente em seu diretrio home, possui tambm acesso de execuo nos diretrios /bin/, /usr/bin/ e / usr/local/bin/ (isto pode variar de distribuio para distribuio). Em alguns diretrios no possui permisso de leitura como o /root/ e nas homes de outros usurios, estas permisses podem ser redefinidas, mas note bem que quanto menos poderes um usurio tiver mais seguro ser o sistema. As contas aqui tambm possuem senhas portanto os cuidados so os mesmos do usurio root, a nica diferena que se sua senha cair em mos erradas o estrago ser menor. As contas de usurios no linux so bem flexveis, por exemplo um usurio que acessa o servidor por uma mquina windows somente, no precisa de um shell vlido no servidor Linux, vamos aprender a customizar este tipo de opo neste captulo.
_____________________________________________________________________________Pgina 53

7.1.3. Criando um usurio


Vamos criar um usurio atravs do comando useradd, o comando useradd permite que especifiquemos de uma vez diversas opes sobre o usurio as mais comuns so -g , -s , -G, mas na tabela abaixo vou especificar mais opes deste comando: -u -g -G -d -s UID (nmero de identificao do usurio, caso seja omitido o sistema insere um nmero automaticamente) Grupo primrio a que o usurio pertence ( caso seja omitido o sistema cria um grupo com o nome do usurio) Grupos secundrios do usurio (um usurio pode fazer parte de outros grupos) Diretrio home do usurio (caso seja omitido o sistema vai criar um diretrio / home/nomedousurio) Shell padro do usurio (caso seja omitido o sistema vai selecionar o bash como padro)

Consultando as pginas do manual do comando useradd poderemos achar mais opes. Vamos criar um usurio, veja o exemplo abaixo:
# useradd -g users -G audio bruno

Ok, usurio criado, automaticamente foi adicionado no grupo users e no grupo audio. Agora imagine como seria a criao de um usurio que acessa o servidor de uma workstation windows, o usurio no precisa de um shell vlido. Para isso utilizamos um shell invlido chamado /bin/false veja abaixo sua criao:
# useradd -g users -s /bin/false bruno

7.1.4. Modificando um usurio


Da mesma maneira que criamos um usurio podemos modificar um usurio j criado com a ferramenta usermod, que tem uma sintaxe muito parecida com a useradd, na verdade as opes so as mesmas, a nica novidade a opo -l que permite a troca do nome de usurio. Os usurios comuns no podem modificar as opes de suas prprias contas, o administrador deve executar estas alteraes.
# usermod -l brunao bruno

_____________________________________________________________________________Pgina 54

7.1.5. Modificando o password


At agora nada foi mencionado respeito do password (senha) do usurio, a resposta que os passwords vm bloqueados por padro nas distribuies atuais. O comando para criao e alterao de senhas de usurios e grupos passwd, veja um exemplo de sua utilizao:
# passwd bruno Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

Por senhas serem secretas cada usurio pode alterar sua senha quando bem entender com o comando passwd sem nenhum parmetro adicional, o administrador pode mudar a senha de um usurio, mas no pode saber qual era a senha anterior.

7.1.4. Excluindo um usurio


Para remover definitivamente usurios do sistema utilizamos a ferramenta userdel, adicionando a opo -r o sistema deleta todo o contedo do diretrio home do usurio:
# userdel bruno

7.2 Grupos
Grupos servem para agrupar diversos usurios em um nico grupo, isto e um tanto quanto bvio. Exemplificando, temos um departamento pessoal na empresa, estes usurios podem acessar uma diretrio chamado /usr/share/dpessoal, e mais ningum da empresa pode acessar esta pasta, o que fazemos para restringir o acesso? Ao invs de modificar a permisso de cada usurio que acessa este diretrio, podemos criar o grupo deptopessoal, colocar os funcionrios do departamento pessoal neste grupo e restringir o acesso ao diretrio /usr/share/dpessoal para que somente quem faa parte deste grupo possa acessar.

7.2.1. Criando um grupo


Para criarmos um grupo utilizamos o comando groupadd, adicionando a opo -g podemos definir o gid (nmero de identificao do grupo) mas se for omitido o sistema vai adicionar a numerao automaticamente:
# groupadd deptopessoal

_____________________________________________________________________________Pgina 55

7.2.2. Excluindo um grupo


Para excluir um grupo utilize o comando groupdel, uma observao importante que no podemos excluir os grupos primrios de usurios, somente grupos secundrios.
# groupdel deptopessoal

7.3 Permisses de acesso


No GNU/Linux todos os arquivos e diretrios so automaticamente assinalados por um usurio e um grupo que so "donos" deste arquivo/diretrio, assim o sistema pode definir diferentes permisses de acesso entre usurios. Isto muito importante pois um sistema multi usurio precisa ter uma camada de segurana especial, imagine que o usurio1 cria um diretrio com documentos de texto importantes, o usurio2 por sua vez no sabe para que serve esta pasta e acaba apagando-a por engano, este tipo de coisa no pode acontecer em uma empresa. Desta forma foram criadas as permisses de acesso, que restringem as aes que dos usurios em arquivos e diretrios. Vamos coletar dados sobre nossa conta atual para gerenciarmos corretamente as permisses de acesso.

7.3.1. Verificao de conta


Para saber que usurio estamos utilizando usamos o comando whoami na verdade pode parecer sem sentido saber que usurio estamos utilizando quando logamos, mas imagine que estemos acessando o servidor de outra maneira ou seja um usurio genrico.
$ whoami bruno

Precisamos saber tambm a que grupo pertencemos, utilizamos o comando groups:


$ groups users audio webdesign

Primeiro vem o grupo primario do usurio, logo aps os grupos secundrios. O comando groups pode retornar os grupos de outros usurios caso seja colocado seu username como parmetro:
$ groups joao users audio video

Vamos agora verificar permisses de arquivos.

_____________________________________________________________________________Pgina 56

7.3.2. Verificao de permisses com ls l


Para verificarmos as permisses de acesso arquivos utilizamos o comando ls -l, que retorna uma lista com diversas colunas, devemos ter uma ateno especial com trs destas colunas, Veja abaixo o exemplo:
$ ls -l /aulas/aula7/ -rw-r--r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Veja na tabela abaixo que colunas devem ser observadas: -rw-r-r-- Permisses de acesso a este arquivo/diretrio. bruno users Usurio dono deste arquivo/diretrio. Grupo dono deste arquivo/diretrio.

Como podemos observar, as permisses de acesso so definidas por um conjunto de caracteres, no caso do arquivo1.txt as permisses de acesso so "-rw-r--r--", neste conjunto de caracteres esto definidas respectivamente as permisses de acesso do usurio dono, do grupo dono e dos outros usurios. Veja na figura abaixo como decifrar este triplet:

Agora podemos ver claramente, os caracteres em azul na figura definem as permisses de acesso ao dono do arquivo os caracteres em vermelho na figura definem as permisses de acesso ao grupo dono do arquivo e os caracteres em verde definem as permisses de acesso aos outros usurios. Podemos observar tambm que sempre so utilizados um conjunto de trs caracteres para cada permisso. Vamos agora traduzir o que os caracteres representam: r w x Leitura, simbolizada pela letra r ( de read) Escrita, simbolizada pela letra w (de write) Execuo, simbolizada pela letra x (de execute) Os caracteres sempre aparecem nesta ordem (rwx), caso o usurio no tenha
_____________________________________________________________________________Pgina 57

permisso de execuo um sinal - vai aparecer no lugar do x (ficando rw-). Para tornar isto mais claro vamos observar o output do comando que executamos anteriormente:
-rw-r--r-

1 bruno users 0 May 27 08:14 arquivo1.txt

O usurio dono possui permisso de leitura e escrita e no possui permisso de execuo. O grupo dono possui permisso de leitura e no possui permisso de escrita nem de execuo. Os outros usurios possuem permisso de leitura e no possuem permisso de escrita nem de execuo.

7.3.3. Definindo posse de arquivos e diretrios por usurio com chown


Agora que j sabemos como verificar as permisses de acesso de arquivos e diretrios vamos aprender a definir estas permisses de acesso, primeiro vamos mudar o usurio dono deste arquivo, para isso utilizamos o comando chown, sua utilizao bem simples veja abaixo um exemplo:
# chown root /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-r--r-- 1 root users 0 May 27 08:14 arquivo1.txt

O usurio dono foi alterado, o comando chown pode tambm alterar de uma nica vez o usurio e o grupo, passando como parmetro usurio:grupo, veja o exemplo abaixo:
# chown bruno:webdesign /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-r--r-- 1 bruno webdesign 0 May 27 08:14 arquivo1.txt

7.3.4. Definindo posse de arquivos e diretrios por grupo com chgrp


Existe tambm um comando que altera somente o grupo dono de determinado arquivo/diretorio, este comando o chgrp sua utilizao igualmente simples:
# chgrp users /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-r--r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

_____________________________________________________________________________Pgina 58

7.3.5. O comando chmod


Enquanto os comando chown e chgrp servem para alterar respectivamente o usurio dono e o grupo dono, o comando chmod serve para alterar as permisses rwx vistas anteriormente, o comando chmod recebe dois argumentos: a nova permisso e o objeto de destino. Voc poder alterar as permisses de acesso a um objeto de duas maneiras, a primeira atravs dos triplets (rwx) vistos anteriormente, a segunda atravs de uma tabela numrica que veremos adiante.

7.3.6. Definindo permisses de acesso por triplets


Primeiro, vamos definir esta permisso por triplets. Veja o exemplo abaixo:
# chmod g+w /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-rw-r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Como podemos observar foi utilizado o parmetro g+w, afinal o que isto significa? Quer dizer que o grupo pode escrever no arquivo1.txt. Ento fica claro que os parmetros passados so o tipo de usurio + permisso. Veja na tabela abaixo que tipos de usurios podem ser utilizados: u g o a Usurio dono Grupo dono Outros usurios Todos os usurios Vamos a mais um exemplo para que fique mais claro:
# chmod u+x /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rwxrw-r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Como podemos observar foi utilizado o parmetro u+x, isto significa que o usurio dono pode executar o arquivo1.txt. Como fazemos para retirar permisses? Utilizamos o smbolo - ao invs do smbolo + Veja o exemplo abaixo:
# chmod u-x /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-rw-r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

No lugar do rwx encontramos o rw- isto significa que retiramos a permisso de execuo do usurio dono.

_____________________________________________________________________________Pgina 59

7.3.7. Definindo permisses de acesso pelo modo numrico


A definio de permisses pelo modo numrico funciona de maneira diferente; de uma nica vez definimos as permisses do usurio dono, do grupo dono e dos outros usurios atravs de um nmero passado como parmetro, a tabela de nmeros esta abaixo: Nmero 7 6 5 4 3 2 1 0 Triplet rwx rwr-x r--wx -w--x ---

Veja o exemplo abaixo a utilizao do modo numrico:


# chmod 664 /aulas/aula7/arquivo1.txt $ ls /aulas/aula7/ -rw-rw-r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Utilizamos o parmetro 664; o primeiro nmero serve para o usurio dono, o segundo para o grupo dono e o terceiro para os outros usurios.

7.4 Permisses especiais


Apesar do esquema de permisses do Linux ser bem completo, existem outros tipos de permisses chamadas de permisses especiais, estas permisses so utilizadas em casos especiais onde as permisses padro no funcionam. por exemplo a execuo de um programa de administrao do sistema por um usurio qualquer ou ento criao de um diretrio com permisso de escrita para todos.

7.4.1. Umask
Quando um novo arquivo criado, podemos observar que suas permisses so por padro -rw-r--r--, isto acontece porque todos os arquivos criados com a permisso 666 (leitura e escrita permitida para todos, o que um tanto quanto inseguro) ento o Linux consulta uma varivel do sistema chamada umask que retira a permisso de escrita do grupo e dos outros usurios. Consulte a varivel umask digitando o comando umask no console:

_____________________________________________________________________________Pgina 60

$ umask 0022

Olhando novamente na tabela podemos constatar que o nmero 0 significa ---, e o nmero 2 significa -w-, ou seja a umask vai retirar o -w- do grupo e dos outros. Veja o exemplo abaixo a alterao da varivel umask para que os outros usurios no possam ler os arquivos quando eles so criados:
$ umask 0027

7.4.2. Suid
Todos os processos iniciados pelo usurio possuem as permisses de acesso deste usurio, isto ocorre pois um processo quando executado por um usurio utiliza seu Suid. Diante disto qualquer programa iniciado por ns no pode acessar arquivos e diretrios os quais no tenhamos acesso, esta uma das maiores chaves de segurana do Unix. Vamos ao exemplo, o arquivo de passwords do sistema, /etc/passwd, no pode ser alterado diretamente pelos usurios, pois nas suas permisses podemos constatar que permite que os outros usurios o subescrevam:
$ ls -l /etc/passwd -rw-r--r-- 1 root root 1451 May 25 16:29 /etc/passwd

Ento de que maneira mudamos nossa senha? Vimos anteriormente que atravs do programa passwd, e o programa passwd possui uma permisso especial chamada suid, ou seja todas as aes executadas por este programa rodam com o suid do usurio dono (no caso o root) e no com as permisses do usurio que o executa, com as permisses de usurio root, o programa pode tranqilamente alterar o arquivo / etc/passwd. Vejamos abaixo como identificar quando um programa possui suid:
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 26616 Dec 23 19:40 /usr/bin/passwd

No primeiro triplet de usurio podemos observar que ao invs do caractere x encontramos o caractere s, isto indica que aquele programa possui a permisso suid. Para alterarmos a permisso suid utilizamos o parmetro u+s:
$ chmod u+s /aulas/aula7/arquivo1.txt -rwSrw-r-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Uma informao importante que podemos contatar agora, quando o comando possui o flag x (de execuo) ligado o caractere s aparecer minsculo, se o comando no possuir o flag x o caractere S aparecer maisculo.

_____________________________________________________________________________Pgina 61

7.4.3. Sgid
A permisso sgid funciona da mesma maneira que o suid, ou seja, permite que programas utilizem a permisso do grupo ao invs da permisso de quem utiliza. Sua utilizao semelhante utilizao do comando suid, veja um exemplo:
$ chmod g+s /aulas/aula7/arquivo1.txt -rwSrwSr-- 1 bruno users 0 May 27 08:14 arquivo1.txt

Sua utilizao bastante til em diretrios compartilhados, por exemplo quando um diretrio possui o sgid ligado, todos os objetos criados dentro deste diretrio iro pertencer ao grupo dono deste diretrio.

7.4.3. Sticky
Trabalhar com diretrios compartilhados perigoso, a partir do momento que todos os usurios tem acesso todos os arquivos, eles podem simplesmente deletar qualquer arquivo, inclusive os arquivos de outros usurios, para previnir estes acontecimentos o Linux possui um outro modelo de permisso chamado sticky, que permite que um arquivo ou diretrio s possa ser apagado pelo usurio dono ou pelo root. Um exemplo do sticky o diretrio /tmp:
$ ls -ld /tmp drwxrwxrwt 12 root root 4096 May 27 14:03 /tmp/

No ltimo triplet podemos observar o caractere t no lugar do x, o que indica que o flag stick est ligado. Para adicionar a permisso sticky a um arquivo ou diretrio utilize o comando chmod +t arquivo.

Exerccios
1. Crie um usurio normal com o shell /bin/false, sua home /dev/null, desbloqueie seu password colocando uma senha qualquer, depois disto tente logar em um outro terminal (ALT+F2) com este usurio, observe atentamente o que ocorre. 2. Crie um grupo admin e adicione o usurio recm criado a este grupo. 3. Remova o usurio e o grupo criados anteriormente. 4. Crie um arquivo e altere suas permisses para que o grupo e os outros usurios possam escrever neste arquivo. 5. Modifique com um nico comando a permisso do arquivo recm criado para que a mesma fique assim: rwxrw-r--

_____________________________________________________________________________Pgina 62

Vamos agora iniciar a instalao de novos programas no GNU/Linux, vamos aprender como compilar e instalar programas pelo cdigo fonte, tambm vamos aprender como trabalhar com pacotes RPM e DEB, utilizados em diversas distribuies. Finalmente iremos gerenciar programas instalados, atualizar estes programas e desinstala-los quando for necessrio. Ao final deste captulo voc ser capaz de:

Compilar e instalar e desinstalar programas pelo cdigo fonte. Resolver dependncias de compilao. Instalar, atualizar e desinstalar pacotes RPM. Instalar, atualizar e desinstalar pacotes DEB via apt-get. Instalar, atualizar e desinstalar pacotes DEB. Resolver dependncias binrias.

_____________________________________________________________________________Pgina 63

8.1. Instalando novos programas


A instalao de programas no Linux pode ser feita de diversas maneiras, e oferecendo diversas opes e customizaes. Grande parte dos programas disponveis est em cdigo fonte, o que permite que alteremos o cdigo se precisarmos (visando melhorias de hardware por exemplo), estes programas so compilados em nossa mquina, logo aps so instalados. Podemos tambm encontrar pacotes pr-compilados chamados de pacotes binrios, este pacotes contm o programa pr-compilado genericamente, possibilitando a instalao imediata. O processo de instalao em si no difcil como pensam os iniciantes, at bem fcil, em pouco tempo torna-se praticamente automtico. Sua nica dificuldade (que ocorre de vez em quando) a resoluo de dependncias, estas dependncias so geralmente bibliotecas ou outros programas que precisam estar instalados para que possamos continuar a instalao do programa atual. Para o usurio final, trabalhar com pacotes binrios a maneira mais fcil de gerenciar programas, j o processo de compilao tem como pblico alvo desenvolvedores e usurios avanados pois permitem que especifiquemos opes na hora da compilao, carter didtico ambos os processos sero cobertos neste captulo.

8.2. Compilando pelo cdigo-fonte


Na sua convivncia com Linux vai perceber que existe toda uma comunidade de desenvolvedores de software open-source, ou seja, os programadores desenvolvem programas e no cobram nada pela sua utilizao, inclusive liberam o cdigo fonte. Desta forma vamos encontrar quase que a totalidade de programas no Linux disponveis em cdigo fonte (existem algumas excees, por exemplo Skype, Adobe Acrobat e etc.).

8.2.1. Obtendo programas


Existe uma grande massa de software livre on-line, para gerenciar toda essa massa de dois grandes portais gerenciam projetos de software livre:

http://sourceforge.net http://freshmeat.net

Alm de gerenciar, estes portais hospedam pginas do projeto e tambm os arquivos de cdigo fonte e binrios. Existe tambm uma lista de softwares bem completa no Frum Guia do Hardware, site http://forumgdh.net/viewtopic.php?t=50420, esta lista bem til quando no se sabe ao certo que programa vai atender sua necessidade. Vamos iniciar a instalao de um programa, como exemplo vou instalar o programa Links um navegador de internet no modo texto, primeiro vou procurar o programa no Google: http://www.google.com.br/linux/ , logo de cara j achamos o link para o freshmeat.net, ao clicarmos encontramos diversas informaes como a pgina oficial, o estado de desenvolvimento e tambm os arquivos para download, recomendo que leia atentamente estas informaes pois nas empresas, computadores e servidores de trabalho no podem ser utilizados como ambiente de testes, procure sempre a verso mais estvel o possvel, leia tambm a documentao do software, quanto mais
_____________________________________________________________________________Pgina 64

informao puder ser agregada, menor a probabilidade de erros e problemas. Vamos agora obter o programa, faa o download do arquivo. Para um maior controle do que instalado recomendo que mantenha seus sources em um nico diretrio, /usr/src pode ser utilizado como padro. Com o arquivo salvo neste diretrio vamos inciar o processo de instalao.

8.2.2. Descompactando/Desempacotando
Quando obtemos programas pelo cdigo fonte sua extenso geralmente .tar.gz ou .tar.bz2, estes nada mais so do que um conjunto de arquivos compactados, descompactamos os mesmos com a ferramenta tar, as opes diferem de um para o outro, quando temos um pacote .tar.gz utilizamos o comando tar -zxvf nomedopacote.tar.gz, quando temos um pacote .tar.bz2 utilizamos o comando tar -jxvf nomedopacote.tar.bz2. Depois deste comando ser criado um novo diretrio com o nome do programa, veja o exemplo abaixo:
$ ls links-2.1pre17.tar.gz $ tar -zxvf links-2.1pre17.tar.gz

A listagem grande devido opo v, portanto ser omitida aqui. Pronto, temos um pacote descompactado. Vamos agora analisar arquivos importantes antes da instalao.

8.2.3. Arquivos README/INSTALL


Estes arquivos so muito importantes, o arquivo README vai conter todas as informaes sobre o programa, desenvolvedores, licena, site onde enconlstrar, perguntas freqentes e muitas outras informaes importantes, recomendo que leia atentamente este arquivo pois se tiver alguma dvida existe grande probabilidade de encontrar a resposta aqui. J o arquivo INSTALL cobre as informaes para a instalao dos programas bem como as customizaes para os desenvolvedores, deve ser consultado eventualmente caso precise de ajuda na instalao ou queria ativar uma caracterstica especial do programa na hora da compilao.

8.2.4. Script configure


O script configure um script criado pelos desenvolvedores do programa utilizando a ferramenta automake, na verdade sua principal funo gerar um arquivo chamado Makefile, que vai conter as informaes da sua mquina para a compilao do programa, estas informaes so as dependncias e localizao das mesmas, este script til pois as dependncias podem variar de mquina para mquina e distribuio para distribuio, o que torna cada sistema diferente fazendo-se necessria uma ferramenta como esta. Alguns programas muito antigos no tem este script, fazendo necessria a alterao manual de seu Makefile. Para iniciar o script simplesmente o execute com ./:

_____________________________________________________________________________Pgina 65

$ ./configure checking for ...

A listagem bem grande, geralmente as dependncias sero listadas aqui, caso ocorra alguma pule para a seo 8.2.8, esta a hora em que podemos passar opes para a instalao do programa, a opo --prefix=/diretrio por exemplo instala no diretrio que voc escolher, ou no caso do links --enable-graphics vai habilitar o modo grfico, (li isto no arquivo INSTALL), veja o exemplo abaixo de como executar o script configure com opes:
$ ./configure --enable-graphics checking for ...

Agora que arquivo Makefile foi gerado podemos passar para a prxima fase, a compilao.

8.2.5. Compilando com make


A ferramenta make serve para gerenciar a compilao de diversos arquivos e que compiladores utilizar para estes arquivos. Sua utilizao bem simples, digite make na linha de comando e espere alguns instantes (isto varia muito do tamanho do programa, da capacidade da mquina, pode demorar de segundos minutos ou at horas em programas muito volumosos).
$ make ...

Com isto os programas sero compilados, vamos agora ao passo final da instalao.

8.2.6. Instalando com make install


O passo final simplesmente rodar como root o comando make install (como root pois os usurios normais no tem acesso ao diretrio /usr/local e /usr/bin onde geralmente os arquivos so instalados). Veja abaixo sua utilizao:
# make install ...

Programa instalado. Pode parecer complicado principio mas voc ver no resumo adiante o quo fcil a instalao.

_____________________________________________________________________________Pgina 66

8.2.7. Resumo da instalao por cdigo fonte


Vou agora resumir toda esta seo em trs linhas de comandos:
$ ./configure $ make # make install

Caso no haja nenhuma dependncia, 98% dos programas que voc tiver que instalar pelo cdigo fonte sero as linhas acima.

8.2.8. Resolvendo problemas


De vez em quando no processo de instalao por cdigo fonte, no conseguimos instalar programas imediatamente pois ou o script configure ou a ferramenta make retornam algum erro, portanto devemos resolver este erro para o sucesso da instalao. Na maioria das vezes sua causa a falta de alguma biblioteca, uma vez que o script configure ou a ferramenta make sintam falta de alguma biblioteca necessria para a compilao do programa, o processo ser imediatamente abortado e voc ter que procurar esta biblioteca, caso ela esteja em sua mquina voc dever passar o seu endereo como parmetro para o script configure (isto muito difcil acontecer), a outra opo que seu sistema simplesmente no possua a biblioteca necessria, o que significa que voc precisa procurar na internet e instalar esta biblioteca. As bibliotecas necessrias esto explicitas nos arquivos README e INSTALL. Outras vezes a instalao no funciona por motivos desconhecidos, que podem variar de instalao para instalao, medida que seu conhecimento na utilizao do Linux aumenta, fica mais fcil a resoluo destes problemas, volto a recomendar; leia o arquivo INSTALL sempre que tiver algum problema, busque no Google como fixar este problema e pergunte em fruns na web.

8.2.9. Desinstalando com make uninstall


Caso o programa j esteja instalado corretamente, sua desinstalao semelhante instalao, v ao diretrio source e digite make uninstall, aqui que vai a importncia de manter uma rvore de sources bem organizada.
# make uninstall

Programa desinstalado.

_____________________________________________________________________________Pgina 67

8.3. Trabalhando binrios

com

pacotes

No inicio do captulo foi mencionado que existem pacotes binrios, afinal o que so? So propriamente pacotes de programas pr-compilados que j vem prontos para a instalao, todas as distribuies de Linux utilizam alguma forma de empacotamento. Pacotes foram um grande passo na distribuio do Linux, acabando com problemas de falta de bibliotecas e criando um gerenciamento inteligente de dependncias. A instalao de pacotes binrios oferece algumas vantagens sobre a instalao partir do cdigo fonte: Fcil instalao, atualizao e desinstalao. Proteo de arquivos Gerenciamento inteligente de dependncias. Fcil gerenciamento de programas instalados. Pacotes binrios so de fato uma soluo para distribuio de programas, porm, devemos analisar suas desvantagens: Programas compilados pelo cdigo fonte possuem melhor performance. Pacotes de distribuies diferentes seguem padres diferentes. Pacotes possuem dependncias de outros pacotes. A criao de pacotes complicada e requer conhecimentos avanados. Caso haja a danificao do banco de dados dos pacotes, o sistema vai tornar-se instvel. Trabalhar com pacotes pode ser muito til, uma mo-na-roda em determinados casos, mas requer cuidados. Caso o usurio prefira instalar por pacotes, deve seguir sempre as seguintes recomendaes: 1. Nunca instale pacotes de outras distribuies, cada distribuio utiliza seu padro, de diretrios bibliotecas e arquivos, isto vai tornar seu sistema instvel. 2. Nunca force a instalao de pacotes ou ultrapasse as dependncias de pacotes menos que saiba exatamente o que est fazendo. 3. Leia os manuais do rpm ou deb para saber manusear corretamente pacotes.

8.4. Empacotamento RPM


Sistema de empacotamento RPM (Red Hat Package Manager), foi desenvolvido pela empresa Red Hat, criadora da distribuio Red Hat Linux. um sistema de pacotes robusto que tornou-se padro no s na distribuio Red Hat, mas em diversas outras distribuies como Suse, Mandrake, Conectiva, Yellow Dog, ArchLinux, entre outras. O controle de pacotes RPM feito atravs do console mas existem diversas interfeces grficas e tambm interfaces on-line que permitem o gerenciamento de pacotes RPM.
_____________________________________________________________________________Pgina 68

8.4.1. Obtendo pacotes RPM


Geralmente distribuies baseadas no empacotamento RPM possuem em seus sites um repositrio com pacotes binrios RPM. Vamos tomar como exemplo a distribuio Fedora navegando pelo site oficial encontramos geralmente na seo downloads o repositrio com os pacotes de todas as verses, exemplo: http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/Fedora/RPMS/. Para outras distribuies esta regra a mesma, procure sempre no site oficial os repositrios de pacotes. Um outro mtodo procurar em ferramentas de buscas especiais para pacotes RPM: http://www.rpmfind.net http://rpmseek.com Estas ferramentas nada mais so do que links para os repositrios oficiais. Em ltimo caso procure no Google o pacote do programa, mas lembre-se de que no estando nos repositrios oficiais o pacote pode no funcionar e talvez at danificar o banco de dados RPM, se no encontrar o pacote prefira compilar pelo cdigo fonte.

8.4.2. Instalando pacotes RPM


Para vias de exemplo ser utilizado o pacote elinks-0.9.1-1.i386 da distribuio Fedora Core 2. Com o pacote em mos instalamos utilizando o comando rpm -i nomedopacote.rpm, caso queira exibir o progresso da instalaao recomendo que utilize tambm a opao -vh veja o exemplo abaixo:
# rpm -ivh elinks-0.9.1-1.i386.rpm warning: elinks-0.9.1-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:elinks ########################################### [100%]

Programa instalado, a opo -v serve para que o processo seja comentado na tela, a opo -h serve para exibir a barra de progresso formada pelos ###.

8.4.3. Resolvendo dependncias


Normalmente, pacotes binrios contm dependncias, um exemplo, voc no pode instalar o programa xpdf sem ter instalado antes as bibliotecas do X (servidor grfico). Um dos pontos fortes dos pacotes binrios o gerenciamento de dependncias. Caso haja alguma dependncia no momento da instalao o processo abortado e o prompt imediatamente relata que pacotes ou bibliotecas que devem ser instalados antes que se instale o pacote atual. Para verificar quais so as dependncias de um pacote antes de instalar digite o comando rpm -qpR nomedopacote, veja o exemplo abaixo:

_____________________________________________________________________________Pgina 69

# rpm -qpR xpdf-3.00-3.i386.rpm warning: xpdf-3.00-3.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 ... ...

Utilizando as ferramentas de busca que voc viu no captulo 5 poderia procurar por essas bibliotecas em seu pc, caso no encontre procure na web pelo nome da dependncia, veja o exemplo abaixo
# rpm -ivh xpdf-3.00-3.i386.rpm warning: xpdf-3.00-3.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 error: Failed dependencies: libXm.so.3 is needed by xpdf-3.00-3

O pacote no pode ser instalado pois a biblioteca libXm.so.3 est faltando.Ok Vamos procurar na web por esta biblioteca, utilizando o site rpmfind.net, procure pela biblioteca libXm.so.3, depois de obter a resposta procura a sua distribuio correta:

Achamos o pacote openmotif-2.2.3-6.FC2.1.i386.rpm, precisamos instalar este pacote para resolvermos a dependncia do xpdf.

8.4.4. Atualizando pacotes


O processo de atualizao simples, utilize o comando nomedopacote.rpm, vamos como exemplo atualizar o pacote do elinks: rpm -Uvh

# rpm -Uvh elinks-0.9.2-2.i386.rpm warning: elinks-0.9.2-2.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:elinks ########################################### [100%]

_____________________________________________________________________________Pgina 70

8.4.5. Forando a instalao de pacotes


Apesar do gerenciamento de dependncias ajudar em diversas ocasies, exitem outras que camos em um problema vamos exemplificar; tentamos instalar o pacote X.rpm, o pacote X depende do pacote Y, baixamos ento o pacote Y e ao instalar ele acusa que depende do pacote X, e agora? Isto pode parecer brincadeira mas acontece, a soluo forar a instalao de um pacote para depois instalar o outro. No caso de dependncias somente utilizamos a opo nodeps, no exemplo vou instalar o programa xpdf sem satisfazer a dependncia:
#rpm -ivh --nodeps xpdf-3.00-3.i386.rpm warning: xpdf-3.00-3.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:xpdf ########################################### [100%]

Observe que o programa esta instalado agora, mas no vai funcionar pois mesmo instalado ele continua dependendo do arquivo libXm.so.3 que est faltando. Utilize o nodeps somente em casos semelhantes aos do exemplo X Y acima. Existe uma outra maneira de forar a instalao, vamos supor que voc tenha apagado acidentalmente o arquivo de configurao de algum pacote que j est instalado, que tal reinstalar o pacote para corrigir o problema? Veja o exemplo abaixo:
# rpm -ivh elinks-0.9.2-2.i386.rpm warning: elinks-0.9.2-2.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] package elinks-0.9.2-2 is already installed

A instalao falhou, a soluo neste caso seria forar a instalao, utilizamos a opo force:
# rpm -ivh --force elinks-0.9.2-2.i386.rpm warning: elinks-0.9.2-2.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:elinks ########################################### [100%]

Utilize com cuidado as opes --nodeps e --force pois elas podem bagunar o sistema.

8.4.6. Gerenciamento de pacotes RPM


O gerenciamento de pacotes RPM visto at agora totalmente textual, porm tudo pode ser feito atravs da interface grfica, auxiliando os usurios. Existem diversas ferramentas que gerenciam pacotes, cada distribuio inclui sua ferramenta de gerenciamento, existem tambm ferramentas genricas como o kpackage da sute KDE, que permitem um gerenciamento completo de pacotes independente de distribuio, veja no exemplo abaixo o programa kpackage:
_____________________________________________________________________________Pgina 71

Existem vantagens na interface grfica, muito mais rpido gerenciar seus pacotes por estas ferramentas, atravs delas podemos ver os pacotes instalados, os pacotes disponveis no servidor e tambm os pacotes que podem ser atualizados. O bom administrador deve saber como gerenciar de ambas as formas, a interface grfica no entanto vai ser uma mo na roda muitas vezes. Abaixo vou colocar os links para outras ferramentas grficas de gerenciamento de pacotes:

Suse YaST: http://www.suse.net.au/en/private/products/suse_linux/i386/yast.html RedHat: http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/chgraphical-rpm.html Mandrake: http://www.mandrakelinux.com/en/demos/Spotlight/SoftwareMgr/

8.4.7. Desinstalando pacotes RPM


A desinstalao de pacotes RPM pode ser feita pelos utilitrios grficos ou pelo console com a opo -e, as regras de dependncia aqui tambm contam, se voc desinstalar o pacote X e o pacote Y depender dele o pacote Y no mais vai funcionar. Vamos desinstalar o pacote xpdf.

_____________________________________________________________________________Pgina 72

# rpm -e xpdf

A boa notcia que no precisamos escrever o nome completo dos pacotes. Recomendo novamente que leia o manual do rpm, existe muita informao til nestas pginas, e um conhecimento universal, diversas distribuies utilizam o RPM como padro e saber como trabalhar com isso vai ajudar na utilizao destas distribuies.

8.5. Empacotamento Debian


Um outro padro utilizado so os pacotes DEB, utilizados pela distribuio Debian e outras distribuies baseadas em Debian (Knoppix, Kurumin). Pacotes DEB so mantidos pela equipe Debian e passam por um controle rigoroso de testes. Todos os pacotes Debian oficiais possuem um mantenedor responsvel por este pacote, o que resulta em um sistema muito bem organizado. O controle de segurana tambm bem rgido quanto aos pacotes da distribuio, alm do longo perodo de testes a que so submetidos os pacotes, existe um repositrio somente com pacotes livres de vulnerabilidades.

8.5.1. Ferramenta apt


A distribuio Debian por padro utiliza o sistema de gerenciamento de pacotes apt (Advanced Packaging Tool), a principal funo desta ferramenta a instalao e atualizao de pacotes. Uma caracterstica positiva do apt que ele gerencia as dependncias e as instala automaticamente, poupando o trabalho de procurar cada dependncia. O apt no entanto somente um gerenciador, para que funcione necessrio um frontend, o mais bsico (e mais utilizado) o apt-get, sua utilizao consiste na seguinte sintaxe: apt-get <ao> <pacote>, abaixo uma tabela de aes: install <pacote> Instala novos pacotes. update Atualiza a lista de pacotes disponveis obtida nos repositrios contidos no arquivo /etc/apt/sources.list upgrade dist-upgrade remove <pacote> Realiza a atualizao dos pacotes de sua distribuio Realiza a atualizao de sua distribuio Remove pacotes instalados.

Exitem dois outros frontends para o apt que merecem destaque:

A aptitude um frontend modo-texto, a utilizao de comandos a mesma do apt-get (install, update...), possui tambm uma interface no console para o gerenciamento de

_____________________________________________________________________________Pgina 73

atualizaes, listagem de pacotes, instalao e remoo, screenshot abaixo:

Synaptic um front end grfico, tem as mesmas caractersticas do aptitude com a vantagem de ser grfico e permitir a navegao pelo mouse, screenshot:

_____________________________________________________________________________Pgina 74

Com a introduo j realizada vamos agora aprender a utilizar o apt.

8.5.2. O arquivo /etc/apt/sources.list


Este arquivo contm a lista de repositrios que sero utilizados como fonte de dados para downloads de pacotes, um exemplo de entrada do sources.list: deb http://ftp.debian.org/debian/ distribuio secao1 secao2 secao3 deb-src http://ftp.debian.org/debian/ distribuio secao1 secao2 secao3 A tabela abaixo explica a formatao destas linhas: deb / deb-src Tipo de pacote, pacote binario ou sources do pacote.
http://ftp.debian.org/debian/ distribuio

Endereo do repositrio. Tipo de distribuio:


stable testing unstable

seo

Seo a que pertence o pacote, veja relao em http://www.debian.org.br/doc/debian-policy/charchive.html#s-sections Abaixo um exemplo de sources.list real:

_____________________________________________________________________________Pgina 75

# cat /etc/apt/sources.list deb http://ftp.br.debian.org/debian/ unstable main non-free contrib deb-src http://ftp.br.debian.org/debian/ unstable main non-free contrib deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free deb http://ftp.us.debian.org/debian/ unstable main non-free contrib

Todos os repositrios oficiais Debian possuem o mesmo sincronismo de informaes, isto significa por exemplo que o repositrio do Brasil possui informaes e pacotes to atualizados quanto o repositrio dos EUA. Existe uma informao muito importante, so os repositrios de arquivos inscritos no arquivo /etc/apt/sources.list que vo definir se sua distribuio ser stable (estvel), testing (de testes), unstable (instvel). Uma breve explicao (retirada de http://www.debian.org.br/releases/ ): stable A distribuio stable contm a ltima distribuio oficialmente lanada pela Debian. Essa a verso de produo do Debian, ela que recomendada primeiramente. A distribuio stable do Debian GNU/Linux est atualmente na verso 3.0r5 e seu codinome woody. Ela foi lanada em 16 de Abril de 2005. testing A distribuio testing contm pacotes que no foram aceitos numa verso stable ainda, mas eles j esto na fila para serem aceitos. A principal vantagem de usar essa distribuio que ela tem verses mais novas dos softwares. O suporte de segurana oficial para esta distribuio comeou em 3 de maio de 2005. Veja o FAQ do Debian para mais informaes sobre o que testing e como ela se torna stable. A distribuio testing atual chama-se sarge. unstable na distribuio unstable que o desenvolvimento ininterrupto do Debian ocorre. Geralmente, os usurios dessa distribuio so os prprios desenvolvedores e pessoas que gostam de emoes fortes. A distribuio unstable atual chama-se sid.

_____________________________________________________________________________Pgina 76

8.5.3. Atualizando a lista de pacotes disponveis


Com os repositrios j indicados vamos agora atualizar a lista de pacotes do apt, digite o comando apt-get update:
# apt-get update

O download vai iniciar, pode demorar alguns minutos dependendo da sua conexo. Aps o download a lista de pacotes vai estar atualizada, esta lista a fonte de todas as outras aes portanto deve sempre que possvel estar atualizada.

8.5.4. Instalando pacotes Debian via apt


A instalao de pacotes via apt realizada pelo comando apt-get install pacote (ou aptitude install pacote), o apt vai localizar o pacote, realizar o download, instalar o pacote e caso haja a necessidade ser aberta uma tela de configurao. Caso haja alguma dependncia do pacote o apt vai automaticamente realizar o download (junto com o pacote inicial) e vai instalar estas dependncias. Veja abaixo exemplo de instalao:
# apt-get install lynx Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: lynx 0 upgraded, 1 newly installed, 0 to remove and 689 not upgraded. Need to get 1855kB of archives. After unpacking 4690kB of additional disk space will be used. Get:1 http://ftp.br.debian.org unstable/main lynx 2.8.5-2 [1855kB] Fetched 1855kB in 29s (63.7kB/s) Selecting previously deselected package lynx. (Reading database ... 145057 files and directories currently installed.) Unpacking lynx (from .../archives/lynx_2.8.5-2_i386.deb) ... Setting up lynx (2.8.5-2) ...

No exemplo foi instalado o pacote lynx.

8.5.5. Atualizando pacotes Debian via apt


Para atualizar pacotes Debian de sua distribuio utilize o comando apt-get upgrade, isto vai atualizar os pacotes instalados para a verso mais atual da distribuio. Geralmente a lista de pacotes bem grande e existem atualizaes dirias.
# apt-get upgrade

Caso queira atualizar sua distribuio inteira utilize o comando apt-get dist_____________________________________________________________________________Pgina 77

upgrade:
# apt-get dist-upgrade

8.5.6. Removendo pacotes Debian via apt


Para remover pacotes Debian de sua distribuio utilize o comando apt-get remove pacote, note que se outros pacotes dependerem deste sero tambm removidos portanto utilize com cuidado, de qualquer forma o apt mostra na tela quais so os pacotes que sero removidos.
# apt-get remove lynx Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: lynx 0 upgraded, 0 newly installed, 1 to remove and 690 not upgraded. Need to get 0B of archives. After unpacking 4690kB disk space will be freed. Do you want to continue? [Y/n] Y (Reading database ... 145134 files and directories currently installed.) Removing lynx ...

8.5.7. Outras formas de obter pacotes Debian


Apesar de ser muito til, o apt no a nica forma de se obter pacotes Debian, eles podem ser obtidos da mesma maneira que pacotes RPM, ou seja executando o download do pacote e instalando manualmente. A boa notcia agora que os pacotes so facilmente localizados pelo site http://packages.debian.org que o repositrio oficial Debian.

8.5.8. Instalando / atualizando pacotes Debian


Vamos instalar o pacote lynx, primeiro encontre este pacote nos repositrios, faa o download. Com o pacote em mos, instale utilizando a ferramenta dpkg com a opo -i (de instalar):

_____________________________________________________________________________Pgina 78

# dpkg -i lynx_2.8.5-2_i386.deb Selecting previously deselected package lynx. (Reading database ... 145057 files and directories currently installed.) Unpacking lynx (from lynx_2.8.5-2_i386.deb) ... Setting up lynx (2.8.5-2) ...

Pacote instalado.

8.5.9. Resolvendo dependncias


Quando encontramos um pacote pelo site http://packages.debian.org passamos por sua pgina de informaes, nesta pgina pode ser encontrada a relao de dependncias deste pacote. Veja o exemplo abaixo:
# apt-get upgrade

Estes pacotes devem estar prviamente instalados para que o lynx possa funcionar. Para listar os pacotes instalados digite o comando dpkg -l ou utilize o Synaptic / Aptitude.
_____________________________________________________________________________Pgina 79

8.5.10. Forando a instalao de pacotes Debian


Em algumas ocasies podemos ter problemas na instalao de pacotes, exatamente como ocorrem com os pacotes RPM, (lembra da histria dos pacotes X e Y?), a soluo no caso seria forar a instalao de pacotes. A opo force no caso de pacotes Debian tem mais opes internas, cada situao pode requerer uma soluo diferente de force, geralmente utilizando a opo --force-all resolve qualquer parada mas recomendo que leia a opo --force-help (que mostra as outras opes.

8.5.12.Desinstalando pacotes Debian


Para desinstalar pacotes Debian utilize o comando dpkg -r pacote:
# dpkg -r lynx (Reading database ... 145134 files and directories currently installed.) Removing lynx ...

Caso algum outro pacote dependa deste, o o gerenciador dpkg no vai permitir a desisntalao, restando duas opes; ou remova pacote por pacote ou force a desisntalao, de qualquer modo recomendo que utilize o apt para estas tarefas.

Exerccios
1. Faa o download do cdigo fonte do programa links, ou copie do diretrio / aulas/aula8/, descompacte e instale com a opo --enable-graphics ativada. 2. Caso esteja em uma distribuio com empacotamento RPM, tente instalar o pacote apt-get, habilitando a utilizao de apt em outras distribuies. 3. Caso esteja em uma distribuio com empacotamento Debian, instale o pacote alien e tente converter pacotes RPM para Debian. 4. Leia o manual do apt.

_____________________________________________________________________________Pgina 80

Depois de dominarmos o Linux pelo modo textual vamos agora iniciar a utilizao do ambiente grfico. Neste captulo vamos configurar o ambiente grfico do zero. Tambm sero apresentados os window managers, que so os gerenciadores de janelas. So diversas, as mais utilizadas so o GNOME e o KDE e sero explicadas com detalhes, as menos utilizadas sero somente citadas. Este captulo essencialmente conceitual e voc vai se sentir em casa caso j tenha alguma prtica com outro sistema operacional baseado em janelas tal como o Mac OS ou Windows. Ao final deste captulo o aluno ser capaz de:

Configurar o ambiente grfico no Linux Utilizar o GNOME Utilizar o KDE Configurar o window manager.

_____________________________________________________________________________Pgina 81

9.1. O que o servidor X?


O servidor X o ambiente grfico do Linux, que gerencia todos os dispositivos que iro interagir graficamente com o usurio, o X controla os seguintes dispositivos de hardware: Teclado Mouse Placa de vdeo Monitor O servidor X permite uma srie de opes, como por exemplo a utilizao de mais de um monitor para um s desktop, a utilizao de ambiente grfico via rede e tambm a acelerao 3D para grficos e jogos. No ano de 2004 o projeto Xfree deixou de ser suportado, o novo projeto que mantm o servidor X chamado X.org. Existem algumas distribuies que ainda utilizam o Xfree, a configurao dos dois sistemas semelhante, vamos iniciar a configurao do ambiente grfico.

9.1.1. Configurando o servidor X


A configurao do X esta contida em um arquivo de texto, os arquivos de texto sero diferentes caso esteja utilizando o Xfree ou o X.org, a localizao dos arquivos de configurao tambm varia de distribuio para distribuio, tornando difcil especificar uma localizao genrica, na minha maquina a localizao dos arquivos e a seguinte: Servidor Arquivo Xfree X.org /usr/X11R6/lib/X11/XF86Config /etc/X11/xorg.conf

O segredo aqui localizar os arquivos pelo nome. Seria muito complicado configurar o ambiente grfico por um arquivo de texto, imagine configurar a resoluo do mouse especificando sua resoluo DPI e sua velocidade, para isso existem ferramentas que configuram o servidor X. Estas ferramentas alteram o o arquivo de configurao de seu servidor X, configurando os hardwares especificados no incio da seo. Para o xfree existem duas ferramentas muito utilizadas, a primeira o xf86config, esta ferramenta roda em modo texto e faz uma srie de perguntas sobre o tipo de teclado, resoluo do monitor, porta do mouse, placa de vdeo e etc. Ao final a ferramenta xf86config escreve diretamente no arquivo de configurao. A segunda ferramenta o xf86cfg, apesar de parecidos este ltimo cria uma interface grfica temporria para configurao e carrega um servidor X genrico com funes que funcionam na maioria dos casos. A configurao neste caso grfica, o usurio configura o teclado, o mouse o monitor e a placa de vdeo alterando os valores nos menus e formulrios. Como o Xorg um servidor grfico mais novo e atualizado sua configurao feita graficamente utilizando o comando Xorg com a opo --configure (Xorg --configure), da mesma forma que o Xfree, abrir uma janela grfica com os mdulos genricos que funcionam na maioria dos computadores. Existem ferramentas para a configurao do Xorg como o xorgcfg, mas estas no so padro como no Xfree.
_____________________________________________________________________________Pgina 82

Geralmente a configurao do X tende a ser complicada pois so exigidas muitas informaes. Prefira sempre utilizar valores bsicos para que seu sistema grfico funcione, se ele funcionar otmimize as opes at que chege a um ponto desejado.

9.1.2. Iniciando e finalizando o servidor X


Depois de configurado corretamente, o servidor X ser iniciado com o comando startx, a partir deste momento o servidor X vai ficar hospedado no terminal virtual de nmero 7, isto quer dizer que ao pressionarmos "Ctrl+Alt+F7" vamos para o terminal grfico e quando pressionarmos "Ctrl+Alt+FX" (este FX pode variar de F1 F6) iremos novamente para o console mas sem fechar a parte grfica. Quando inicia, o servidor X l o arquivo ~/.xinitrc e executa o window manager padro, veremos adiante o que so Window Managers. Para reiniciar o servidor X a qualquer hora basta digitar "Ctrl+Alt+Backspace", desta forma o X vai desligar e ligar novamente, em qualquer momento. Quando o X desligado/reiniciado todos os programas grficos que rodavam atravs da parte grfica tambm so finalizados, portanto utilize a reinicializao com cuidado. Para finalizar a gui, geralmente o window manager padro tem um mtodo de desligamento de parte grfica. Caso precise desligar a parte grfica manualmente mate o processo chamado Xorg ou Xfree86

9.2. Window Managers


Apesar do servidor X permite a utilizao do modo grfico, porm isto no basta pois o usurio no pode executar nenhuma ao diretamente no servidor X. Para que o usurio se comunique com o servidor X foi criado um outros softwares que permitem que o usurio se comunique com o servidor X, so os chamados Window Managers, tambm conhecidos como gerenciadores de janelas. Existem diversos gerenciadores, desde os mais simples com poucos recursos, at os mais sofisticados repletos de funcionalidades e opes. Window Managers que nada mais so do que programas que criam janelas, menus, cones, rea de trabalho entre outros tens de interface grfica, alguns deles possuem programas especficos. Eles convivem entre si sem problemas, o usurio pode conter mais de um Window Manager em sua mquna caso queira, isto vai ocupar espao mas ele ter a opo de utilizar um outro Window Manager quando bem entender.

9.3. KDE
O KDE (K Desktop Environment) o window manager mais utilizado no mundo Linux, tem uma interface agradvel, possui muitas ferramentas e tambm bem completo no quesito de utilizao podendo se equiparar interface grfica do sistema operacional Windows. O KDE permite todp tipo de aes, criao de novos arquivos e links, montagem de dispositivos, navegao pela rede, emfim, um timo sistema de janelas para usurios de desktop. Abaixo um screenshot:

_____________________________________________________________________________Pgina 83

KDE 3.3 no Kurumin Linux 4.0

9.3.1. Configurando o KDE


Todas as configuraes do KDE podem ser feitas atravs de seu utilitrio de configurao, o kcontrol, veja um screenshot:

9.3.2. Otimizando o KDE


A interface KDE bem completa, exite tambm um site especializado na customizao do KDE que fornece novos cones, novos papis de parede, estilos e etc. O site : http://www.kde-look.org . A instalao de novos temas e cones feita atravs do Kcontrol, ou atravs de pacotes rpm ou deb.

_____________________________________________________________________________Pgina 84

9.4. GNOME
O Gnome tambm um Window Manager bem completo, possui uma srie de programas, e muito bonito. Um dos pontos fortes que o Gnome ligeiramente mais rpido que o KDE, pois utiliza as bibliotecas GTK para desenho das janelas. um sistema voltado para o usurio de Desktop. Veja Abaixo um screenshot do Gnome:

Gnome 2.8 no Debian-BR-CDD

9.4.1. Configurando o GNOME


Assim como o KDE, o Gnome possui um utilitrio de configruao em sua barra de tarefas:

_____________________________________________________________________________Pgina 85

9.4.2. Otimizando o Gnome


O Gnome tambm permite a sua otimizao, dois timos sites so: http://art.gnome.org/ http://www.gnome-look.org/

9.5. Outros Window Managers


Existem muitos outros window managers, que agradam os mais diversos gostos. Abaixo seguem os links de suas pginas:

Fluxbox: http://www.fluxbox.org/ Blackbox: http://blackboxwm.sourceforge.net/ Enlightenment: http://www.enlightenment.org/ Xfce: http://www.xfce.org/ Window Maker: http://www.windowmaker.org/ IceWM: http://www.icewm.org/

_____________________________________________________________________________Pgina 86

Hoje em dia, o suporte a hardware no Linux vasto, muito raro ver componentes de hardware no funcionar no linux por uma limitao de drivers. A configurao em si no difcil, e com um pouco de prtica torna-se corriqueira. Ao final deste capitulo o aluno ser capaz de:

Configurar placas de rede Configurar placas de rede Wi-Fi Configurar placas de som Configurar modem Configurar impressoras Configurar scanners Configurar multi-funcionais Configurar gravadores de CD/DVD Configurar cmeras digitais

_____________________________________________________________________________Pgina 87

10.1. Introduo aos mdulos do kernel


Antes de mais nada devemos conhecer os mdulos do kernel, Um mdulo um componente do kernel que pode ser carregado a qualquer instante pelo usurio, este componente visa uma otimizao qualquer ou ativar o suporte a algum dispositivo, inclusive de hardware. Portanto quando queremos instalar uma placa de rede somente colocando a placa no PC no basta para que ela funcione, devem ser caregados os mdulos desta placa para que o Kernel possa se comunicar com ela. A ativao de mdulos feita utilizando o comando modprobe nomedomodulo. Veja o exemplo abaixo:
# modprobe 8139too

Para listar os mdulos que esto em utilizao no momento utilize o comando lsmod:
# lsmod Module md5 ipv6 pcmcia irtty_sir sir_dev ...

Size 3840 244480 17668 5888 13996

Used by 1 8 2 2 1 irtty_sir

Os mdulos ficam guardados no diretrio /lib/modules/(versaodokernel)/ (a verso do kernel pode ser obtida com o comando uname -r). Mdulos podem ser compilados parte e instalados, da mesma maneira que instalamos programas normais pelo cdigo fonte. Quando instalamos um novo mdulo devemos sempre atualizar a nossa base de mdulos utilizando o comando depmod -a. Para incluir a inicializao de um mdulo no boot altere o arquivo /etc/modules adicionando o nome do mdulo, recomendo que leia o manual de modules.conf.

10.2. Configurando placas de rede


A configurao de interfaces de rede tranqila, basta carregar o mdulo da placa para que ela comece a funcionar. Caso no saiba qual mdulo carregar ou no saiba o modelo de sua placa utilize o comando lspci, este utilitrio vai fazer uma busca em / proc/ (que o sistema virtual criado pelo kernel) e vai retornar todos os componentes detectados pela motherboard, inclusive os que no foram configurados. Neste output procure pela palavra Ethernet, veja o exemplo abaixo:

_____________________________________________________________________________Pgina 88

d3v1l@Shinji:~/info/idepac$ lspci 0000:00:00.0 Host bridge: Silicon Integrated Systems [SiS] 650/M650 Host (rev 80) 0000:00:01.0 PCI bridge: Silicon Integrated Systems [SiS] Virtual PCI-to-PCI bridge (AGP) 0000:00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS962 [MuTIOL Media IO] (rev 14) 0000:00:02.1 SMBus: Silicon Integrated Systems [SiS]: Unknown device 0016 0000:00:02.3 FireWire (IEEE 1394): Silicon Integrated Systems [SiS] FireWire Controller 0000:00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] 0000:00:02.6 Modem: Silicon Integrated Systems [SiS] AC'97 Modem Controller (rev a0) 0000:00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0) 0000:00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller 0000:00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 90) 0000:00:0a.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 02) 0000:01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 65x/M650/740 PCI/AGP VG A Display Adapter

Como podemos verificar, a placa ethernet uma Sis 900, vamos procurar no Google/Linux (http://www.google.com.br/linux) esta placa, com poucos minutos podem ser encontradas diversas referncias. Agora basta carregar o mdulo:
# modprobe sis900

Logo aps carregar o mdulo, utilize o comando dmesg e leia as ltimas linhas para ver se sua placa foi carregada com sucesso:
# dmesg ... ... ... sis900.c: v1.08.07 11/02/2003 ACPI: PCI interrupt 0000:00:04.0[A] -> GSI 7 (level, low) -> IRQ 7 divert: allocating divert_blk for eth1 eth0: Realtek RTL8201 PHY transceiver found at address 1. eth0: Using transceiver found at address 1 as default eth0: SiS 900 PCI Fast Ethernet at 0xa000, IRQ 7, 00:11:2f:32:6a:77.

A interface agora vai se chamar eth0, isso indica que a placa foi instalada e configurada.

_____________________________________________________________________________Pgina 89

10.3. Configurando placas de rede Wi-Fi


A configurao de redes wi-fi semelhante, porm, algumas destas placas no entanto no possuem mdulos no kernel oficial. O que resta ento compilar o mdulo diretamente do cdigo fonte. Uma tima fo nte de refermncia na instalao de novas placas de rede o tutorial de instalao de placas wi-fi no Linux, do Guia do Hardware: http://www.guiadohardware.net/tutoriais/092/ est bem completo e cobre difersas placas diferentes. Algumas placas no tem suporte oficial ao Linux ainda, a melhor maneira de fazelas funcionar utilizando o ndiswrapper, este programa emula um driver do windows, transformando-o em mdulo, o kernel vai pensar que est trabalhando com um mdulo nativo e a placa vai funcionar, o desempenho pode cair um pouco e algumas funcionalidades da placa tambm podem ficar de fora mas a placa vai funcionar basicamente. Existem mais informaes sobre o Ndiswrapper no site mencionado acima.

10.4. Configurando placas de som


As placas de som no Linux so instaladas atravs do projeto ALSA (Advanced Linux Sound Archtecture). So um conjunto de drivers e bibliotecas que permitem a utilizao da maioria das placas de som disponveis hoje no mercado. O site oficial do projeto ALSA http://www.alsa-project.org/ , l podem ser encontrados tutoriais de instalao das placas e relao de placas suportadas, vamos instalar uma como exemplo: Com o comando lspci procure a sua placa de som:
# lspci ... 0000:00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0) ...

Ok, vimos que e uma Sis, agora devemos baixar os drivers, bibliotecas e utilitrios, no site do projeto ALSA, faa o download da ltima verso dos arquivos alsa-driver, alsalib, alsa-utils. Devemos tambm verificar o site com informaes sobre a instalao de sua placa. Crie o diretrio /usr/src/alsa e mande os para este diretrio.
# mkdir /usr/src/alsa # mv alsa* /usr/src/alsa

Descompacte o alsa-driver:

_____________________________________________________________________________Pgina 90

/usr/src/alsa# tar -xvjf alsa-driver-1.0.9rc4a.tar.bz2 ... ...

No diretrio do driver, comece o processo de instalao:


/usr/src/alsa/alsa-driver-1.0.9rc4a# ./configure /usr/src/alsa/alsa-driver-1.0.9rc4a# make /usr/src/alsa/alsa-driver-1.0.9rc4a# make install

Ok, placas instaladas, agora ajuste a permisso para os dispositivos de audio para que todos possam ler e escrever nesta placa:
# chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi

O repita o processo com alsa-lib:


/usr/src/alsa/# tar -xvjf alsa-lib-1.0.9rc4.tar.bz2 /usr/src/alsa/# cd alsa-lib-1.0.9rc4 /usr/src/alsa/alsa-lib-1.0.9rc4# ./configure /usr/src/alsa/alsa-lib-1.0.9rc4# make /usr/src/alsa/alsa-lib-1.0.9rc4# make install

E tambm com alsa-utils:


/usr/src/alsa/# tar -xvjf alsa-utils-1.0.9rc4.tar.bz2 /usr/src/alsa/# cd alsa-utils-1.0.9rc4 /usr/src/alsa/alsa-utils-1.0.9rc4# ./configure /usr/src/alsa/alsa-utils-1.0.9rc4# make /usr/src/alsa/alsa-utils.0.9rc4# make install

Finalmente carregue os mdulos da sua placa:


# modprobe snd-xxxx

O xxxx e o nome da placa, procure no site do alsa, e cheque o dmesg para ver se sua placa foi corretamente carregada.

_____________________________________________________________________________Pgina 91

10.5. Configurando modem


No mercado existem dois tipos de modems, os modems ISA antigos e os novos Winmodems (tambm chamados de softmodems) O Linux tem amplo suporte aos Modems convencionais ISA, sua instalao fcil e no so necessrios mdulos para que este seja configurado, os modems so detectados como portas Seriais (ttySX). J a configurao de winmodems muito complicada, estes modems no funcionam por hardware (no so hardware de verdade) funcionam por software, e seus software foi desenvolvido para Windows, muitos dos softmodems foram mais com alguns destes modems possuem software para linux mas a cada mudana de kernel suas configuraes dixam de funcionar. Para que um Winmodem funcione no Linux necessrio antes de tudo muita pacincia e tambm informao, por serem muitos casos diferentes no ser coberta na apostila a instalao de Winmodems, verifique no site http://www.linmodems.org mais informaes sobre este tipo de modem.

10.6. Configurando impressoras


A configurao de impressoras no linux tambm bem tranqila, feita atravs do CUPS, que um utilitrio de impresso do Unix. A maioria das distribuies j vem com o CUPS e os drivers de impresso, mas caso no estejam instalados pegue os pacotes binrios do cups ou ento compile do cdigo fonte, o site oficial http://www.cups.org . Depois que o cups estiver instalado inicie o servio:
# /etc/init.d/cups start

Agora para a instalao de uma nova impressora, abra o navegador e digite o endereo http://127.0.0.1:631 :

_____________________________________________________________________________Pgina 92

1. A instalao feita via web, para adicionar uma impressora clique em "Do administration Tasks" insira como username: root e como senha: a senha de root. 2. Na interface de administrao clique em "Add Printer". 3. Agora no campo Name digite o nome da impressora sem espaos por exemplo Laserjet1015. No campo Location no obrigatrio mas caso queria especificar o nome do computador ou departamento onde est a impressora o local aqui, no deixa de ser uma boa prtica de administrao. O camplo Description tambm no obrigatrio mas pode ser inserida uma descrio sobre a impressora. Acabando aqui clique em Continue. 4. Nesta pgina, selecione onde se encontra o dispositivo fisicamente. Se for na porta paralela (como mais comum) selecione "Parallel Port #1", Para uma impressora USB selecione a porta desejada. Existe tambm a opo de adicionar uma impressora que est na rede, caso seja este o caso na prxima pgina digite o endereo da impressora. Vamos supor que nossa impressora seja paralela, ento selecionaremos "Parallel Port #1". Acabando aqui clique em "Continue". 5. Nesta pgina devemos selecionar o fabricante da impressora, vamos supor que nossa impressora seja uma HP. Clique em "Continue". 6. Selecione agora o modelo de sua impressora, vamos supor que nossa impressora seja uma LaserJet 1015, procure na lista e selecione esta impressora. Algumas impressoras possuem dois tipos de driver, o hpijs e o ljet4 por exemplo. D sempre
_____________________________________________________________________________Pgina 93

preferncia para o hpijs pois este possui o driver mais estvel. Acabando aqui clique em "Continue". Ok a impressora foi adicionada, agora clique em "Printers" na barra superior e mande imprimir uma pgina de teste clicando em "Print Test Page". Uma informao importante: para que impressoras USB funcionem corretamente necessrio que o mdulo usbprinter esteja carregado.

10.7. Configurando scanners


A configurao de scanners tambm feita atravs do SANE (Scanner Access Now Easy), como no caso do CUPS, a maioria das distribuies atuais possuem o SANE, se ja no tiver instalado procure os pacotes binrios nos repositrios de sua distribuio ou ento compile o cdigo fonte. O site oficial do SANE http://www.sane-project.org/ . Um excelente manual de configurao de scanners pode ser encontrado em : http://howtos.linux.com/howtos/Scanner-HOWTO/index.shtml . Caso o scanner seja USB (que so a maioria absoluta no mercado), basta iniciar o sane que o seu scanner ser automaticamente detectado. Para detectar utilize o comando sane-find-scanner.
$ sane-find-scanner found USB scanner (vendor=0x03f0, product=0x2f11) at libusb:002:002

10.8. Configurando multi-funcionais


A configurao de multi-funcionais feita exatamente da mesma forma, que equipamentos nicos. A diferena que precisamos antes instalar uma biblioteca que comunique ao kernel que o perifrico possui mais de uma funcionalidade. O nome desta biblioteca HPOJ (Hewllet Packard Office Jet) que apesar de ser desenvolvido e suportado pela HP, possui suporte a outros muito-funcionais. Para instalar este mdulo procure os pacotes binrios de sua distribuio. Depois de instalado utilize o comando ptal-init setup, este utilitrio vai perguntar se um dispositivo paralelo, USB ou network (rede), vamos supor que seja um dispositivo USB veja o resultado:
# ptal-init setup Probe for USB-connected devices ([y]/n)? y Probing "/dev/usb/lp0"... Found "psc 1200 series" with serial number "BR43B4G0XX5H". This device is already set up as "mlc:usb:psc_1200_series".

Ok foi detectado, agora desligue e ligue o equipamento (multifuncional) e finalmente digite dmesg para verificar se foi detectado.
_____________________________________________________________________________Pgina 94

10.9. Configurando CD/DVD

gravadores

de

A configurao de gravadores de cds e dvds varia de acordo com a verso utilizada do Linux. A maioria das distribuies atuais vem com o utilitrio cdrecord e o cdrdao. Ambos so necessrios para a instalao e gravao de cds, novamente ressalto, caso no esteja intalada baixe os pacotes. Para o kernel 2.4 necessrio que se carregue o mdulo ide-scsi:
# modprobe ide-scsi

Outra coisa necessria que se passe um parmetro no boot do sistema, caso esteja usando LILO adicione a seguinte linha ao arquivo /etc/lilo.conf: append="hdx=ide-scsi" O trecho do arquivo ficar desta forma:
image=/vmlinuz label=Linux read-only append="hdx=ide-scsi"

Caso esteja utilizando o GRUB, dever ser adicionado o parmetro diretamente na linha do kernel, o trecho do arquivo que ser alterado ficar desta forma:
title Fedora Core (2.6.5-1.358smp) root (hd0,0) kernel /boot/vmlinuz-2.6.5-1.358smp ro root=LABEL=/ hdx=ide-scsi initrd /boot/initrd-2.6.5-1.358smp.imgptal-init setup

Uma coisa, eu utilizei o drive como hdx em ambos os exemplos, no ser este o drive, o x no caso significa a letra da unidade, para verificar qual a sua unidade de disco utilize o comando dmesg | grep '^hd.:' , veja o exemplo abaixo:
# dmesg | grep '^hd.:' hda: IC25N040ATMR04-0, ATA DISK drive hdb: ASUS SCB-2408, ATAPI CD/DVD-ROM drive hda: max request size: 1024KiB hda: 78140160 sectors (40007 MB) w/1740KiB Cache, CHS=16383/255/63, UDMA (100) hda: cache flushes supported hdb: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)

No exemplo foi verificado que o drive hdb o gravador de Cds. Agora reinicie o computador, e utilize o cdrecord para detectar seu drive:
_____________________________________________________________________________Pgina 95

# cdrecord -scanbus Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jrg Schilling Linux sg driver version: 3.1.20 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'IDE-CD ' 'R/RW 12x8x32 ' ' 3.0' Removable CD-ROM 0,1,0 1) * 0,2,0 2) * 0,3,0 3) * 0,4,0 4) * 0,5,0 5) * 0,6,0 6) * 0,7,0 7) *

Anote os trs nmeros que aparecem na primeira coluna ao lado do drive, no caso do exemplo o nmero 0,0,0. Pronto o Cdr no kernel 2.4 foi configurado. No kernel 2.6 a coisa muda, o suporte j vem habilitado no kernel, para verificar seu gravador utilize o comando cdrdao scanbus , veja o exemplo abaixo:
# cdrdao scanbus Cdrdao version 1.1.9 - (C) Andreas Mueller <andreas@daneb.de> SCSI interface library - (C) Joerg Schilling Paranoia DAE library - (C) Monty Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables. Using libscg version 'schily-0.8' ATA:0,1,0 ASUS , SCB-2408 , 1.2B

10.10. Configurando cmeras digitais


Cmeras digitais no Linux semelhante configurao das memrias flash usb, basta carregar o mdulo usb-storage:
# modprobe usb-storage

Agora o dispositivo ser reconhecido na interface SCSI e poder ser montado normalmente, utilize o dmesg para verificar a unidade, provavelmente ser a /dev/sda. Nas verses mais novas do kernel o mdulo usb-storage foi substitudo por um driver nativo, exatamente como os CDRs. Para acessar a unidade basta montar a unidade /dev/ubx (sendo esse x a unidade correta), novamente invoque o dmesg para saber a mesma.

_____________________________________________________________________________Pgina 96

muito importante que os computadores se comuniquem entre-si formando redes, a prpria internet uma grande rede e neste captulo vamos aprender a configurar o acesse redes no Linux. Ao final deste captulo o voc ser capaz de:

Configurar uma rede Acessar a internet via modem Acessar a internet via banda-larga Acessar uma rede windows Acessar uma rede Linux

_____________________________________________________________________________Pgina 97

11.1. Configurando a rede


A configurao de uma rede TCP-IP feita atravs da ferramenta ifconfig, nela especificamos de uma s vez todos os parmetros para que possamos subir a rede. a formatao deste arquivo segue a seguinte regra:
ifconfig interface <numero.do.ip.aqui> netmask <mascara.de.sub.rede> up

Vamos subir a interface de rede:


# ifconfig eth0 192.168.0.30 netmask 255.255.255.0 up

Isto sobre a rede e temos acesso agora a outros hosts.

11.2. Configurando via DHCP


A configurao via DHCP mais fcil, supondo que existe algum servidor DHCP na rede o endereamento passa a ser automtico, basta utilizar o comando dhclient (o programa dhclient deve estar instalado):
# dhclient eth0 Internet Software Consortium DHCP Client 2.0pl5 Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved. Please contribute if you find this software useful. For info, please visit http://www.isc.org/dhcp-contrib.html Listening on LPF/eth0/00:00:00:00:00:00 Sending on LPF/eth0/00:00:00:00:00:00 Sending on Socket/fallback/fallback-net DHCPREQUEST on eth1 to 255.255.255.255 port 67 DHCPACK from 192.168.0.50 SIOCADDRT: File exists bound to 192.168.0.60 -- renewal in 21600 seconds.

11.3. Acessando a Internet


Para acessar a internet devemos ter um provedor (teoricamente), devemos configurar tambm o nosso DNS, que resolve os nmeros IPs transformando-os em nomes. Por exemplo uol.com.br o nome do IP 200.221.2.45, experimente digitar este IP no navegador e veja o que acontece. Adicione a seguinte linha ao arquivo / etc/resolv.conf : nameserver 200.204.0.10

_____________________________________________________________________________Pgina 98

11.3.1. Discando via modem


Para discar e conectar internet via modem voc deve criar um link simblico da porta onde est o modem at o arquivo /dev/modem, veja o exemplo abaixo:
# ln -s /dev/ttyS1 /dev/modem

Aps a criao do atalho, configure o programa wvdial (o discador padro do Linux) utilizando o programa wvdialconf, veja o exemplo abaixo:
# wvdialconf /etc/wvdial.conf ...

A sada desse comando bem grande portanto no ser includa nesta apostila. No arquivo recm criado (/etc/wvdial.conf) altere as configuraes para as oferecidas pelo seu provedor, veja o exemplo abaixo:
[Dialer Defaults] Phone = 5552233 Username = bruno Password = bruno New PPPD = yes Modem = /dev/modem Baud = 115200 Init1 = AT&F1&C1&D2X3 Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ISDN = 0 Modem Type = Analog Modem Dial Prefix = 0

O arquivo acima s um exemplo, altere somente as opes de username, senha e telefone. Com tudo configurado inicie o wvdial depois de discado, verifique se a conexo est ok com o comando ifconfig:
# ifconfig ppp0 Link encap:Point-to-Point Protocol inet addr:123.234.123.1 P-t-P:123.0.0.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 ...

11.3.2. Acessando via banda-larga


A internet banda-larga acessada diretamente pela interface de rede, basta configurar uma rede como vimos no inicio do captulo, no caso de uma rede com IP fixo devemos passar as informaes que o provedor nos passou, a nica diferena que pode acontecer aqui que o provedor pea um gateway. A configurao do gateway consiste em utilizar o comando route add default gw <numero.ip.do.gateway> veja o exemplo abaixo:
_____________________________________________________________________________Pgina 99

# route add default gw 192.168.0.254

Caso sua conta no provedor seja de IP dinmico devemos utilizar o DHCP exatamente como no inicio do captulo, tudo configurado automaticamente. Alguns servios de banda larga utilizam um mtodo de autenticao chamado de PPPoE (PPP over Ethernet), o que significa que voc deve entrar com usurio e senha antes de acessar. Para se conectar desta forma voc dever instalar os pacotes pppoe, pppoeconf e ppp, (distribuies com pacotes rpm possuem o rp-pppoe que entra no lugar do pppoe e pppoeconf). A configurao de distribuies baseadas em Debian consiste na ferramenta pppoeconf (que faz tudo automaticamente), j distribuies baseadas em Red Hat utilizam o comando adsl-setup. A configurao dos dois bem simples qualquer dvida pode ser acmpanhada pelo manual.

11.4. Acessando uma rede Windows


Mquinas com sistemas Windows e Linux conversam entre si via rede e tem total interoperabilidade, servidores Linux podem ter clientes Windows trabalhando, podemos compartilhar impressoras, diretrios, arquivos entre os dois sistemas. Grande parte das empresas que utilizam Linux atualmente possuem redes mistas com estaes Windows e Linux, nesa seo vamos aprender basicamente como compartilhar arquivos e diretrios com uma rede Windows bsica.

11.4.1. Apresentando o Samba


O Projeto Samba consiste em um conjunto de ferramentas que tornam a comunicao de uma mquina Linux com uma mquina Windows possvel. Isto um grande negcio pois como vimos no captulo 1, o Linux tem suas vantagens como servidor. um projeto robusto e completo, possui vasta documentao e tem diversas opes de trabalho. Para mais informaes visite o site http://www.samba.org . As distribuies incluem em seus repositrios pacotes binrios com o samba, caso tenha que instalar manualmente os pacotes so samba, samba-common, samba-doc.

11.4.2. Configurando o Samba via SWAT


Existe uma ferramenta grfica para a configurao do samba, geralmente as distribuies no habilitam este pacote por default, mas ele pode ser instalado sem problemas atravs de pacotes. Depois de instalado precisamos configurar o acesso (temporrio pois meio inseguro), no arquivo /etc/inetd procure por uma linha que comea com swat. caso encontre descomente esta linha, caso no encontre adicione a linha abaixo:
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

Reinicie o servidor inetd:


# /etc/init.d/inetd restart

Feito isto acese o endereo http://127.0.0.1:901 em seu navegador:

_____________________________________________________________________________Pgina 100

Interface do SWAT

Atravs dele podemos administrar o samba. As configuraes preincipais esto na seo global, veja abaixo uma configurao bsica de exemplo: Seo Global: workgroup Grupo de trabalho da rede netbios name security passdb backend username map os level preferred master local master domain master Nome da mquina na rede Sistema de segurana da rede, selecione USER Gerenciador de senhas smbpasswd arquivo com as senhas dos usurrios /etc/samba/smbusers Prioridade entre estaes na rede selecione 23 Auto Auto Auto

encrypt passwords A partir do Windows 98 as senhas eram Encriptadas, selecione Yes

Configurao bsica realizada, lembre-se esta configurao preferencial quando o Linux for cliente na rede.

_____________________________________________________________________________Pgina 101

11.4.3. Montando uma unidade de rede


Montar uma unidade de rede Windows semelhante a montar qualquer outra unidade de disco, o que difere aqui o sistema de arquivos e as opes utilizadas. Vamos supor que o computador TOAD roda windows e tem o diretrio c:\ compartilhado, para montar este diretrio:
# mount -t smbfs -o username=usuario //numero.ip.do.toad/C /mnt/toad Password:

Digite a senha do usurio e pronto, a estao windows pode ser acessada agora. O usurio que mencionamos acima o usurio cadastrado no windows. Para adicionar esta entrada ao /etc/fstab, insira a linha abaixo (substituindo os valores) no final do arquivo:
//numero.ip.do.toad/C /mnt/toad smbfs username=usuario,noauto 0 0

Agora podemos acessar a unidade simplesmente digitando mount /mnt/toad.

11.4.4. Compartilhando diretrios


Voltando no SWAT para compartilhar um diretrio clique na seo "Shares", especifique um nome para o compartilhamento e clique em "Create Share" Veja abaixo as principais opes da seo Share: comment Comentrio do compartilhamento. path read only browseable Caminho do diretrio por exemplo /alunos/aulaX Permisso para leitura e escrita

Deixa o compartilhamento como visvel ou invisvel (se for invisvel o compartilhamento ainda vai existir mas no vai aparecer) Quando acabar clique em Commit Changes para que as alteraes faam efeito. Os usurrios que acessarem o compartilhamento devem estar cadastrados no sistema tambm e adicionados ao samba, para isso na seo Password preencha os campos adicionando o usurio como mostra a figura abaixo:

Clique em Add New User e pronto o usurio pode acessar o sistema.

_____________________________________________________________________________Pgina 102

11.4.5. Compartilhando impressoras

Na seo "Printers" escolha uma das impressoras na caixa de seleo, caso queira selecionar todas de uma vez selecione "printers" e clique em "Choose Printer". Abaixo seguem as principais opes da seo Printers: comment path printable browseable Comentrio da impressora. Caminho do spool de impresso, mantenha /var/spool/samba . Permisso de impresso. Deixa a impressora como visvel ou invisvel (se for invisvel a impressora ainda vai existir mas no vai aparecer)

11.5. Acessando uma rede Linux


O servio de redes padro do Linux o NFS (Network File System), que permite a montagem de blocos de dispositivos de rede, um sistema de redes muito rpido e seguro. Para a utilizao do NFS precisamos do pacote nfs-common e nfs-kernel-server. Quando utilizamos uma rede Linux-Linux com compartilhamento NFS nenhuma configurao necessria para acessarmos os arquivos remotos, o nico requisito que as duas mquinas tenham o NFS instalado.

11.5.1. Montando uma unidade de rede


Montamos compartilhamentos NFS da mesma forma que qualquer unidade de disco, vamos supor que o computador remoto YOSHI possua o diretrio /var/www/ compartilhado via NFS, para acessarmos utilizamos a seguinte sintaxe:
# mount -t nfs -o soft numero.ip.do.yoshi:/var/www/ /mnt/yoshi

Foi montado com sucesso, para adicionar esta entrada ao /etc/fstab, insira a linha abaixo (substituindo os valores) no final do arquivo:
numero.ip.do.yoshi:/var/www /mnt/yoshi nfs soft 0 0

Agora podemos acessar a unidade simplesmente digitando mount /mnt/yoshi. Montei com a opo soft pois quando um host cai e esta opo no est especificada o cliente trava at o host voltar ativa.

11.5.2. Compartilhando uma unidade de rede


Para compartilhar uma unidade de rede via NFS devemos alterar o arquivo / etc/exports, a sintaxe a seguinte: <diretorio> <numero.ip.da.rede/mascara.de.sub.rede>(opcoes) Por exemplo o host Yoshi, vamos ver como ele compartilha os arquivos:
/var/www/ 192.168.0.0/255.255.255.0(sync,rw)

Leia o manual exports para saber o que so e para que server as opes sync, rw.
_____________________________________________________________________________Pgina 103

Agora para exportar (compartilhar) os diretrios, utilize o comando exportfs -a :


# exportfs -a

Para ver os arquivos compartilhados utilize o comando exports sem opes.

_____________________________________________________________________________Pgina 104

Este apndice tem no faz parte do curso, mas visa orientar o aluno na instalao do sistema operacional GNU/Linux, tendo como base a instalao da distribuio Fedora Core 2. Sero abordadas nesse captulo as principais rotinas de instalao em um guia prtico seguindo passo-a-passo uma instalao comum.

Instalar qualquer distribuio do sistema GNU/Linux. Iniciar uma instalao do zero ou atualizar uma instalao j realizada. Fazer um Sistema GNU/Linux conviver com outro Sistema Operacional num mesmo disco rgido. Fazer Dual Boot (escolher na inicializao qual sistema operacional vai iniciar). Definir quais pacotes e programas sero instalados.

_____________________________________________________________________________Pgina 105

A.1. Consideraes Iniciais


A instalao da maioria das distribuies Linux simples e descomplicada. Como j foi visto antes, iremos utilizar a distribuio Fedora, porm, a instalao de todas as distribuies semelhante, todas tem de passar pelos mesmos processos bsicos (seleo de layout de teclado, seleo de idioma, particionamento do disco rgido, seleo de pacotes, configurao da conta de root, instalao do boot loader e etc), portanto, quem sabe instalar uma distro aprende com facilidade instalar qualquer outra. Algumas mquinas antigas funcionam melhor com distribuies mais simples, sem muitos recursos, portanto antes de instalar uma distribuio cheque se a mquina vai rodar a mesma satisfatoriamente. Por ser um sistema completo, algumas distribuies colocam muitos programas que vm junto com o Linux, isso nos proporciona um sistema completo pois tudo o que precisamos est incluso em nossa distribuio. Por outro lado, essa incluso de programas torna o sistema extremamente grande, as distros atuais tem diversos Cds. tambm necessrio escolher quais programas sero instalados no sistema para no ficarmos com um computador cheio de inutilidades. Em um Linux bsico instalado de uma forma correta conseguimos gastar at 200 MB.

A.1.1. Onde conseguir o Linux?


Como j foi dito antes, o Linux software livre e conseguimos baix-lo da internet de graa, a pergunta como? Existem diversos sites que proporcionam o download de ISOs de Linux, uma ISO uma imagem de um CD gravada em um arquivo. Tudo depende da distribuio que voc procura, uma boa fonte de pesquisa o site: http://www.linuxiso.org nele voc encontra listas de sites de download divididos por distribuio. Nos sites das distribuies voc encontra downloads tambm, divididos por pases. necessrio ter gravador de CD caso queria baixar e instalar em Cds. Se sua conexo discada, fica invivel baixar 3 Cds de instalao, ento eu recomendo que os compre no site: http://www.guiadohardware.net/cd/linux/gnu.php o preo dos Cds relativamente baixo 10 Reais e voc recebe o Linux em casa. Note bem que o Linux continua sendo gratuito, cobrada unicamente a mo de obra e as mdias.

A.1.2 Outros meios de instalao.


Existem outros meios de instalao sem a utilizao de Cds, estes meios porm so pouco utilizados devido dificuldades ou inviabilidades. Estes meios so por instalao via rede (denominada Instalao via NFS), a qual j temos um servidor Linux e este compartilha os arquivos de instalao via rede, e via FTP, a qual instalamos diretamente da internet as distros acessando os servidores onde esto hospedadas. Estas situaes devem ser utilizadas quando for conveniente a instalao mas implica em uma dificuldade maior. Existem tambm outros meios especficos de algumas distribuies mas foge do intuito do curso explicar estes meios, caso queira mais informaes utilize ferramentas de busca na internet.

_____________________________________________________________________________Pgina 106

A.2 Bootando o Linux


Boot significa, a grosso modo, iniciar a mquina. Para que possamos instalar o Linux precisamos fazer com que a mquina inicie o instalador contido no CD, este o processo de bootar o Linux. Todas as mquinas mais novas podem iniciar o CD automaticamente, o que torna o processo de boot automtico, basta colocar o CD e iniciar a mquina e pronto, o instalador entra em ao. J em algumas mquinas mais antigas ou mquinas que no possuem drive de CD-Rom a instalao dificulta j que no conseguimos iniciar o instalador automaticamente. Neste caso camos nas situaes descritas no tpico anterior (2.1), caso a mquina destino seja antiga recomendo que instale distribuies mais simples, como a Slackware por exemplo, informaes de como instalar via disquete esto em http://www.slackware.com, e se sua mquina for nova mas no tenha drive de CD caimos na situao 2.1.2, uma boa fonte de informaes de como construir um disquete de boot e instalar via rede (o Fedora) est nesta pgina: http://www.redhat.com/archives/fedora-docs-list/2004-August/msg00031.html

A.3 O Instalador
Com o CD-Rom carregado no sistema o instalador ser iniciado. Uma tela semelhante a esta dever aparecer:

Basta digitar Enter que o Kernel ser carregado e o processo de instalao ter inicio. S a nvel de curiosidade o instalador do Fedora Linux (e do Red Hat tambm) se chama Anaconda. Quando o anaconda iniciar nos ser a apresentada a tela de boas vindas:

_____________________________________________________________________________Pgina 107

esta tela unicamente informativa, no canto esquerdo temos notas dos autores da distribuio. Na prxima tela escolhemos a linguagem da instalao. Note que o portugus do Brasil est na lista.

Na prxima tela podemos selecionar o layout do teclado que utilizaremos:


_____________________________________________________________________________Pgina 108

Na prxima tela configuramos o mouse para a instalao:

Na prxima tela ser perguntado se voc deseja atualizar uma instalao antiga ou se deseja simplesmente iniciar uma instalao nova.

_____________________________________________________________________________Pgina 109

At agora no foi necessria muita ateno na instalao. O passo seguinte importante pois vai definir o perfil de instalao do sistema.

A.3.1 Definindo o perfil da instalao


A instalao de um sistema GNU/Linux varia dependendo da finalidade do sistema e do tipo de mquina. Por exemplo, existem programas que no so necessrios de serem instalados em uma Workstation (Estao de trabalho de uma rede), e que devem ser instalados em um Server (Servidor de servios). Um servidor no precisa de ambiente grfico j uma Workstation precisa (na maioria dos casos), o instalador do Fedora resolve esta questo lhe oferecendo alguns perfis de escolha:

_____________________________________________________________________________Pgina 110

Personal Desktop: Computador pessoal de casa. Workstation: Estao de trabalho de uma rede corporativa. Server: Servidor de servios, pode ser um servidor da rede ou de internet. Custom: Todo e qualquer outro PC que no se enquadra acima. Aqui voc seleciona os pacotes manualmente. O depois de selecionado o instalador vai automaticamente selecionar os pacotes indicados, no entanto, voc ainda pode indicar os programas que queira em uma etapa mais adiante. Eu recomendo fortemente que voc selecione um dos perfis acima citados pois ter poucos problemas de configurao, analise criticamente a finalidade do computador que voc est instalando.

A.3.2 Particionando o disco rgido


Aqui vem uma parte que geralmente assusta quem iniciante, particionando o disco. Como foi dito anteriormente, precisamente no Capitulo 1 tpico 1.2 (Caractersticas), o sistema de arquivos do Linux o Ext3, portando o disco precisa ser formatado neste sistema de arquivos para que possamos instalar e operar o linux adequadamente, existem outros sistemas de arquivos suportados pelo linux como o Journaling, Ext2, ReiserFS e etc. porm eu recomendo o Ext3. Dessa forma, precisamos dividir, especificar e formatar a unidade de disco rgido em que vamos instalar o Linux. A ferramenta de gerenciamento de parties do instalador se chama Diskdruid:

_____________________________________________________________________________Pgina 111

Caso queira que o instalador particione seu disco automaticamente selecione a primeira opo. Caso queria customizar as parties no seu disco rgido selecione a segunda opo, o particionamento manual no ser coberto por este curso justamente por ser de nvel intermedirio a avanado. Na prxima tela, o instalador pergunta como deve fazer o particionamento automtico:

_____________________________________________________________________________Pgina 112

Na 1 opo ele pergunta se deve remover somente as parties Linux do sistema (caso j tenha parties Ext3 formatadas no disco) Na 2 opo ele pergunta se deve apagar todo o contedo contido no disco. Use essa opo com muito cuidado pois vai deletar TUDO no disco. Na 3 opo ele pergunta se deve manter todas as parties e usar o espao livre.

Se for utilizar um outro sistema operacional que j esteja instalado na mquina utilize as opes 1 ou 3. Isto varia de situao, por exemplo se voc j tinha algum Linux instalado na sua mquina ento utilize a opo 1, agora se no tinha e tem espao livre no disco (espao no formatado) utilize a opo 3. Cuidado!: Ter espao livre aqui significa estritamente espao no formatado, ou seja espao que nenhum outro sistema operacional possa acessar. Se for utilizar somente o Linux utilize a opo 2 j que no h a necessidade de preservar nenhum dado. O prximo passo cobre a instalao de um bootloader, ele quem vai gerenciar a escolha de que sistema operacional voc escolhe toda vez que liga o micro.

_____________________________________________________________________________Pgina 113

A.3.3 Configurando o Bootloader (GRUB)


O bootloader um gerenciador de boot, quando voc liga a mquina ele te mostra um menu com os sistemas operacionais e lhe pergunta qual deles ser iniciado. O bootloader padro do Fedora o GRUB que bem completo e bonito, na tela

abaixo mostrado o menu de configurao do GRUB: Ele vai detectar automaticamente os sistemas operacionais da mquina. Caso queira editar algum nome ou parmetro clique em Edit.

A.3.4 Configurando a Rede e Firewall.


Na prxima tela se o instalador detectou corretamente a sua placa de rede, ele ir perguntar se deseja configurar a rede. Caso saiba todos os parmetros de sua rede edite vontade. Para fins didticos editaremos isso manualmente depois.

_____________________________________________________________________________Pgina 114

Imediatamente depois o instalador ir lhe perguntar se deseja ativar o firewall clique na segunda opo, (Enable firewall, Habilitar Firewall) e deixe como est. Este curso no abordar maiores detalhes sobre firewall por ser um tema de nvel avanado.

A.3.5 Idioma Padro / Zona de Horrio.


Nas prximas telas o instalador lhe pergunta respectivamente qual idioma ser instalado no computador e em que cidade se localiza o mesmo.

_____________________________________________________________________________Pgina 115

A.3.6 Senha de root


O usurio root ser explicado mais adiante, porm j requerida uma senha. Digite uma senha e no a divulgue a ningum, com esta senha o acesso ao sistema ilimitado. Lembre-se de digitar uma senha que no esquea.

A.3.7 Finalizando
Com todas as configuraes j realizadas e a senha de root definida, o instalador lhe pergunta se deseja adicionar mais algum pacote (lembra que isso foi dito no item 2.3.1? Bom aqui ser realizada esta customizao, caso seja necessria ou por gosto do usurio, vale a pena dar uma olhada. Caso queria instalar imediatamente clique na primeira opo, se quiser explorar os pacotes e programas e eventualmente instalar mais algum clique na segunda.

_____________________________________________________________________________Pgina 116

Na prxima tela o sistema lhe informa que foi tudo concludo e ele ir instalar o sistema, cuidado pois esta sua ltima chance antes que o instalador inicie a cpia de arquivos.

_____________________________________________________________________________Pgina 117

A cpia de arquivos ser iniciada, e pode demorar um pouco dependendo da capacidade da mquina. No meio da cpia, o instalador vai lhe pedir para inserir o prximo CD de instalao, retire o anterior, coloque o prximo e prossiga normalmente. Ao final da instalao o instalador vai lhe apresentar a tela de concluso e vai pedir para reiniciar a mquina, retire o CD que estiver na bandeja e reinicie.

_____________________________________________________________________________Pgina 118