Beruflich Dokumente
Kultur Dokumente
Objetivo do curso:
Esta apostila tem como objetivo ser uma ensinar aos estudantes e entusiastas o sistema operacional
GNU/Linux informações para a operação e manutenção 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 César Brito Sant'Anna
Todo conteúdo aqui contido pode ser livremente copiado, distribuído e modificado mediante os termos da
GNU Free Documentation License versão 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. Também consultei o e-book Entendendo e dominando o Linux do autor Carlos E.
Morimoto disponível 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 comentário, esta apostila esta em constante desenvolvimento todas as
dicas são bem vindas.
Sobre o autor.
Bruno César Brito Sant'Anna é um universitário cursando Ciência da computação na Universidade São
Judas Tadeu (USJT), atua como profissional de informática (administrador de rede, programador e técnico
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: autenticação 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 antivírus Clamav:
http://www.dicas-l.unicamp.br/dicas-l/20050203.php
Recomendações:
Para um bom aproveitamento do conteúdo desta apostila sugiro que siga as seguintes recomendações:
• Pratique imediatamente o que aprendeu, desta forma o conhecimento recém adquirido será fixado com
mais facilidade.
• É preciso interesse em aprender, se tiver vontade de aprender algo, você terá menos dificuldade do que
algo que não gosta e está se obrigando.
• Decorar não adianta, pode até atrapalhar seus estudos, algumas vezes nos vemos forçados a decorar
alguns comandos mas o objetivo é entender qual é a função deste comando.
_____________________________________________________________________________Página 1
Índice:
Prefacio
Apresentação 09
Como será a sua aula 09
Requisitos necessários 10
Mercado de trabalho para administradores Linux 10
_____________________________________________________________________________Página 2
3.2.4.Comando cp 26
3.2.5.Comando rm 26
3.2.6.Comando rmdir 26
3.3.Comando ls 27
3.4.Exercícios 29
_____________________________________________________________________________Página 3
6.2.Controle de processos 47
6.2.1.Iniciando um aplicativo 47
6.2.2.Parando um aplicativo 47
6.2.3.Listando processos 47
6.2.4.Foreground e background 48
6.2.5.Finalizando um aplicativo 49
6.2.6.Iniciando um aplicativo em background 49
6.2.7.Múltiplos processos em background 50
6.2.8.Prioridades de processos 50
6.3.Exercícios 51
_____________________________________________________________________________Página 4
8.2.3.Arquivos README/INSTALL 65
8.2.4.Script configure 65
8.2.5.Compilando com make 66
8.2.6.Instalando com make install 66
8.2.7.Resumo da instalação por código fonte 67
8.2.8.Resolvendo problemas 67
8.2.9.Desinstalando com make uninstall 67
8.3.Trabalhando com pacotes binários 67
8.4.Empacotamento RPM 68
8.4.1.Obtendo pacotes RPM 69
8.4.2.Instalando pacotes RPM 69
8.4.3.Resolvendo dependências 69
8.4.4.Atualizando pacotes RPM 70
8.4.5.Forçando a instalação de pacotes 71
8.4.6.Gerenciamento de pacotes RPM 71
8.4.7.Desinstalando pacotes RPM 72
8.5.Empacotamento Debian 73
8.5.1.Ferramenta apt 73
8.5.2.O arquivo /etc/apt/sources.list 75
8.5.3.Atualizando a lista de pacotes disponíveis via apt 77
8.5.4.Instalando pacotes Debian via apt 77
8.5.5.Atualizando pacotes Debian via apt 77
8.5.6.Removendo pacotes via apt 78
8.5.7.Outras formas de obter pacotes Debian 78
8.5.8.Instalando / atualizando pacotes Debian 78
8.5.9.Resolvendo dependências 79
8.5.10.Forçando a instalação de pacotes Debian 80
8.5.11.Desinstalando pacotes Debian 80
8.6.Exercícios 80
_____________________________________________________________________________Página 5
9.4.2.Otimizando o GNOME 86
9.5.Outros Window Managers 86
_____________________________________________________________________________Página 6
A.3.3.Configurando o Bootloader (GRUB) 114
A.3.4.Configurando a rede 114
A.3.5.Idioma Padrão / Zona de Horário 115
A.3.6.Senha de root 116
A.3.7.Finalizando 116
_____________________________________________________________________________Página 7
Aula inicial, serão apresentados os materiais do curso, a metodologia utilizada em classe
e o professor. Também serão apresentados os requisitos necessários para o curso e uma
perspectiva do mercado de trabalho.
_____________________________________________________________________________Página 8
Apresentação
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. Serão cobertas desde a introdução ao Linux até rotinas
avançadas de administração. Em todos os capítulos colocarei links para sites da internet
onde podem ser encontradas mais informações sobre o tópico abordado.
Para melhorar o entendimento do curso, dividi em capítulos 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 navegação mais rápida, basta ir ao índice, verificar a pagina que contem o conteúdo da
aula, depois disso vamos clicar na caixa branca abaixo do programa e especificamos a
pagina. Um exemplo abaixo:
_____________________________________________________________________________Página 9
aprendido, com alguns comandos úteis.
Requisitos necessários
Por ser um sistema operacional avançado, o Linux requer alguns conhecimentos
que foram abordados nos módulos anteriores do curso do IDEPAC e/ou conhecimentos
equivalentes:
● Conhecimento básico em internet.
● Conhecimento básico em redes de computadores.
● Conhecimento com editores de texto.
● Conhecimento básico em Hardware.
Mercado de trabalho
O Linux é um sistema operacional com o foco corporativo, ou seja sua utilização é
ampla em empresas, pois tem três fatores decisivos que tornam viável sua
implementação; segurança, estabilidade e baixo custo. O mercado de trabalho para nós
administradores de sistemas com conhecimento Linux é bem promissor, grande parte das
empresas já estão em processo de migração. Um outro fator positivo para estudantes e
profissionais de Linux, o governo brasileiro e favorável à implementação de software livre
em repartições públicas e instituições governamentais em geral.
Por outro lado, a utilização em computadores pessoais, também chamados de
desktops é baixa se comparada com outros sistemas operacionais, sendo utilizada em
casos distintos. O Linux ainda está em processo de crescimento, nos próximos anos a
tendência e de que se estabilize tanto no mercado corporativo quanto no mercado de
computadores pessoais.
_____________________________________________________________________________Página 10
Neste capítulo será apresentado ao aluno o Sistema Gnu/Linux, suas características e
seus principais conceitos. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 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 – Finlândia. É um sistema operacional de
código aberto distribuído gratuitamente pela Internet. Você não precisa pagar nada para
utilizar, não é crime fazer copias e instalar em diversos computadores. Diante disto a
comunidade Linux cresce de uma maneira impressionante, muitos desenvolvedores e
usuários contribuem com o Linux fazendo otimizações e melhorias diversas. Um bom
exemplo são as traduções feitas para o português do Brasil.
1.2. Características
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 contribuição 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 .
• Multiusuário .
• Suporte a nomes extensos de arquivos e diretórios (255 caracteres) .
• Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha, PowerPc,
ARM, Unix, Windows, DOS, etc.
• Proteção entre processos executados na memória RAM .
• Suporte a mais de 63 terminais virtuais (consoles) .
• Modularização - O GNU/Linux somente carrega para a memória o que é usado durante o processamento,
liberando totalmente a memória assim que o programa/dispositivo é finalizado .
• Devido a modularização, os drivers dos periféricos e recursos do sistema podem ser carregados e
removidos completamente da memória RAM a qualquer momento.
• Não há a necessidade de se reiniciar o sistema após a modificar a configuração de qualquer periférico ou
parâmetros de rede. Somente é necessário reiniciar o sistema no caso de uma instalação interna de um
novo periférico, falha em algum hardware (queima do processador, placa mãe, etc.).
• Não precisa de um processador potente para funcionar. O sistema roda bem em computadores 386Sx 25
com 4MB de memória RAM (sem rodar o sistema gráfico X, que é recomendado 8MB de RAM).
• O crescimento e novas versões do sistema não provocam lentidão, pelo contrário, a cada nova versão os
desenvolvedores procuram buscar maior compatibilidade, acrescentar recursos úteis e melhor
desempenho do sistema .
• Não é requerida uma licença 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 permissões de acesso a arquivos, diretórios e programas em execução na memória RAM.
• NÃO EXISTEM VÍRUS NO LINUX! Em 13 anos de existência, nunca foi registrado NENHUM tipo de
infecções desde que respeitadas as recomendações padrão de política de segurança e uso de contas
privilegiadas (como a de root, como veremos adiante).
• Rede TCP/IP mais rápida que no Windows e tem sua pilha constantemente melhorada. O GNU/Linux
tem suporte nativo a redes TCP/IP e não depende de uma camada intermediária como o WinSock. Em
acessos via modem a Internet, a velocidade de transmissão é 10% maior.
• Roda aplicações DOS através do DOSEMU
• Roda aplicações Windows através do WINE.
• Suporte a rede via rádio amador.
• Suporte a dispositivos Plug-and-Play.
_____________________________________________________________________________Página 12
• Suporte a dispositivos USB.
• Vários tipos de firewalls de alta qualidade e com grande poder de segurança de graça.
• Possui recursos para atender a mais de um endereço IP na mesma placa de rede, sendo muito útil para
situações de manutenção em servidores de redes ou para a emulação de "mais computadores"
virtualmente.
• O sistema de arquivos usado pelo GNU/Linux (Ext3) organiza os arquivos de forma inteligente evitando a
fragmentação e fazendo-o um poderoso sistema para aplicações multi-usuárias exigentes e gravações
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, é distribuído gratuitamente junto com o Linux. O mesmo
acontece com o Sendmail.
• Por ser um sistema operacional de código aberto, você pode ver o que o código fonte (o que foi digitado
pelo programador) faz e adapta-lo as suas necessidades ou de sua empresa. Esta característica é uma
segurança a mais para empresas sérias e outros que não querem ter seus dados roubados.
• Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os novos como obsoletos.
Nome: Debian
Site: www.debian.org
Característica: O Debian é considerado pelos profissionais uma distribuição
estável pois todos os programas inclusos são rigorosamente
testados (testes que levam de dois a três anos). É desenvolvido
por profissionais e não tem vínculos com nenhuma empresa.
Nível de utilização: Intermediário / Avançado.
Nome: Conectiva
Site: www.conectiva.com.br
Característica: O foco da distribuição Conectiva é o público brasileiro, é de fácil
utilização, tem suporte nacional (pago). É desenvolvida pela
Empresa Conectiva S/A. esta possui diversos cursos de
especialização.
Nível de utilização: Iniciante.
_____________________________________________________________________________Página 13
Nome: Red Hat
Site: www.redhat.org
Característica: A distribuição norte americana Red Hat Linux é bem conhecida
pelos profissionais pois além de ser antiga, é bem documentada
de fácil utilização e pode ser usada tanto em Desktops quanto em
Servidores. Deu origem ao projeto Fedora.
Nível de utilização: Iniciante / Intermediário.
Nome: Slackware
Site: www.slackware.com
Característica: A distribuição Slackware já é um pouco mais difícil, a maioria das
configurações dela são feitas editando manualmente arquivos de
texto, isto é um pesadelo para iniciantes mas por outro lado torna-
se uma distribuição extremamente customizável, proporcionando
um contato direto com o Linux Grande parte de sua
documentação encontra-se em inglês.
Nível de utilização: Intermediário / Avançado.
Nome: SuSe
Site: www.novell.com/linux/suse/
Característica: A distribuição alemã SuSe é de fácil utilização, tem grande suporte
à hardware. È uma distribuição ideal para quem está começando
pois é muito amigável e tem um sistema de instalação de
programas robusto. Pode ser utilizada tanto em Desktops quanto
em Servidores
Nível de utilização: Iniciante.
Nome: Kurumin
Site: www.kurumin.org
Característica: A distribuição brasileira Kurumin é de fácil utilização e tem como
foco o usuário iniciante, roda direto do CD-Rom e não é necessária
a sua instalação. Eu recomendo pessoalmente que seja utilizada só
em primeiros contatos com o Linux pois sua utilização fica limitada
à sua interface gráfica. Usuários que já tem conhecimento no
sistema Linux podem utilizar o console de comando mas suas
dependências de pacotes e conflitos de hardware a tornam uma
distribuição não indicada para utilização à longo prazo.
Nível de utilização: Iniciante.
_____________________________________________________________________________Página 14
1.4. Conceitos utilizados
No mundo Linux, veremos uma série de termos estranhos a princípio mas que se
tornarão comuns em nosso curso e posterior carreira. Termos o quais nunca ouvimos
falar tais como o Kernel, shell e etc. mas que são tão importantes para o conhecimento
do sistema. Segue abaixo uma explicação sobre os mesmos:
1.4.1. Kernel
Sendo bem claro, o Kernel é próprio Linux, ele é o coração do sistema, que
controla todos os dispositivos do computador (como memória, placas de som, vídeo,
discos rígidos, disquetes, sistemas de arquivos, redes e outros recursos disponíveis). O
Kernel do linux tem o código 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 características, inclusive a criação de
módulos 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.3. Shell
Shell é um interpretador de comandos, ou seja, é ele quem traduz uma ordem
dada pelo usuário via teclado ao Kernel, existem diversos shell no linux sendo que o
padrão é o Bash. Através do shell controlamos o sistema operacional, a utilização do
shell pode parecer primitiva, um usuário de Windows raramente precisa entrar no shell
para realizar suas operações, mas no linux as coisas mudam de figura, todos os
programas rodam a partir de um shell inclusive a interface gráfica. Mas então toda vez
que formos iniciar um programa precisamos iniciar um shell antes? A resposta é não.
Podemos abrir programas quando estivermos na interface gráfica com cliques em cima
dos ícones. Comandos executados no shell podem executar tarefas de uma maneira
muito mais rápida do que na parte gráfica. Aprenderemos diversos comandos do shell
adiante.
_____________________________________________________________________________Página 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 função corresponde a
um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X).
O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis
inicialmente por motivos de economia de memória RAM (cada terminal virtual ocupa
aproximadamente 350 Kb de memória RAM) .
1.4.4. Arquivos
Um arquivo pode conter um texto feito por nós, uma música, 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 história, nada
melhor que salva-lo com o nome historia. Um arquivo pode ser binário ou texto.
texto
Seu conteúdo é compreendido pelas pessoas. Um arquivo texto pode ser uma carta, um
script, um programa de computador escrito pelo programador, arquivo de configuração, etc.
binário
Seu conteúdo somente pode ser entendido por computadores. Contém caracteres
incompreensíveis para pessoas normais. Um arquivo binário é gerado através de um
arquivo de programa (formato texto) através de um processo chamado de compilação.
Compilação é basicamente a conversão de um programa em linguagem humana para a
linguagem de máquina.
_____________________________________________________________________________Página 16
Um arquivo oculto no GNU/Linux é identificado por um "." no inicio do nome (por
exemplo, .bashrc). Arquivos ocultos não aparecem em listagens normais de diretórios,
deve ser usado o comando ls -a para também listar arquivos ocultos.
1.4.5. Diretorios
Diretório é o local utilizado para armazenar conjuntos arquivos para melhor
organização e localização. O diretório, como o arquivo, também é "Case Sensitive"
(diretório /teste é completamente diferente do diretório /Teste). Não podem existir dois
arquivos com o mesmo nome em um diretório, ou um sub-diretório com um mesmo nome
de um arquivo em um mesmo diretório.
Um diretório nos sistemas Linux/UNIX são especificados por uma "/" e não uma "\"
como é feito no DOS.
Diretórios também podem ser ocultos utilizando o “.” antes do nome.
Exercícios de fixação
Para fixar o conteúdo aprendido execute os exercícios abaixo:
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 .
_____________________________________________________________________________Página 17
No capítulo anterior vimos o shell, e vimos que o padrão no GNU/Linux é o bash, neste
capítulo veremos mais funções do bash, comandos básicos de navegação paths e
atalhos de paths. Ao final deste capitulo você será capaz de:
_____________________________________________________________________________Página 18
2.1. Bash
Bash é o uma abreviação de “bourne shell again”, vimos no capitulo anterior que
ele é o shell padrão do GNU/Linux. Apesar de sua função 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:~$
2.2. Comando cd
Este e tranqüilamente o comando mais utilizado no ambiente Linux, serve somente
para mudar de um diretório para outro, permitindo assim a navegação pelo sistema de
arquivos:
bruno@Shinji:~$ cd /
Com o comando acima mudamos para o diretório “/” também conhecido como
diretório root, que é o diretório que esta no topo da arvore de diretórios.
_____________________________________________________________________________Página 19
2.3 Paths
Path em inglês significa “caminho”, path nada mais e do que o diretório ou caminho
para determinado arquivo ou programa.
bruno@Shinji:/$ pwd
/
bruno@Shinji:/$ cd /tmp
bruno@Shinji:/tmp$ pwd
/tmp
/dev
/usr
/usr/bin
/usr/local/bin
_____________________________________________________________________________Página 20
bruno@Shinji:/usr$ cd local/bin
bruno@Shinji:/usr/local/bin$ pwd
/usr/local/bin
Omitimos os campos “/usr/” para ir ao diretório /usr/local/bin. Veja bem que o diretório
“/local” esta dentro de “/usr”.
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, então executamos desta forma: “./programa”.
bruno@Shinji:/tmp/novodir$ pwd
/tmp/novodir
bruno@Shinji:/tmp/novodir$ cd ..
bruno@Shinji:/tmp$ pwd
/tmp
bruno@Shinji:/tmp$ cd ~
bruno@Shinji:~$ pwd
/home/bruno
_____________________________________________________________________________Página 21
Essa linha é familiar não? E a mesma linha de quando iniciamos um console :-)
Caso precisemos ir para o diretório home de um outro usuário procedemos da
seguinte maneira:
bruno@Shinji:~$ cd ~italo
bruno@Shinji:/home/italo$ pwd
/home/italo
bruno@Shinji:/home/italo$ cd -
bruno@Shinji:~$ pwd
/home/bruno
Exercícios de fixação
Para fixar o conteúdo aprendido execute os exercícios abaixo:
1. Treine a navegação com o comando cd, mude para os diretórios /usr, /tmp, /
usr/local/.
2. Analise se os paths abaixo são 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 navegação para os atalhos “..” , “~” e “-”.
4. Vá para o diretório /aulas/aula2 e execute o arquivo script1.sh com o atalho “.” .
_____________________________________________________________________________Página 22
No capítulo anterior vimos o shell com certa profundidade e os atalhos de navegação por
diretórios relativos e absolutos. Neste capítulo iremos aprender mais alguns comandos do
GNU/Linux e a utilização destes comandos. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 23
3.1. Utilização de comandos no GNU/Linux e
páginas do manual
Grande parte dos comandos do GNU/Linux contém uma ou mais opções
(geralmente estas opções servem para formatar a saída do comando), desta forma a sua
utilização depende de uma sintaxe, ou seja empregar o comando corretamente. A forma
básica de um comando e esta:
$ 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 ocasião que precise de ajuda. A navegação 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 são
formatadas:
_____________________________________________________________________________Página 24
EXAMPLES Exemplos e sugestões de como utilizar o comando.
SEE ALSO Tópicos relacionados (geralmente outras paginas de manual)
$ touch novoarquivo.txt
O comando acima criou o arquivo novoarquivo.txt.
$ mkdir dir1
O diretório 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 diretório por vez, ou
seja o diretório dir3 não pode ser criado se o diretório dir2 não existe, a maneira correta
seria:
$ mkdir dir2
$ mkdir dir2/dir3
Ou então simplesmente:
$ mkdir -p dir2/dir3
_____________________________________________________________________________Página 25
3.2.3. Comando mv
O comando mv serve para mover arquivos e diretórios de um diretório para o
outro, serve também para renomear arquivos e diretórios caso sejam “movidos” para o
mesmo local que estão mas com nomes diferentes.
$ mv novoarquivo.txt dir1/
O comando acima moveu o arquivo novoarquivo.txt para o diretório dir1/ .
O mesmo pode ocorrer com diretórios:
$ mv dir2/dir3/ dir1/
O comando acima moveu o diretório dir3/ de dentro do diretório dir2/ para o dentro do
diretório dir1/.
3.2.4. Comando cp
O comando cp copia arquivos e diretórios.
$ cp dir1/novoarquivo.txt dir2/
O comando acima copiou o arquivo novoarquivo.txt que estava no diretório dir1/ para o
diretório dir2/ , Agora ambos os diretórios 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 diretório para
outro, para corrigir este erro utilize a opção -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 diretório dir2/ foi removido.
$ rmdir dir2/dir3
_____________________________________________________________________________Página 26
O diretório dir3 que estava dentro do diretório dir2/ foi removido, note que o diretório dir2
continua intacto, vamos remove-lo também:
$ rmdir dir2
Pronto, o diretório dir2 também foi removido,veja agora o exemplo abaixo:
$ rmdir dir1
rmdir: `dir1/`: Directory not empty
Deu erro! Explicação; o diretório dir1 não estava vazio, ou seja, somente diretórios vazios
podem ser removidos.
Nestes casos que temos um diretório com algo dentro imagine se tivessem milhares de
arquivos dentro de um diretório, ou pior, milhares de diretórios dentro de diretórios dentro
de mais diretórios dentro deste diretório que você esta tentando apagar. Isto levaria dias
Para estes casos existe o comando rm com os parâmetros -rf. Que simplesmente
apaga tudo o que tem no diretório e logo após apaga o diretório 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 diretório dir1 e todo seu conteúdo não importando o que
haja nele, por isso deve ser utilizado com cuidado.
3.3. Comando ls
Este comando lista na tela o conteúdo dos diretórios:
$ cd /usr
$ ls
X11R6 bin doc games include info lib local man sbin
share src
_____________________________________________________________________________Página 27
$ ls -l
drwxr-xr-x 6 root root 4096 Jan 11 06:23 X11R6
drwxr-xr-x 2 root root 49152 May 5 14:43 bin
drwxr-xr-x 2 root root 12288 Apr 28 13:58 doc
drwxr-xr-x 2 root root 4096 Apr 6 14:52 games
drwxr-xr-x 78 root root 8192 May 3 17:01 include
lrwxrwxrwx 1 root root 10 Jan 11 09:41 info -> share/info
drwxr-xr-x 160 root root 53248 May 5 14:43 lib
drwxrwsr-x 15 root staff 4096 Apr 18 10:14 local
drwxr-xr-x 4 d3v1l users 4096 Jan 24 14:34 man
drwxr-xr-x 2 root root 8192 May 5 11:55 sbin
drwxr-xr-x 239 root root 8192 May 5 11:55 share
drwxrwsr-x 9 root src 4096 Apr 11 09:03 src
Esta saída traz muitas informações, vamos utilizar como exemplo primeira linha da saída
para explicar a sintaxe utilizada pelo comando ls -l.
Agora vamos explicar esta linha como deve ser interpretada pelo usuário:
drwxr-xr-x 6 root root 4096 Jan 11 06:23 X11R6
_____________________________________________________________________________Página 28
root Grupo root é dono do diretório X11R6
4096 O diretório X11R6 tem o tamanho de 4096 bytes.
Jan 11 06:23 O diretório X11R6 foi modificado pela última vez em 11 de Janeiro às
06:23 horas.
X11R6 Nome do diretório.
Para mostrar um exemplo diferenciado, vamos utilizar como exemplo a linha 5 da saída.
lrwxrwxrwx 1 root root 10 Jan 11 09:41 info -> share/info
O comando ls tem diversas opções, para uma olhada detalhada recomendo que leia o
manual deste comando.
Exercícios de fixação
Para fixar o conteúdo aprendido execute os exercícios abaixo:
_____________________________________________________________________________Página 29
No capítulo anterior vimos os principais comando de manuseio de arquivos no linux,
vimos também como consultar os manuais de comando, de agora em diante os
comandos na apostila serão somente mencionados, não serão explicados como
anteriormente, pois podem ser consultados nos manuais. Vamos agora aprender
Wildcards que são caracteres especiais para formatação de comandos, isto nos permite
selecionar um ou mais arquivos por vez nas nossas saídas ou então criar exceções.
Aprenderemos também como criar links para arquivos e diretórios, e como manusear
estes links. Por fim, vamos aprender a fazer o redirecionamento de comandos no
GNU/Linux. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 30
4.1 Wildcards
Wildcards servem basicamente para substituir caracteres são conhecidos como
caracteres curinga, na sua utilização do Linux, você vai notar que quando precisar
executar uma simples operação como a remoção de diversos arquivos de uma vez, pode
tornar-se uma tarefa repetitiva e lenta.
$ rm laranja[1-6]
Isto vai apagar os arquivos laranja que vão de 1 a 6, pode ser também que hajam
mais arquivos laranja depois do 6 que também devem ser deletados. neste caso
utilizamos a sintaxe abaixo:
$ rm laranja*
Isto vai deletar todos os arquivos que começam com a palavra laranja, veja bem
que o * substitui tanto números quanto letras. Abaixo segue mais um exemplo de
utilização, vamos listar todos os arquivos no diretório /etc que começam com a letra c:
$ ls -d /etc/i*
/etc/identd.conf /etc/imlib /etc/inittab /etc/issue
/etc/identd.key /etc/inetd.conf /etc/inputrc /etc/issue.net
/etc/idle-python2.1 /etc/init.d /etc/irda.conf
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 diretório /etc/ que começam com g ou
são chamados g.
● /tmp/my*1 equivale a todos os arquivos dentro do diretório /tmp/ que começam com
my e terminam com 1.
4.1.2. Sintaxe “ ? ”
O coringa ? substitui um único caractere.
Exemplos:
● myfile? equivale a todos os arquivos que começam com myfile e são seguidos por um
único caractere.
_____________________________________________________________________________Página 31
● /tmp/notes?txt pode ser tanto /tmp/notes.txt quanto /tmp/notes_txt se existirem, mas
não podem ser /tmp/notes.atxt pois este “a” não é substituído.
4.1.3. Sintaxe “ [ ] ”
O coringa [ ] é semelhante ao ?, porém este permite maior precisão, 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, não 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 utilização do wildcard colchetes e útil na verificação de letras
maiúsculas e minúsculas.
● ls /etc/[0-9]* vai listar todos os arquivos no diretório /etc/ que começam com um
número.
● ls /tmp/[A-Za-z]* vai listar todos os arquivos no diretório /tmp que começam com uma
letra maiúscula ou minúscula.
4.1.5.Formatação de wildcards
Por serem caracteres especiais, os caracteres wildcards (?, [, ], !, *) são tratados
pelo bash de uma maneira diferenciada, desta forma devemos tomar alguns cuidados
quando escrevemos estes caracteres no bash. As três formas mais comuns de se
escrever um caractere wildcard em sua forma literal (por exemplo; fazer o bash entender
o ? como um ponto de interrogação, e não como qualquer coisa como vimos
anteriormente) devemos colocar os caracteres em uma das maneiras abaixo:
_____________________________________________________________________________Página 32
4.2 Links
Links, em inglês significa ligação, no nosso caso são atalhos, servem
principalmente para criar alternativas de paths para arquivos e programas. Imagine por
exemplo um arquivo de texto localizado no diretório, /usr/local/share/documentos/ com o
nome de texto.txt, para editarmos este arquivo usamos o editor Vi, então sempre que
formos abrir este texto deveremos digitar no console:
$ vi /usr/local/share/documentos/texto.txt
$ vi ~/texto.txt
$ 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:
$ 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:
_____________________________________________________________________________Página 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 após tente abrir o arquivo pelo link ln2.txt com o programa Vi:
$ mv ln2.txt ~/
$ cd ~/
$ vi ln2.txt
Veja que o link não funciona. Explicação; observando novamente para onde
apontamos o link ln2.txt, vemos que o mesmo aponta para o arquivo links2.txt, ate ai
nenhum segredo, mas não tem nenhum arquivo links2.txt no diretório home, ou seja não
vai funcionar pois na saída contem o path relativo do arquivo de destino, o que não
funciona em todas as ocasiões. Portanto aqui vai a lição mais importante de links
simbólicos; analise quando utilizar paths absolutos e paths relativos de links, veja qual e
mais vantajoso em cada ocasião.
$ 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 parâmetros para o arquivo
hardlink.txt:
$ ln hardlink.txt hardlink2.txt
Com o hard link criado, veja agora os números de inodos dos arquivos:
$ ls -i | grep hardlink
2073563 hardlink.txt
2073563 hardlink2.txt
Como você pode verificar, os números de inodo são exatamente iguais,
experimente agora verificar se são links pelo comando ls -l | grep hardlink:
_____________________________________________________________________________Página 34
$ ls -l | grep hardlink
-rw-r--r-- 2 d3v1l users 39 May 11 10:44 hardlink.txt
-rw-r--r-- 2 d3v1l users 39 May 11 10:44 hardlink2.txt
Como você pode ver, os links não 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 não esta
vinculado ao arquivo de destino e sim ao inodo.
Links utilizando hard links só podem ser feitos para arquivo, e não para diretórios,
na verdade os atalhos . e .. são hard links para diretórios mas estes foram criados pelo
sistema operacional, e não por um usuário, nem sequer o root pode criar hard links para
diretórios. Outra limitação, os hard links não 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 inúmeros
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 diretório /
usr/share/empresas/, o pipe manda essa listagem para o comando grep que discarta
tudo o que não 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 não? O exemplo acima pode parecer um pouco complicado
mas vamos agora para um comando mais simples:
_____________________________________________________________________________Página 35
$ cat /etc/samba/smb.conf | mail brunocesar@ajato.com.br
O cat mostra o conteúdo do arquivo smb.conf, o pipe manda este conteúdo
para o comando mail que manda um e-mail para brunocesar@ajato.com.br. Pipes são
úteis também quando o output de um comando e muito grande, veja so:
4.3.2. >
Um comando seguido pelo símbolo “ > “ redireciona seu output para um arquivo,
utilizarei o mesmo exemplo anterior:
4.3.3. >>
O símbolo “ >> “ funciona de maneira semelhante ao símbolo “ > “ mas este por
sua vez não substitui o conteúdo do arquivo de destino (caso ele exista), somente
adiciona ao final do arquivo. Vamos exemplificar:
_____________________________________________________________________________Página 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 próprio console e um arquivo se desejar, podendo estabelecer variáveis
entre outras opções. 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 alfabética. A lista no caso era uma variável, agora voce
pode ver como o shell é extremamente poderoso.
Exercícios de fixação
1. Procure utilizando wildcards:
a. Todos os arquivos no diretorio /etc que começam com g e terminam com .conf
b. Todos os arquivos no diretorio /etc que contém um numero qualquer
c. Todos os arquivos no diretorio /etc que começam com a, b, c, d, e ou f e terminam
com .conf
d. Todos os arquivos no diretorio /etc que não começam com g e terminam com .conf
2. Crie um arquivo vazio com o nome de arquivteste.txt, depois crie um hard link para o
_____________________________________________________________________________Página 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 <<.
_____________________________________________________________________________Página 38
No capítulo anterior você aprendeu sobre wildcards, links e redirecionamento de outputs.
Neste capítulo 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 padronização de uma disposição com que os diretórios são colocados
independendo de distribuição. Você também vai aprender como localizar arquivos e
diretórios utilizando os diversos comandos para esta finalidade. Ao final deste capitulo
você será capaz de:
_____________________________________________________________________________Página 39
5.1 Hierarquia do sistema de arquivos
Apesar de parecer confusa no inicio, a árvore de diretórios do GNU/Linux é muito
bem organizada e é respeitada em praticamente todas as distribuições, podem haver
pequenas variações, encontramos os seguintes diretórios:
● / (diretório root)
Abaixo deste estão:
● /bin (diferente do /sbin, este diretório contém vários comandos úteis utilizados
tanto para o administrador do sistema quanto para o usuário comum, contem
geralmente os shells, e os programas mais comuns)
● /boot (diretório onde ficam os arquivo essenciais para o boot do GNU/Linux,
fica também 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 estão aqui.)
● /etc (diretório com os arquivos de configuração de programas, serviços ou do
próprio Linux, é este o diretório em que devem ser procurados os arquivos de
configuração)
● /home (o Linux e um ambiente multi usuário, o que implica que cada usuário
tem um diretório que pode ser acessado por si e pelo administrador do
sistema, estes são os diretórios home e são acessíveis por /
home/Nomedousuario)
● /lib (diretório onde são encontradas as bibliotecas compartilhadas de
aplicativos e módulos do kernel)
● /lost+found (em sistemas de arquivos com a capacidade de journaling este
diretório armazena os dados recuperados pelo fsck)
● /mnt (diretório temporário que serve de ponto de montagem para dispositivos
de armazenamento, tornando os acessíveis)
● /opt (diretório reservado para todos os softwares que não fazem parte da
instalação padrão)
● /proc (diretório com sistema de arquivos virtual do kernel que demonstra
status de programas ou então informações sobre o hardware, e ate mesmo a
alteração do status de hardware, não contém arquivos reais)
● /root (diretório home do usuário root)
● /sbin (diretório com arquivos executáveis de manutenção do sistema e de
tarefas administrativas)
● /tmp (diretório com arquivos temporários, muitos programas utilizam-se
deste diretório para criar arquivos lock, e também armazenamento de dados
temporário)
● /usr (contém uma outra árvore de diretórios compartilhada entre os usuários,
bibliotecas, aplicativos, documentação e etc.)
● /var (contém dados variáveis como logs de arquivos e spools de impressoras)
Não há muito o que discutir à respeito do FHS, mais informações à respeito e
_____________________________________________________________________________Página 40
diversos exemplos podem ser envontrados em http://www.pathname.com/fhs/
5.2.1. O $PATH
Esta e uma variável padrão do bash, como disse anteriormente o bash pode
armazenar variáveis de ambiente (variáveis de ambiente sempre terão o símbolo $ 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
diretórios armazenados na variável $PATH. Veja o exemplo abaixo:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/bin/
Os diretórios estão separados por dois pontos (:), quando executarmos um
comando qualquer o bash ira procurar este comando em um dos diretórios listados
acima. Nos próximos capítulos aprenderemos mais sobre variáveis de ambiente.
$ whereis gzip
gzip: /bin/gzip /usr/share/man/man1/gzip.1.gz
O output do comando foram dois diretórios, 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 seguirão esta ordem.
_____________________________________________________________________________Página 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, não 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 atualização
demora algum tempo, pode demorar alguns minutos dependendo da velocidade de seu
HD, esta atualização só pode ser efetuada pelo usuário 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.
_____________________________________________________________________________Página 42
a expressão “php” utilizamos a seguinte sintaxe:
Exercícios
1. Procure o arquivo passwd em todo o sistema operacional.
2. Procure o programa xcalc.
3. Procure o arquivo smb.conf dentro do diretório /etc/ .
_____________________________________________________________________________Página 43
No capítulo anterior vimos o FHS do Linux e aprendemos como localizar arquivos e
diretórios. Neste capítulo iremos aprender expressões regulares e também como
controlar os processos de programas. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 44
6.1. Expressões regulares.
Expressões regulares, ou “regex” são sintaxes usadas para descrever textos. No
Linux, são 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 informações.
6.1.2. Sintaxe “ . ”
O “ . ” em uma regex trabalha de maneira semelhante ao “ ? ” nos wildcards, ou
seja substitui um único caractere qualquer, exemplo:
6.1.3. Sintaxe “ [ ] ”
A sintaxe “ [ ] ” é utilizada quando se quer restringir a busca do “ . ”, especificando
entre colchetes os caracteres que deverão retornar, veja o exemplo:
_____________________________________________________________________________Página 45
$ grep “dev/hda[23]” /etc/fstab
/dev/hda2 / ext3 errors=remount-ro 0 1
/dev/hda3 none swap sw 0 0
Lembre-se que quando usados os [ ] sempre será substituído somente um
caractere.
6.1.4. Sintaxe “ [^ ] ”
A sintaxe “ [^ ] ” realiza o trabalho inverso aos “ [ ] ”, ou seja, vai retornar as
expressões que não contenham o que esta dentro de [^ ], veja o exemplo:
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
substituído um caractere por vez).
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:
_____________________________________________________________________________Página 46
6.2 Controle de processos
O kernel do Linux controla aplicativos que estão no nível do usuário através de
processos, organizados por seus PIDs (process identification). Os processos são
gerenciados automaticamente pelo kernel, porém, o usuário também pode gerenciar
estes processos conforme sua necessidade. Antes de mais nada para iniciarmos um
processo precisamos iniciar um aplicativo.
$ xeyes
Imediatamente o programa vai iniciar, são dois olhos que ficam seguindo o mouse,
note que o terminal ficou bloqueado, não aceitando mais nenhum comando.
_____________________________________________________________________________Página 47
$ ps
PID TTY TIME CMD
9598 pts/4 00:00:00 bash
9978 pts/4 00:00:00 xeyes
10130 pts/4 00:00:00 ps
Abaixo a descrição das colunas da lista obtida:
PID Número de identificação do processo
TTY Console sob o qual o processo esta sendo executado
TIME Tempo de processamento na CPU formatado em HH:MM:SS
CMD Comando ou aplicativo
Para obtermos uma listagem mais completa utilizamos a opção “ps u” veja abaixo:
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
d3v1l 4303 0.0 0.6 2692 1564 tty2 Ss+ 07:26 0:00 -bash
d3v1l 9598 0.0 0.6 2668 1488 pts/4 Ss 09:59 0:00 /
bin/bash
d3v1l 9978 0.0 0.6 3152 1504 pts/4 T 10:22 0:00 xeyes
d3v1l 10536 0.0 0.3 2500 860 pts/4 R+ 10:49 0:00 ps u
Descrição:
USER Usuário que executou o processo
%CPU Porcentagem de utilização do processador
%MEM Porcentagem de utilização de memória
VSZ Tamanho de memória virtual utilizada
RSS Espaço físico ocupado na memória pelo processo
STAT São caracteres que identificam o estado do processo. (lista em man ps)
Finalmente para listarmos todos os processos que estão sendo executados, (não
os processos exclusivos do shell atual) utilizamos a opção “ps aux”. A lista e muito
extensa portanto não será inclusa aqui.
Agora que temos conhecimento como trabalhar e identificar processos através do
PID podemos passar para a próxima parte, vamos reiniciar o processo que paramos na
seção anterior.
_____________________________________________________________________________Página 48
$fg
xeyes
(A outra maneira seria utilizar o comando kill -CONT <pid>, a diferença é que o
-CONT vai reiniciar o processo em background diretamente.)
O processo retornou à execução, porém 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.
$ 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 gráfico é utilizando o
programa xkill, o mouse vai mudar de ícone e quando clicar na janela abaixo do mouse
esta será fechada.
_____________________________________________________________________________Página 49
6.2.7. Múltiplos processos em background
Vamos agora trabalhar com diversos processos, inicie em background o programa
xeyes com a opçao -center pink:
$ jobs -l
[1]- 12941 Running xeyes -center lightblue &
[2]+ 13014 Running 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 não no primeiro job (marcado com -). Caso queria
mandar o primeiro para foreground especifique seu job number como parâmetro ao
comando fg:
$ fg 1
xeyes -center lightblue
Para o comando nice, quanto maior for o número passado como parâmetro,
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 utilização:
_____________________________________________________________________________Página 50
$ nice -n 10 mpg123 musica.mp3
Para o comando nice, quanto maior for o número passado como parâmetro,
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 utilização:
utilização:
$ firefox &
[1] 13627
$ renice 10 13627
13627: old priority 0, new priority 10
O processo firefox passou a ter a prioridade 10. Uma informação importante,
quando um usuário comum tenta aumentar a prioridade de um processo ele é barrado
pelo sistema, isto se dá por segurança, o Linux foi desenvolvido para ser um sistema
multi-usuário ou seja diversos usuários ao mesmo tempo, seria uma bagunça tremenda
se todos os usuários pudessem melhorar os desempenhos de seus processos em
relação aos outros.
$ renice 0 13627
renice: 13627: setpriority: Permission denied
O único usuário que pode aumentar a prioridade de processos é o usuário root.
# renice 0 13627
13627: old priority 10, new priority 0
Exercícios
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 através de outro
console, e redefina sua prioridade para 10, depois finalize o processo.
_____________________________________________________________________________Página 51
Neste capitulo conheceremos as características e ferramentas que tornam o GNU/Linux
um sistema operacional multi-usuário, veremos como trabalhar com contas de usuários e
grupos de usuários, também veremos como trabalhar com permissões de acesso a
arquivos e diretórios e finalmente permissões especiais de arquivos e diretórios. Este
capitulo é muito importante pois vai tornar clara como funciona a segurança com relação
à usuários no Linux. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 52
7.1. Usuários
Já foi comentado anteriormente que o Linux é um sistema multi usuário, mas afinal
o que isto quer dizer? Um sistema operacional multi usuário permite que múltiplos
usuários utilizem o computador e rodem programas ao mesmo tempo, compartilhando os
recursos da máquina. Para que se utilize desta característica cada usuário deve ter uma
conta válida no computador para que o sistema possa controlar as políticas de
segurança, mediante autenticação o usuário pode utilizar o sistema local e remotamente.
As características de acesso à usuários no Linux são rígidas, tornando-o um
sistema extremamente seguro, veremos abaixo que existem dois tipos de usuário; os
usuários normais e o usuário root (administrador).
_____________________________________________________________________________Página 53
7.1.3. Criando um usuário
Vamos criar um usuário através do comando useradd, o comando useradd
permite que especifiquemos de uma vez diversas opções sobre o usuário as mais
comuns são -g , -s , -G, mas na tabela abaixo vou especificar mais opções deste
comando:
-u UID (número de identificação do usuário, caso seja omitido o sistema insere um número
automaticamente)
-g Grupo primário a que o usuário pertence ( caso seja omitido o sistema cria um grupo
com o nome do usuário)
-G Grupos secundários do usuário (um usuário pode fazer parte de outros grupos)
-d Diretório home do usuário (caso seja omitido o sistema vai criar um diretório /
home/nomedousuário)
-s Shell padrão do usuário (caso seja omitido o sistema vai selecionar o bash como padrão)
Consultando as páginas do manual do comando useradd poderemos achar mais opções.
_____________________________________________________________________________Página 54
7.1.5. Modificando o password
Até agora nada foi mencionado à respeito do password (senha) do usuário, a
resposta é que os passwords vêm bloqueados por padrão nas distribuições atuais. O
comando para criação e alteração de senhas de usuários e grupos é passwd, veja um
exemplo de sua utilização:
# passwd bruno
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Por senhas serem secretas cada usuário pode alterar sua senha quando bem
entender com o comando passwd sem nenhum parâmetro adicional, o administrador
pode mudar a senha de um usuário, mas não pode saber qual era a senha anterior.
# userdel bruno
7.2 Grupos
Grupos servem para agrupar diversos usuários em um único grupo, isto e um tanto
quanto óbvio. Exemplificando, temos um departamento pessoal na empresa, estes
usuários podem acessar uma diretório chamado /usr/share/dpessoal, e mais ninguém
da empresa pode acessar esta pasta, o que fazemos para restringir o acesso? Ao invés
de modificar a permissão de cada usuário que acessa este diretório, podemos criar o
grupo deptopessoal, colocar os funcionários do departamento pessoal neste grupo e
restringir o acesso ao diretório /usr/share/dpessoal para que somente quem faça parte
deste grupo possa acessar.
# groupadd deptopessoal
_____________________________________________________________________________Página 55
7.2.2. Excluindo um grupo
Para excluir um grupo utilize o comando groupdel, uma observação importante é
que não podemos excluir os grupos primários de usuários, somente grupos secundários.
# groupdel deptopessoal
$ whoami
bruno
$ groups
users audio webdesign
Primeiro vem o grupo primario do usuário, logo após os grupos secundários. O
comando groups pode retornar os grupos de outros usuários caso seja colocado seu
username como parâmetro:
$ groups joao
users audio video
Vamos agora verificar permissões de arquivos.
_____________________________________________________________________________Página 56
7.3.2. Verificação de permissões com ls – l
Para verificarmos as permissões de acesso à arquivos utilizamos o comando ls
-l, que retorna uma lista com diversas colunas, devemos ter uma atenção especial com
três 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:
Os caracteres sempre aparecem nesta ordem (rwx), caso o usuário não tenha
_____________________________________________________________________________Página 57
permissão de execução um sinal “ - ” vai aparecer no lugar do x (ficando rw-). Para tornar
isto mais claro vamos observar o output do comando que executamos anteriormente:
_____________________________________________________________________________Página 58
7.3.5. O comando chmod
Enquanto os comando chown e chgrp servem para alterar respectivamente o
usuário dono e o grupo dono, o comando chmod serve para alterar as permissões rwx
vistas anteriormente, o comando chmod recebe dois argumentos: a nova permissão e o
objeto de destino. Você poderá alterar as permissões de acesso a um objeto de duas
maneiras, a primeira é através dos triplets (rwx) vistos anteriormente, a segunda é através
de uma tabela numérica que veremos adiante.
u Usuário dono
g Grupo dono
o Outros usuários
a Todos os usuários
_____________________________________________________________________________Página 59
7.3.7. Definindo permissões de acesso pelo modo
numérico
A definição de permissões pelo modo numérico funciona de maneira diferente; de
uma única vez definimos as permissões do usuário dono, do grupo dono e dos outros
usuários através de um número passado como parâmetro, a tabela de números esta
abaixo:
Número Triplet
7 rwx
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 ---
7.4.1. Umask
Quando um novo arquivo é criado, podemos observar que suas permissões são
por padrão -rw-r--r--, isto acontece porque todos os arquivos criados com a permissão
666 (leitura e escrita permitida para todos, o que é um tanto quanto inseguro) então o
Linux consulta uma variável do sistema chamada umask que retira a permissão de escrita
do grupo e dos outros usuários. Consulte a variável umask digitando o comando umask
no console:
_____________________________________________________________________________Página 60
$ umask
0022
Olhando novamente na tabela podemos constatar que o número 0 significa ---, e o
número 2 significa -w-, ou seja a umask vai retirar o -w- do grupo e dos outros.
Veja o exemplo abaixo a alteração da variável umask para que os outros usuários não
possam ler os arquivos quando eles são criados:
$ umask 0027
7.4.2. Suid
Todos os processos iniciados pelo usuário possuem as permissões de acesso
deste usuário, isto ocorre pois um processo quando é executado por um usuário utiliza
seu Suid. Diante disto qualquer programa iniciado por nós não pode acessar arquivos e
diretórios os quais não tenhamos acesso, esta é uma das maiores chaves de segurança
do Unix. Vamos ao exemplo, o arquivo de passwords do sistema, /etc/passwd, não pode
ser alterado diretamente pelos usuários, pois nas suas permissões podemos constatar
que permite que os outros usuários o subescrevam:
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1451 May 25 16:29 /etc/passwd
Então de que maneira mudamos nossa senha? Vimos anteriormente que é através
do programa passwd, e o programa passwd possui uma permissão especial chamada
suid, ou seja todas as ações executadas por este programa rodam com o suid do usuário
dono (no caso o root) e não com as permissões do usuário que o executa, com as
permissões de usuário root, o programa pode tranqüilamente 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 usuário podemos observar que ao invés do caractere x
encontramos o caractere s, isto indica que aquele programa possui a permissão suid.
Para alterarmos a permissão suid utilizamos o parâmetro u+s:
_____________________________________________________________________________Página 61
7.4.3. Sgid
A permissão sgid funciona da mesma maneira que o suid, ou seja, permite que
programas utilizem a permissão do grupo ao invés da permissão de quem utiliza. Sua
utilização é semelhante à utilização do comando suid, veja um exemplo:
7.4.3. Sticky
Trabalhar com diretórios compartilhados é perigoso, a partir do momento que
todos os usuários tem acesso à todos os arquivos, eles podem simplesmente deletar
qualquer arquivo, inclusive os arquivos de outros usuários, para previnir estes
acontecimentos o Linux possui um outro modelo de permissão chamado sticky, que
permite que um arquivo ou diretório só possa ser apagado pelo usuário dono ou pelo
root. Um exemplo do sticky é o diretório /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 permissão sticky a um arquivo ou diretório utilize o
comando chmod +t arquivo.
Exercícios
1. Crie um usuário 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 usuário, observe atentamente o que ocorre.
2. Crie um grupo admin e adicione o usuário recém criado a este grupo.
3. Remova o usuário e o grupo criados anteriormente.
4. Crie um arquivo e altere suas permissões para que o grupo e os outros usuários
possam escrever neste arquivo.
5. Modifique com um único comando a permissão do arquivo recém criado para que a
mesma fique assim: “rwxrw-r--”
_____________________________________________________________________________Página 62
Vamos agora iniciar a instalação de novos programas no GNU/Linux, vamos aprender
como compilar e instalar programas pelo código fonte, também vamos aprender como
trabalhar com pacotes RPM e DEB, utilizados em diversas distribuições. Finalmente
iremos gerenciar programas instalados, atualizar estes programas e desinstala-los
quando for necessário. Ao final deste capítulo você será capaz de:
_____________________________________________________________________________Página 63
8.1. Instalando novos programas
A instalação de programas no Linux pode ser feita de diversas maneiras, e
oferecendo diversas opções e customizações. Grande parte dos programas disponíveis
está em código fonte, o que permite que alteremos o código se precisarmos (visando
melhorias de hardware por exemplo), estes programas são compilados em nossa
máquina, logo após são instalados. Podemos também encontrar pacotes pré-compilados
chamados de pacotes binários, este pacotes contém o programa pré-compilado
genericamente, possibilitando a instalação imediata.
O processo de instalação em si não é difícil como pensam os iniciantes, é até bem
fácil, em pouco tempo torna-se praticamente automático. Sua única dificuldade (que
ocorre de vez em quando) é a resolução de dependências, estas dependências são
geralmente bibliotecas ou outros programas que precisam estar instalados para que
possamos continuar a instalação do programa atual.
Para o usuário final, trabalhar com pacotes binários é a maneira mais fácil de
gerenciar programas, já o processo de compilação tem como público alvo
desenvolvedores e usuários avançados pois permitem que especifiquemos opções na
hora da compilação, à caráter didático ambos os processos serão cobertos neste
capítulo.
● http://sourceforge.net
● http://freshmeat.net
_____________________________________________________________________________Página 64
informação puder ser agregada, menor é a probabilidade de erros e problemas. Vamos
agora obter o programa, faça o download do arquivo. Para um maior controle do que é
instalado recomendo que mantenha seus sources em um único diretório, /usr/src pode
ser utilizado como padrão. Com o arquivo salvo neste diretório vamos inciar o processo
de instalação.
8.2.2. Descompactando/Desempacotando
Quando obtemos programas pelo código fonte sua extensão é geralmente .tar.gz
ou .tar.bz2, estes nada mais são do que um conjunto de arquivos compactados,
descompactamos os mesmos com a ferramenta tar, as opções 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 diretório
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 à opção v, portanto será omitida aqui. Pronto, temos
um pacote descompactado. Vamos agora analisar arquivos importantes antes da
instalação.
_____________________________________________________________________________Página 65
$ ./configure
checking for ...
A listagem é bem grande, geralmente as dependências serão listadas aqui, caso
ocorra alguma pule para a seção 8.2.8, esta é a hora em que podemos passar opções
para a instalação do programa, a opção --prefix=/diretório por exemplo instala no
diretório que você escolher, ou no caso do links --enable-graphics vai habilitar o
modo gráfico, (li isto no arquivo INSTALL), veja o exemplo abaixo de como executar o
script configure com opções:
$ ./configure --enable-graphics
checking for ...
Agora que arquivo Makefile foi gerado podemos passar para a próxima fase, a
compilação.
$ make
...
Com isto os programas serão compilados, vamos agora ao passo final da
instalação.
8.2.6. Instalando com make install
O passo final é simplesmente rodar como root o comando make install (como root
pois os usuários normais não tem acesso ao diretório /usr/local e /usr/bin onde
geralmente os arquivos são instalados). Veja abaixo sua utilização:
# make install
...
Programa instalado. Pode parecer complicado à principio mas você verá no
resumo adiante o quão fácil é a instalação.
_____________________________________________________________________________Página 66
8.2.7. Resumo da instalação por código fonte
Vou agora resumir toda esta seção em três linhas de comandos:
$ ./configure
$ make
# make install
Caso não haja nenhuma dependência, 98% dos programas que você tiver que
instalar pelo código fonte serão as linhas acima.
# make uninstall
Programa desinstalado.
_____________________________________________________________________________Página 67
8.3. Trabalhando com pacotes
binários
No inicio do capítulo foi mencionado que existem pacotes binários, afinal o que
são? São propriamente pacotes de programas pré-compilados que já vem prontos para a
instalação, todas as distribuições de Linux utilizam alguma forma de empacotamento.
Pacotes foram um grande passo na distribuição do Linux, acabando com problemas de
falta de bibliotecas e criando um gerenciamento inteligente de dependências.
A instalação de pacotes binários oferece algumas vantagens sobre a instalação à
partir do código fonte:
● Fácil instalação, atualização e desinstalação.
● Proteção de arquivos
● Gerenciamento inteligente de dependências.
● Fácil gerenciamento de programas instalados.
Pacotes binários são de fato uma solução para distribuição de programas, porém,
devemos analisar suas desvantagens:
● Programas compilados pelo código fonte possuem melhor performance.
● Pacotes de distribuições diferentes seguem padrões diferentes.
● Pacotes possuem dependências de outros pacotes.
● A criação de pacotes é complicada e requer conhecimentos avançados.
● Caso haja a danificação do banco de dados dos pacotes, o sistema vai tornar-se
instável.
Trabalhar com pacotes pode ser muito útil, uma mão-na-roda em determinados
casos, mas requer cuidados. Caso o usuário prefira instalar por pacotes, deve seguir
sempre as seguintes recomendações:
1. Nunca instale pacotes de outras distribuições, cada distribuição utiliza seu padrão, de
diretórios bibliotecas e arquivos, isto vai tornar seu sistema instável.
2. Nunca force a instalação de pacotes ou ultrapasse as dependências de pacotes à
menos que saiba exatamente o que está fazendo.
3. Leia os manuais do rpm ou deb para saber manusear corretamente pacotes.
_____________________________________________________________________________Página 68
8.4.1. Obtendo pacotes RPM
Geralmente distribuições baseadas no empacotamento RPM possuem em seus
sites um repositório com pacotes binários RPM. Vamos tomar como exemplo a
distribuição Fedora navegando pelo site oficial encontramos geralmente na seção
downloads o repositório com os pacotes de todas as versões, exemplo:
http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/Fedora/RPMS/.
Para outras distribuições esta regra é a mesma, procure sempre no site oficial os
repositórios de pacotes. Um outro método é procurar em ferramentas de buscas
especiais para pacotes RPM:
● http://www.rpmfind.net
● http://rpmseek.com
Estas ferramentas nada mais são do que links para os repositórios oficiais. Em
último caso procure no Google o pacote do programa, mas lembre-se de que não
estando nos repositórios oficiais o pacote pode não funcionar e talvez até danificar o
banco de dados RPM, se não encontrar o pacote prefira compilar pelo código fonte.
_____________________________________________________________________________Página 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 capítulo 5 poderia procurar por
essas bibliotecas em seu pc, caso não encontre procure na web pelo nome da
dependência, veja o exemplo abaixo
_____________________________________________________________________________Página 70
8.4.5. Forçando a instalação de pacotes
Apesar do gerenciamento de dependências ajudar em diversas ocasiões, exitem
outras que caímos em um problema vamos exemplificar; tentamos instalar o pacote
X.rpm, o pacote X depende do pacote Y, baixamos então o pacote Y e ao instalar ele
acusa que depende do pacote X, e agora? Isto pode parecer brincadeira mas acontece, a
solução é forçar a instalação de um pacote para depois instalar o outro. No caso de
dependências somente utilizamos a opção –nodeps, no exemplo vou instalar o programa
xpdf sem satisfazer a dependência:
Existe uma outra maneira de forçar a instalação, vamos supor que você tenha
apagado acidentalmente o arquivo de configuração de algum pacote que já está
instalado, que tal reinstalar o pacote para corrigir o problema? Veja o exemplo abaixo:
Utilize com cuidado as opções --nodeps e --force pois elas podem bagunçar o
sistema.
_____________________________________________________________________________Página 71
Existem vantagens na interface gráfica, é muito mais rápido gerenciar seus
pacotes por estas ferramentas, através delas podemos ver os pacotes instalados, os
pacotes disponíveis no servidor e também os pacotes que podem ser atualizados. O bom
administrador deve saber como gerenciar de ambas as formas, a interface gráfica no
entanto vai ser uma mão na roda muitas vezes. Abaixo vou colocar os links para outras
ferramentas gráficas de gerenciamento de pacotes:
_____________________________________________________________________________Página 72
# rpm -e xpdf
A boa notícia é que não precisamos escrever o nome completo dos pacotes.
Recomendo novamente que leia o manual do rpm, existe muita informação útil
nestas páginas, e é um conhecimento universal, diversas distribuições utilizam o RPM
como padrão e saber como trabalhar com isso vai ajudar na utilização destas
distribuições.
_____________________________________________________________________________Página 73
atualizações, listagem de pacotes, instalação e remoção, screenshot abaixo:
_____________________________________________________________________________Página 74
Com a introdução já realizada vamos agora aprender a utilizar o apt.
_____________________________________________________________________________Página 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
stable
A distribuição “stable” contém a última distribuição oficialmente lançada pela Debian.
testing
A distribuição “testing” contém pacotes que não foram aceitos numa versão “stable” ainda,
mas eles já estão na fila para serem aceitos. A principal vantagem de usar essa distribuição é
que ela tem versões mais novas dos softwares. O suporte de segurança oficial para esta
distribuição começou em 3 de maio de 2005.
Veja o FAQ do Debian para mais informações sobre o que é “testing” e como ela se torna
“stable”.
unstable
É na distribuição “unstable” que o desenvolvimento ininterrupto do Debian ocorre.
Geralmente, os usuários dessa distribuição são os próprios desenvolvedores e pessoas que
gostam de emoções fortes.
_____________________________________________________________________________Página 76
8.5.3. Atualizando a lista de pacotes disponíveis
Com os repositórios 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 conexão.
Após o download a lista de pacotes vai estar atualizada, esta lista é a fonte de todas as
outras ações portanto deve sempre que possível estar atualizada.
# apt-get upgrade
Caso queira atualizar sua distribuição inteira utilize o comando apt-get dist-
_____________________________________________________________________________Página 77
upgrade:
# apt-get dist-upgrade
_____________________________________________________________________________Página 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.
# apt-get upgrade
Estes pacotes devem estar préviamente instalados para que o lynx possa funcionar.
Para listar os pacotes instalados digite o comando dpkg -l ou utilize o Synaptic /
Aptitude.
_____________________________________________________________________________Página 79
8.5.10. Forçando a instalação de pacotes Debian
Em algumas ocasiões podemos ter problemas na instalação de pacotes,
exatamente como ocorrem com os pacotes RPM, (lembra da história dos pacotes X e
Y?), a solução no caso seria forçar a instalação de pacotes. A opção force no caso de
pacotes Debian tem mais opções internas, cada situação pode requerer uma solução
diferente de force, geralmente utilizando a opção --force-all resolve qualquer parada mas
recomendo que leia a opção --force-help (que mostra as outras opções.
# dpkg -r lynx
(Reading database ... 145134 files and directories currently installed.)
Removing lynx ...
Caso algum outro pacote dependa deste, o o gerenciador dpkg não vai permitir a
desisntalação, restando duas opções; ou remova pacote por pacote ou force a
desisntalação, de qualquer modo recomendo que utilize o apt para estas tarefas.
Exercícios
1. Faça o download do código fonte do programa links, ou copie do diretório /
aulas/aula8/, descompacte e instale com a opção --enable-graphics ativada.
2. Caso esteja em uma distribuição com empacotamento RPM, tente instalar o pacote
apt-get, habilitando a utilização de apt em outras distribuições.
3. Caso esteja em uma distribuição com empacotamento Debian, instale o pacote alien e
tente converter pacotes RPM para Debian.
4. Leia o manual do apt.
_____________________________________________________________________________Página 80
Depois de dominarmos o Linux pelo modo textual vamos agora iniciar a utilização do
ambiente gráfico. Neste capítulo vamos configurar o ambiente gráfico do zero. Também
serão apresentados os window managers, que são os gerenciadores de janelas. São
diversas, as mais utilizadas são o GNOME e o KDE e serão explicadas com detalhes, as
menos utilizadas serão somente citadas. Este capítulo é essencialmente conceitual e
você vai se sentir em casa caso já tenha alguma prática com outro sistema operacional
baseado em janelas tal como o Mac OS ou Windows. Ao final deste capítulo o aluno será
capaz de:
_____________________________________________________________________________Página 81
9.1. O que é o servidor X?
O servidor X é o ambiente gráfico do Linux, que gerencia todos os dispositivos que
irão interagir graficamente com o usuário, o X controla os seguintes dispositivos de
hardware:
● Teclado
● Mouse
● Placa de vídeo
● Monitor
O servidor X permite uma série de opções, como por exemplo a utilização de mais
de um monitor para um só desktop, a utilização de ambiente gráfico via rede e também a
aceleração 3D para gráficos e jogos. No ano de 2004 o projeto Xfree deixou de ser
suportado, o novo projeto que mantém o servidor X é chamado X.org. Existem algumas
distribuições que ainda utilizam o Xfree, a configuração dos dois sistemas é semelhante,
vamos iniciar a configuração do ambiente gráfico.
_____________________________________________________________________________Página 82
Geralmente a configuração do X tende a ser complicada pois são exigidas muitas
informações. Prefira sempre utilizar valores básicos para que seu sistema gráfico
funcione, se ele funcionar otmimize as opções até que chege a um ponto desejado.
9.3. KDE
O KDE (K Desktop Environment) é o window manager mais utilizado no mundo
Linux, tem uma interface agradável, possui muitas ferramentas e também é bem
completo no quesito de utilização podendo se equiparar à interface gráfica do sistema
operacional Windows. O KDE permite todp tipo de ações, criação de novos arquivos e
links, montagem de dispositivos, navegação pela rede, emfim, é um ótimo sistema de
janelas para usuários de desktop. Abaixo um screenshot:
_____________________________________________________________________________Página 83
KDE 3.3 no Kurumin Linux 4.0
_____________________________________________________________________________Página 84
9.4. GNOME
O Gnome também é um Window Manager bem completo, possui uma série de
programas, e é muito bonito. Um dos pontos fortes é que o Gnome é ligeiramente mais
rápido que o KDE, pois utiliza as bibliotecas GTK para desenho das janelas. É um
sistema voltado para o usuário de Desktop. Veja Abaixo um screenshot do Gnome:
_____________________________________________________________________________Página 85
9.4.2. Otimizando o Gnome
O Gnome também permite a sua otimização, dois ótimos sites são:
http://art.gnome.org/
http://www.gnome-look.org/
● 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/
_____________________________________________________________________________Página 86
Hoje em dia, o suporte a hardware no Linux é vasto, é muito raro ver componentes de
hardware não funcionar no linux por uma limitação de drivers. A configuração em si não é
difícil, e com um pouco de prática torna-se corriqueira. Ao final deste capitulo o aluno será
capaz de:
_____________________________________________________________________________Página 87
10.1. Introdução aos módulos do
kernel
Antes de mais nada devemos conhecer os módulos do kernel, Um módulo é um
componente do kernel que pode ser carregado a qualquer instante pelo usuário, este
componente visa uma otimização 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 não basta para que ela funcione, devem ser caregados os
módulos desta placa para que o Kernel possa se comunicar com ela. A ativação de
módulos é feita utilizando o comando modprobe nomedomodulo. Veja o exemplo
abaixo:
# modprobe 8139too
# lsmod
Module Size Used by
md5 3840 1
ipv6 244480 8
pcmcia 17668 2
irtty_sir 5888 2
sir_dev 13996 1 irtty_sir
...
Os módulos ficam guardados no diretório /lib/modules/(versaodokernel)/ (a
versão do kernel pode ser obtida com o comando uname -r). Módulos podem ser
compilados à parte e instalados, da mesma maneira que instalamos programas normais
pelo código fonte. Quando instalamos um novo módulo devemos sempre atualizar a
nossa base de módulos utilizando o comando depmod -a.
Para incluir a inicialização de um módulo no boot altere o arquivo /etc/modules
adicionando o nome do módulo, recomendo que leia o manual de modules.conf.
_____________________________________________________________________________Página 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 referências. Agora basta carregar o módulo:
# modprobe sis900
Logo após carregar o módulo, 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.
_____________________________________________________________________________Página 89
10.3. Configurando placas de rede
Wi-Fi
A configuração de redes wi-fi é semelhante, porém, algumas destas placas no
entanto não possuem módulos no kernel oficial. O que resta então é compilar o módulo
diretamente do código fonte. Uma ótima fo nte de referêmncia na instalação de novas
placas de rede é o tutorial de instalação 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 não tem suporte oficial ao Linux ainda, a melhor maneira de faze-
las funcionar é utilizando o ndiswrapper, este programa emula um driver do windows,
transformando-o em módulo, o kernel vai pensar que está trabalhando com um módulo
nativo e a placa vai funcionar, o desempenho pode cair um pouco e algumas
funcionalidades da placa também podem ficar de fora mas a placa vai funcionar
basicamente. Existem mais informações sobre o Ndiswrapper no site mencionado acima.
# 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 utilitários,
no site do projeto ALSA, faça o download da última versão dos arquivos alsa-driver, alsa-
lib, alsa-utils. Devemos também verificar o site com informações sobre a instalação de
sua placa.
Crie o diretório /usr/src/alsa e mande os para este diretório.
# mkdir /usr/src/alsa
# mv alsa* /usr/src/alsa
Descompacte o alsa-driver:
_____________________________________________________________________________Página 90
/usr/src/alsa# tar -xvjf alsa-driver-1.0.9rc4a.tar.bz2
...
...
/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 permissão para os dispositivos de audio para
que todos possam ler e escrever nesta 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.
_____________________________________________________________________________Página 91
10.5. Configurando modem
No mercado existem dois tipos de modems, os modems ISA antigos e os novos
Winmodems (também chamados de softmodems) O Linux tem amplo suporte aos
Modems convencionais ISA, sua instalação é fácil e não são necessários módulos para
que este seja configurado, os modems são detectados como portas Seriais (ttySX).
Já a configuração de winmodems é muito complicada, estes modems não
funcionam por hardware (não são 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 mudança de kernel suas
configurações dixam de funcionar. Para que um Winmodem funcione no Linux é
necessário antes de tudo muita paciência e também informação, por serem muitos casos
diferentes não será coberta na apostila a instalação de Winmodems, verifique no site
http://www.linmodems.org mais informações sobre este tipo de modem.
# /etc/init.d/cups start
_____________________________________________________________________________Página 92
1. A instalação é 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 administração clique em "Add Printer".
3. Agora no campo “Name” digite o nome da impressora sem espaços por exemplo
Laserjet1015. No campo “Location” não é obrigatório mas caso queria especificar o
nome do computador ou departamento onde está a impressora o local é aqui, não
deixa de ser uma boa prática de administração. O camplo “Description” também não é
obrigatório mas pode ser inserida uma descrição sobre a impressora. Acabando aqui
clique em “Continue”.
4. Nesta página, 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 também a opção de adicionar uma impressora que
está na rede, caso seja este o caso na próxima página digite o endereço da
impressora. Vamos supor que nossa impressora seja paralela, então selecionaremos
"Parallel Port #1". Acabando aqui clique em "Continue".
5. Nesta página 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
_____________________________________________________________________________Página 93
preferência para o hpijs pois este possui o driver mais estável. Acabando aqui clique
em "Continue". Ok a impressora foi adicionada, agora clique em "Printers" na barra
superior e mande imprimir uma página de teste clicando em "Print Test Page".
Uma informação importante: para que impressoras USB funcionem corretamente é
necessário que o módulo usbprinter esteja carregado.
$ sane-find-scanner
found USB scanner (vendor=0x03f0, product=0x2f11) at libusb:002:002
# 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".
_____________________________________________________________________________Página 94
10.9. Configurando gravadores de
CD/DVD
A configuração de gravadores de cds e dvds varia de acordo com a versão
utilizada do Linux. A maioria das distribuições atuais vem com o utilitário cdrecord e o
cdrdao. Ambos são necessários para a instalação e gravação de cds, novamente
ressalto, caso não esteja intalada baixe os pacotes.
Para o kernel 2.4 é necessário que se carregue o módulo ide-scsi:
# modprobe ide-scsi
image=/vmlinuz
label=Linux
read-only
append="hdx=ide-scsi"
Caso esteja utilizando o GRUB, deverá ser adicionado o parâmetro diretamente na linha
do kernel, o trecho do arquivo que será alterado ficará desta forma:
Uma coisa, eu utilizei o drive como hdx em ambos os exemplos, não 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:
_____________________________________________________________________________Página 95
# cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg 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 três números que aparecem na primeira coluna ao lado do drive, no caso
do exemplo o número é 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
# 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 versões mais novas do kernel o módulo usb-storage foi substituído 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.
_____________________________________________________________________________Página 96
É muito importante que os computadores se comuniquem entre-si formando redes, a
própria internet é uma grande rede e neste capítulo vamos aprender a configurar o
acesse à redes no Linux. Ao final deste capítulo o você será capaz de:
_____________________________________________________________________________Página 97
11.1. Configurando a rede
A configuração de uma rede TCP-IP é feita através da ferramenta ifconfig, nela
especificamos de uma só vez todos os parâmetros para que possamos subir a rede. a
formatação deste arquivo segue a seguinte regra:
# dhclient eth0
Internet Software Consortium DHCP Client 2.0pl5
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.
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.
nameserver 200.204.0.10
_____________________________________________________________________________Página 98
11.3.1. Discando via modem
Para discar e conectar à internet via modem você deve criar um link simbólico da
porta onde está o modem até o arquivo /dev/modem, veja o exemplo abaixo:
# ln -s /dev/ttyS1 /dev/modem
Aps a criaço do atalho, configure o programa wvdial (o discador padrão do Linux)
utilizando o programa wvdialconf, veja o exemplo abaixo:
# wvdialconf /etc/wvdial.conf
...
A saída desse comando é bem grande portanto não será incluída nesta apostila.
No arquivo recém criado (/etc/wvdial.conf) altere as configurações 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 opções de username, senha
e telefone. Com tudo configurado inicie o wvdial depois de discado, verifique se a
conexão 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
...
_____________________________________________________________________________Página 99
# route add default gw 192.168.0.254
Caso sua conta no provedor seja de IP dinâmico devemos utilizar o DHCP
exatamente como no inicio do capítulo, tudo é configurado automaticamente.
Alguns serviços de banda larga utilizam um método de autenticação chamado de
PPPoE (PPP over Ethernet), o que significa que você deve entrar com usuário e senha
antes de acessar. Para se conectar desta forma você deverá instalar os pacotes pppoe,
pppoeconf e ppp, (distribuições com pacotes rpm possuem o rp-pppoe que entra no lugar
do pppoe e pppoeconf). A configuração de distribuições baseadas em Debian consiste na
ferramenta pppoeconf (que faz tudo automaticamente), já distribuições baseadas em Red
Hat utilizam o comando adsl-setup. A configuração dos dois é bem simples qualquer
dúvida pode ser acmpanhada pelo manual.
_____________________________________________________________________________Página 100
Interface do SWAT
_____________________________________________________________________________Página 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 opções utilizadas.
Vamos supor que o computador TOAD roda windows e tem o diretório c:\ compartilhado,
para montar este diretório:
Digite a senha do usuário e pronto, a estação windows pode ser acessada agora.
O usuário que mencionamos acima é o usuário 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.
_____________________________________________________________________________Página 102
11.4.5. Compartilhando impressoras
Na seção "Printers" escolha uma das impressoras na caixa de seleção, caso queira
selecionar todas de uma vez selecione "printers" e clique em "Choose Printer".
Abaixo seguem as principais opções da seção Printers:
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 opção soft pois quando um host cai e esta opção não está especificada o
cliente trava até o host voltar à ativa.
/var/www/ 192.168.0.0/255.255.255.0(sync,rw)
Leia o manual exports para saber o que são e para que server as opções sync, rw.
_____________________________________________________________________________Página 103
Agora para exportar (compartilhar) os diretórios, utilize o comando exportfs -a :
# exportfs -a
_____________________________________________________________________________Página 104
Este apêndice tem não faz parte do curso, mas visa orientar o aluno na instalação do
sistema operacional GNU/Linux, tendo como base a instalação da distribuição Fedora
Core 2. Serão abordadas nesse capítulo as principais rotinas de instalação em um guia
prático seguindo passo-a-passo uma instalação comum.
_____________________________________________________________________________Página 105
A.1. Considerações Iniciais
A instalação da maioria das distribuições Linux é simples e descomplicada. Como
já foi visto antes, iremos utilizar a distribuição Fedora, porém, a instalação de todas as
distribuições é semelhante, todas tem de passar pelos mesmos processos básicos
(seleção de layout de teclado, seleção de idioma, particionamento do disco rígido,
seleção de pacotes, configuração da conta de root, instalação do boot loader e etc),
portanto, quem sabe instalar uma distro aprende com facilidade instalar qualquer outra.
Algumas máquinas antigas funcionam melhor com distribuições mais simples, sem
muitos recursos, portanto antes de instalar uma distribuição cheque se a máquina vai
rodar a mesma satisfatoriamente.
Por ser um sistema completo, algumas distribuições colocam muitos programas
que vêm junto com o Linux, isso nos proporciona um sistema completo pois tudo o que
precisamos está incluso em nossa distribuição. Por outro lado, essa inclusão de
programas torna o sistema extremamente grande, as distros atuais tem diversos Cds. É
também necessário escolher quais programas serão instalados no sistema para não
ficarmos com um computador cheio de inutilidades. Em um Linux básico instalado de uma
forma correta conseguimos gastar até 200 MB.
_____________________________________________________________________________Página 106
A.2 Bootando o Linux
Boot significa, a grosso modo, iniciar a máquina. Para que possamos instalar o
Linux precisamos fazer com que a máquina inicie o instalador contido no CD, este é o
processo de bootar o Linux. Todas as máquinas mais novas podem iniciar o CD
automaticamente, o que torna o processo de boot automático, basta colocar o CD e
iniciar a máquina e pronto, o instalador entra em ação.
Já em algumas máquinas mais antigas ou máquinas que não possuem drive de
CD-Rom a instalação dificulta já que não conseguimos iniciar o instalador
automaticamente. Neste caso caímos nas situações descritas no tópico anterior (2.1),
caso a máquina destino seja antiga recomendo que instale distribuições mais simples,
como a Slackware por exemplo, informações de como instalar via disquete estão em
http://www.slackware.com, e se sua máquina for nova mas não tenha drive de CD caimos
na situação 2.1.2, uma boa fonte de informações de como construir um disquete de boot
e instalar via rede (o Fedora) está nesta página:
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 instalação terá inicio.
Só a nível de curiosidade o instalador do Fedora Linux (e do Red Hat também) se chama
Anaconda.
Quando o anaconda iniciar nos será a apresentada a tela de boas vindas:
_____________________________________________________________________________Página 107
esta tela é unicamente informativa, no canto esquerdo temos notas dos autores da
distribuição.
Na próxima tela escolhemos a linguagem da instalação. Note que o português do Brasil
está na lista.
_____________________________________________________________________________Página 108
Na próxima tela configuramos o mouse para a instalação:
Na próxima tela será perguntado se você deseja atualizar uma instalação antiga ou se
deseja simplesmente iniciar uma instalação nova.
_____________________________________________________________________________Página 109
Até agora não foi necessária muita atenção na instalação. O passo seguinte é importante
pois vai definir o perfil de instalação do sistema.
_____________________________________________________________________________Página 110
Personal Desktop: Computador pessoal de casa.
Workstation: Estação de trabalho de uma rede corporativa.
Server: Servidor de serviços, pode ser um servidor da rede ou de internet.
Custom: Todo e qualquer outro PC que não se enquadra acima. Aqui você seleciona os
pacotes manualmente.
_____________________________________________________________________________Página 111
• Caso queira que o instalador particione seu disco automaticamente selecione a
primeira opção.
• Caso queria customizar as partições no seu disco rígido selecione a segunda opção, o
particionamento manual não será coberto por este curso justamente por ser de nível
intermediário a avançado.
Na próxima tela, o instalador pergunta como deve fazer o particionamento automático:
_____________________________________________________________________________Página 112
• Na 1ª opção ele pergunta se deve remover somente as partições Linux do sistema
(caso já tenha partições Ext3 formatadas no disco)
• Na 2ª opção ele pergunta se deve apagar todo o conteúdo contido no disco. Use essa
opção com muito cuidado pois vai deletar TUDO no disco.
• Na 3ª opção ele pergunta se deve manter todas as partições e usar o espaço livre.
_____________________________________________________________________________Página 113
A.3.3 Configurando o Bootloader (GRUB)
O bootloader é um gerenciador de boot, quando você liga a máquina ele te mostra
um menu com os sistemas operacionais e lhe pergunta qual deles será iniciado.
O bootloader padrão do Fedora é o GRUB que é bem completo e bonito, na tela
_____________________________________________________________________________Página 114
Imediatamente depois o instalador irá lhe perguntar se deseja ativar o firewall
clique na segunda opção, (Enable firewall, Habilitar Firewall) e deixe como está. Este
curso não abordará maiores detalhes sobre firewall por ser um tema de nível avançado.
_____________________________________________________________________________Página 115
A.3.6 Senha de root
O usuário root será explicado mais adiante, porém já é requerida uma senha.
Digite uma senha e não a divulgue a ninguém, com esta senha o acesso ao sistema é
ilimitado. Lembre-se de digitar uma senha que não esqueça.
A.3.7 Finalizando
Com todas as configurações 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 customização, caso seja necessária ou por gosto do
usuário, vale a pena dar uma olhada.
_____________________________________________________________________________Página 116
Na próxima tela o sistema lhe informa que foi tudo concluído e ele irá instalar o
sistema, cuidado pois esta é sua última chance antes que o instalador inicie a cópia de
arquivos.
_____________________________________________________________________________Página 117
A cópia de arquivos será iniciada, e pode demorar um pouco dependendo da
capacidade da máquina. No meio da cópia, o instalador vai lhe pedir para inserir o
próximo CD de instalação, retire o anterior, coloque o próximo e prossiga normalmente.
Ao final da instalação o instalador vai lhe apresentar a tela de conclusão e vai pedir para
reiniciar a máquina, retire o CD que estiver na bandeja e reinicie.
_____________________________________________________________________________Página 118