Apostila Linux_new_1

Propaganda
INTRODUÇÃO AO SISTEMA
OPERACIONAL LINUX
TREINAMENTO - UFGNet 2001
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Introdução ao Sistema Operacional
LiNUX
Copyright© 1999, 2000 - Israel Fernades Dias Teles – [email protected]
Revisão 2001 e Atualização para utilização de Linux Slackware –
Frederico Rodrigues do Carmo Costa – [email protected]
As marcas registradas utilizadas no decorrer deste material são usadas unicamente para fins
didáticos, sendo estas propriedade de suas respectivas companhias.
Red Hat e RPM são marcas registradas da Red Hat Software, Inc.
Slackware é marca registrada da Walnut Creek CDROM e Patrick Volkerding
Linux é uma marca registrada e cedida a Linus Torvalds.
Motif e UNIX são marcas registradas pelo The Open Group.
Netscape é uma marca registrada da Netscape Communications Corporation.
Windows é uma marca registrada da Microsoft Corporation.
Todas as demais marcas registradas são de uso e direito de seus respectivos proprietários.
Toda precaução foi tomada na preparação deste material. Apesar disto algumas incorreções e
inconsistências podem estar presentes. O autor não assume qualquer responsabilidade por
erros ou omissões, ou por danos resultantes do uso das informações contidas neste livro.
Este trabalho está em constante alteração, sugestões por e-mail são bem vindas.
2
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
ÍNDICE
1 - História e características do Linux ...................................................................................... 5
2 - Conceitos Básicos .............................................................................................................. 6
2.1 - Sistema Operacional
2.2 - Kernel
2.3 - Shell
2.4 - Usuário e Super-usuário
2.5 - Área de Swap
3 - Onde tudo começa ............................................................................................................. 7
3.1- Acessando o sistema
3.2- Saindo do sistema
3.3- Arquivos e diretórios
3.4 - A árvore de diretórios do Linux (O File System do Linux )
3.5 - Fazendo referência a arquivos no sistema
3.5.1 Caminho Absoluto
3.5.2 Caminho Relativo
3.6 - Desligando o sistema
4 - Estudo dos comandos ..................................................................................................... 12
4.1 - Listando o conteúdo do seu diretório
4.2 - Movendo-se entre diretórios
4.3 - Criando diretórios
4.4 - Copiando arquivos
4.5 - Movendo arquivos
4.5.1 - Mudando o nome de um arquivo
4.6 - Copiar e Mover
4.7 - Dando uma olhada nos arquivos
4.8 - Pedindo ajuda ao sistema
4.9 - Apagando arquivos e diretórios
4.10 - Caracteres Curinga (Wildcards)
4.11 - Exibindo as primeiras linhas de um arquivo
4.12 - Exibindo as últimas linhas de um arquivo
4.13 - Contando as linhas, palavras e caracteres de um arquivo
4.14 - Criando Links (Ligações entre arquivos)
4.14.1 - Criando Hard Links
4.14.2 - Criando Soft Links
4.15 - Acessando dispositivos no Linux
4.15.1 - Montando dispositivos
4.15.2 - Desmontando dispositivos
4.16 - Características de arquivos
4.17 - Ordenando o conteúdo de um arquivo
4.18 - Entrada e saída padrão
4.18.1 - Redirecionamento destrutivo
4.18.2 - Redirecionamento não destrutivo
4.19 - Pipe
4.20 - Localizando arquivos
4.20.1 - Localizando arquivos usando o PATH do sistema
4.20.2 - Outro comando para localizar arquivos (find)
4.20.3 - Localizando arquivos através de strings
4.21 - Comparando arquivos
4.22 - Comprimindo arquivos
4.22.1 - gzip
4.22.2 - Compress
4.22.3 - Visualizando o conteúdo de arquivos comprimidos
4.23 - Selecionando campos de uma tabela
4.24 - Empacotando arquivos
3
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.25 - Filtrando informações
4.26 - Máscaras para comandos
4.26.1 - Criando máscaras
4.26.2 - Retirando máscaras
4.27 - Descobrindo que usuário você é
4.28 - As variáveis de sistema
4.28.1 - Manipulando as variáveis de sistema
5 - Permissões de Arquivos ................................................................................................... 30
5.1 - Entendo as permissões
5.2 - Alterando permissões
5.3 - Máscara de criação de arquivos
6 - Alguns Arquivos Importantes do Linux ............................................................................. 33
6.1 - Arquivos do diretório /etc
6.2 - Arquivos do diretório /proc
6.3 - Arquivos de inicialização
6.4 - Arquivos de inicialização dos processos (Slackware)
7 - O Editor de textos vi ........................................................................................................ 38
8 - Administrando contas de usuários .................................................................................... 41
8.1 - Contas de usuários
8.2 - Tornando- se root
8.3 - Onde todos os usuários estão
8.4 - Adicionando usuários
8.5 - Removendo usuários
8.6 - Adicionando grupos
8.7 - Removendo grupos
9 - Processos e Tarefas ........................................................................................................ 43
9.1 - Listando os processos da máquina
9.2 - Finalizando processos
9.3 - Processos em background e foreground
9.4 - Tarefas
9.4.1 - Crontab
9.4.2 - At
10 - Criando um disco de Instalação no DOS/Windows ......................................................... 47
11 - Particionando e Formatando Discos Rígidos .................................................................. 48
11.1 – Particionando Discos Rígidos
11.2 – Formatando Discos Rígidos
12 - Um Pouco sobre o LILO ................................................................................................. 50
13 – Pacotes de instalação pré-compilados ........................................................................... 52
13.1 – Pacotes RPM
13.1.1 - Instalando pacotes RPM
13.1.2 - Conflitos com pacotes já instalados e Depêndencias entre outros pacotes
13.1.3 - Quais pacotes estão instalados ?
13.1.4 - Desinstalando os pacotes
13.1.5 - Atualizando pacotes
13.2 – Pacotes TGZ
13.2.1 – Instalando pacotes TGZ
13.2.2 – Removendo pacotes TGZ
13.2.3 – Atualizando pacotes TGZ
13.2.3 – Quais pacotes estão instalados
14 - Redes TCP/IP no Linux .................................................................................................. 54
4
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
14.1 - Um pouco sobre o Hardware
14.2 - Identificação de máquinas em uma rede TCP/IP
14.3 - Atribuindo um número IP e estabelecendo rotas de uma interface de rede
14.3.1 - Atribuindo um número IP a uma interface de rede
14.3.2 - Estabelecendo rotas de uma interface de rede
14.4 - Configurando uma interface ppp
14.5 - Configurando o nome da máquina
14.6 - O comando ping
14.7 - O comando netstat
14.8 - O servidor de Internet Inetd (Internet Deamon)
14.9 - Acesso remoto seguro com Secure Shell (SSH)
14.10 - Transferência de arquivos (FTP)
15 – O Ambiente Gráfico ....................................................................................................... 61
15.1 - Reconhecimento do Hardware
15.2 - Instalando o XFree86
15.3 - Ferramentas para configurar o XFree86
15.4 - Inicializando o Ambiente Gráfico
15.5 - Configurando o Xfree86 à partir do arquivo XF86Config
Bibliografia .......................................................................................................................... 66
5
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
1. Introdução
1.1 - O Sistema Operacional Linux O Sistema Operacional Linux começou a ser
desenvolvido no início da década de 90 por um estudante de computação chamado Linus
Torvards. Esse estudante Finlandês trabalhava em um projeto pessoal que mais tarde viria a se
tornar o Linux. Inspirado em um sistema já existentes chamado Minix , que era um pequeno
UNIX para fins acadêmicos. Depois de ter conseguido certo avanço Linus colocou à disposição
via Internet a primeira versão do Linux a partir de então ele contou com a ajuda de incontáveis
programadores ao redor do mundo, cada um resolvendo um problema ou criando novos
recursos para o Linux. Esse sistema operacional é um UNIX portado para PC’s ( processadores
X86 e clones ) que é multitarefa, multiusuário, trabalha com bibliotecas compartilhadas , carga
de drivers sob demanda, memória virtual, possui suporte a TCP/IP e possui uma grande
variedade de softwares como compiladores de várias linguagens, editores de textos, X-Window
e etc.
Algumas características do Linux:
MULTITAREFA: Significa que o Linux pode realizar mais de uma tarefa ao mesmo
tempo. Resumidamente, um Sistema Multitarefa se comporta da seguinte maneira: O
processador divide seu tempo de execução entre várias tarefas, realizando parte de cada uma
delas em uma pequena fração de tempo. Como as máquinas de hoje trabalham a vários
milhões de ciclos por segundo tem-se a impressão de que todas as tarefas são realizadas ao
mesmo tempo. O segredo de um bom Sistema Operacional consiste em gerenciar todas essas
tarefas de forma eficiente.
MULTIUSUÁRIO : Significa que mais de uma pessoa pode usar o computador ao
mesmo tempo pode-se então compartilhar os recursos da máquina, espaço físico de disco,
arquivos e etc. ( Este é um conceito um pouco difícil de ser compreendido logo no início mas
mais adiante isso será melhor compreendido).
SEGURANÇA : Como nos Sistemas Unix, o Linux mantém o mesmo padrão para a
segurança, levando em considerações ameaças tanto externas quanto dos próprios usuários do
sistema.
Citando algumas características de segurança temos :
*
Senha para utilizar o sistema;
*
Arquivos com controle de acesso;
*
Codificação de dados importantes;
BIBLIOTECAS COMPARTILHADAS : O Linux trabalha com um sistema de shared
libraries. Entenda uma biblioteca como um conjunto de funções que o sistema e alguns
programas do sistema podem fazer uso, como essas funções estão reunidas em um lugar e
todos que precisam podem fazer uso delas pode-se diminuir o tamanho dos programas e do
próprio sistema.
6
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
2. CONCEITOS BÁSICOS
2.1 Sistema Operacional - É um conjunto de programas que permitem ao usuário
operar seu microcomputador. O mesmo se aplica a computadores de médio e grande porte, ou
seja, todos os computadores necessitam de um sistema operacional para que seja possível
utilizá-los.
Algumas operações são básicas, como a manipulação de arquivos e periféricos.
*
Podemos destacar duas funções básicas de um sistema operacional:
*
Gerenciar os recursos do hardware de forma eficiente;
*
Providenciar uma interface mais amigável para gerar o computador ( uma vez
que a máquina na verdade só entende linguagem binária.);
Exemplos de Sistemas Operacionais: MS-DOS, WINDOWS 95/98, WINDOWS NT,
SOLARIS, AIX, LINUX entre outros.
Conceitos relacionados ao ambiente Linux:
2.2 KERNEL - É o núcleo do Sistema Operacional. O kernel é um programa que se
comunica com o hardware diretamente, e devido a isso ele tem que ser adaptado a cada
plataforma de hardware (processadores INTEL, POWER PC, MACINTOSH, etc.).
O Kernel se comunica com o hardware através de chamadas de sistema que são
instruções e linguagem de máquina e alguma de suas funções são: gerenciamento de
processos e de memória ; drivers de dispositivos dentre outras.
2.3 SHELL - O fato do Kernel se comunicar com o hardware apenas em linguagem de
máquina torna essa tarefa algo meio distante para nós "Simples Mortais". O Shell é uma parte
do Sistema Operacional que funciona como ligação /tradutor entre usuário e o Kernel,
traduzindo os comandos digitados em linguagem de máquina para que o Kernel possa realizar
as funções necessárias.
Deste modo o Shell tem duas funções principais: interpretar os comandos do usuário
e servir como uma ferramenta para programação.
Tipos de Shell: csh, bash, ksh entre outros.
2.4 USUÁRIO E SUPER USUÁRIO (ROOT) - Devido às características de segurança
do Linux, apenas os usuários que possuem permissão (uma conta no Sistema) podem utilizar a
máquina . Cada pessoa que possua uma conta no sistema é chamada de USUÁRIO.
O super usuário, chamado de ROOT, é o administrador do Sistema, ele gerencia a
abertura de novas contas, exclusão de usuários, organiza e dita as regras para que o Sistema
funcione o mais eficazmente possível.
2.5 ARÉA DE SWAP (MEMÓRIA VIRTUAL EM DISCO) - Do inglês área de "troca", é
uma parte de HD que o Sistema Operacional usa para armazenar dados temporariamente,
dados que deveriam estar na RAM . No Linux isso é bastante claro pois durante sua instalação
é necessário separar uma determinada quantidade de memória do disco rígido para SWAP.
7
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
3. ONDE TUDO COMEÇA
3.1 Acessando o sistema
Devido às características do Linux só têm acesso ao Sistema os usuários que possuem
uma conta nesse Sistema. A tela de login do Linux pode variar de terminal para terminal, ou de
uma distribuição para outra mais será sempre algo assim:
Welcome to Linux 2.2.16.
host login:
Password:
Temos que:
host - No caso de seu computador estar ligado a uma rede o <Nome da máquina
(vampira)> é utilizado para identificá-lo na rede. Se não esse nome pode ser deixado de lado
ou usado para personalizar seu Sistema.
Login : É o nome com que o usuário é identificado pela máquina, de ser único para
cada usuário.
Password : É a senha do usuário. Deve ser única, não deve ser revelada ou coincidir
com combinações triviais como: data de nascimento, placas de carro e etc. Ao ser digitada, a
senha não será’ exibida na tela, por razões de segurança.
Uma vez digitados Login e Password corretamente o usuário tem então acesso ao
sistema e lhe e’ apresentado um prompt do SHELL a espera de comandos:
Welcome to Linux 2.2.16.
host login: mane
Password:
/home/<usuário>$
Se um dos dois itens forem digitados erroneamente, surgirá então a mensagem :
incorrect . Deve-se então digitar novamente esses itens para se ter acesso ao
Login
sistema.
O prompt pode variar conforme sua configuração (que é alterável) e/ou conforme o
shell que o usuário esteja utilizando.
3.2 Saindo do sistema
Para encerrar a sessão (fazer o logout da máquina) digita-se exit .
/home/<usuário>$ exit <Enter>
Deste modo será representada novamente a tela de login do sistema.
3.3 Arquivos e Diretórios
Quase todas as operações realizadas, em um computador, por intermédio do Sistema
Operacional, estão relacionadas com arquivos e diretórios. Arquivos nada mais são do que um
tipo de informação, a qual podemos classificar.
Por exemplo: Um jogo de vídeo game é um arquivo do tipo "executável". Um arquivo
que contém caracteres que podem ser apresentados na tela de forma legível, ou que podem
ser impressos, é um arquivo de "texto" (não levando em consideração tipos de formatação
desse arquivo).
Um diretório é um conjunto de arquivos. Imagine uma pasta onde podem ficar vários
tipos de arquivos e você tem um diretório. Um diretório também pode conter outros diretórios,
neste caso, esse diretório é chamado de "Diretório Pai" ou "parente" dos diretórios que estão
contidos nele.
Ao efetuarmos o login no Sistema nosso diretório corrente será geralmente:
8
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/<usuário>$
Supondo que o nosso usuário chame Mane:
/home/<usuário>$
O Sistema de arquivos do Linux segue uma hierarquia e para entendermos melhor
onde estamos vamos acompanhar a figura abaixo:
Raiz do sistema ( / )
home
mane
O diretório mane está contido no diretório home , que por sua vez está contido no
diretório / que é o raiz do Sistema. O raiz é o diretório "pai" do diretório home e esse é o
diretório pai do diretório mane.
Neste ponto podemos notar alguma semelhança entre o LINUX e os Sistemas
Microsoft (MS-DOS, WINDOWS 3.11 / 95 / 98 / NT) . O caracter usado para separação de
diretórios é a barra no Linux (e nos Sistemas UNIX em geral) é usada a barra normal " / ", e nos
sistemas Microsoft é usada a barra inversa " \ " .
3.4 A árvore de diretórios do Linux
9
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Embora possa ocorrer diferenças de sistema para sistema a árvore de diretórios do
Linux, também chamada de Sistema de Arquivos ( File System ) mantém uma semelhança
habitual com os sistemas UNIX.
Raiz ( / )
/bin
/dev
/etc
/home
/lib
/proc
/tmp
/usr
/var
/mnt
/lost + found
/sbin
/root
A árvore de diretórios do Linux ( Linux File System )
Sobre os diretórios :
/ - É o diretório raiz do Sistema . A partir desse, ponto é montado todo o Sistema
de arquivos do Linux, note que todos os outros diretórios estão abaixo dele.
/bin - Neste diretório estão os arquivos executáveis do Sistema.
/dev - Os arquivos contidos nesse diretório são de extrema importância para o
Linux. Do inglês "devices" (dispositivos) , esses arquivos são usados para acessar dispositivos .
Um exemplo rápido: o arquivo /dev /fd0 é usado para se ter acesso ao floppy de
3 1/2 ( floppy disk ).
/etc - Este diretório contém vários arquivos de configurações do Linux. É de
grande importância e alguns dos seus arquivos mais importantes serão estudados mais tarde.
/home - Aqui ficam os diretórios dos usuários do Sistema . Seria aqui que o
diretório "mane" estaria.
/lib - As bibliotecas que o Sistema operacional precisa para funcionar ficam aqui.
Imagine uma biblioteca como um conjunto de funções capazes de realizar certas tarefas.
10
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Quando determinados programas necessitam destas bibliotecas é aqui que a
inclusive, vários programas podem fazer uso da mesma biblioteca.
buscam,
/proc - Este diretório contém informações importantes sobre seu Sistema como as
interrupções que estão em uso, dados sobre os processo que estão sendo executados e etc.
Na verdade o /proc não está no disco, ele é um diretório virtual que está armazenado na RAM e
é mantido pelo KERNEL.
/tmp - Arquivos temporários são armazenados no /TMP . Pode ser utilizado por
usuários do sistema e por programas ( que quando são executados, precisam gerar arquivos
temporários e guardá-los em algum lugar).
/usr - Vários arquivos encontrados nesse diretório (ou em diretórios abaixo deste)
são opcionais e, sem eles, o Sistema poderia operar perfeitamente, mas os arquivos
encontrados aqui tornam o Sistema mais interessante e completo. Por exemplo, bibliotecas
para os compiladores das linguagens de programação C e C++, páginas de manuais do
sistema ( Veremos esse assunto mais tarde).
/var - Contém arquivos considerados temporários mas não da mesma natureza
daquele contidos no diretório / tmp. E-mails e arquivos de logs do Sistema são alguns dos tipos
de arquivos contidos nos diretórios /var/spool e /var/admin ,respectivamente.
/mnt - Este diretório é usado para a montagem de dispositivos como drivers de
disquetes, CD-ROMS e etc. O conceito de "montar " um dispositivo no sistema pode parecer
obscuro, mas isso será visto no decorrer do curso.
/lost + found - Arquivos recuperados pelo utilitário fsck são colocados nesse
diretório.
/sbin - Assim como o diretório /bin contém também arquivos executáveis, mas
esses destinados à administração do sistema.
/root - É o diretório do root no Sistema. Do mesmo modo que nosso usuário
"mane" , quando loga, tem sua posição inicial em /home/mane, o root tem seu diretório em
/root
3.5 Fazendo referência a arquivos no sistema
Para referenciar um arquivo dentro do sistema podemos usar dois modos, usando o
caminho absoluto ou caminho relativo.
3.5.1 Caminho Absoluto
O caminho absoluto de um arquivo é composto pelo nome do diretório onde ele se
encontra e seu nome. Por exemplo, o caminho absoluto do arquivo passwd que se encontra no
diretório /etc é : /etc/passwd.
3.5.2 Caminho Relativo
O caminho relativo de um arquivo é composto apenas por seu nome., ou seja , o
caminho relativo do arquivo passwd seria apenas passwd.
3.6 Desligando o sistema
Para desligar o sistema usa - se o camando shutdown :
11
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/<usuário>$shutdown –h now [ Enter ]
Neste exemplo o serão finalizados todos os processos que estiverem rodando e o
sistema será paralisado.
/home/<usuário>$shutdown –r now [ Enter ]
Deste modo serão fianalizados os processos correntes , o sistema será paralisado e a
máquina será reinicializada. ( Reboot )
Outra maneira de desligar seu sistema é usar o camando sync e o comando halt.
/home/<usuário>$sync [ Enter ]
/home/<usuário>$halt [ Enter ]
Essa sequência de comandos também desligará seu sistema de forma segura, fazendo
a cópia dos dados que estão na memória para o HD, finalizando os processos correntes e
desligando o sistema.
12
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4. Estudo dos Comandos
Uma vez logado no Sistema, você esta apto a realizar algumas tarefas como: listar
o conteúdo do seu diretório corrente, copiar, mover, criar e apagar arquivos, criar e remover
diretórios e etc, nessa parte vamos estudar alguns dos comandos mais utilizados do Linux e
suas opções.
4.1 Listando o conteúdo do seu diretório
Para listar o conteúdo do diretório corrente (diretório corrente e aquele em que você
está) o comando usado é o ls :
/home/mane$ ls [ Enter ]
fotos PAR-IMPAR
trabalhos
Uma vez digitado ls seguido da tecla ENTER você terá uma listagem do conteúdo do
seu diretório . Suponhamos que , nesse caso, seu diretório contenha dois arquivos chamados
PAR-IMPAR e trabalhos e um subdiretório chamado fotos.
Geralmente ( quando isso for possível ) arquivos não executáveis são apresentados na
cor verde e diretórios na cor azul. Mas, supondo que você não disponha de um monitor
colorido, ou que não queira depender disto para descobrir quais os tipos de arquivos estão
armazenados no seu diretório, existem algumas opções do comando ls que podem ajudá-lo. A
opção -F lhe mostrará algo assim:
/home/mane$ ls -F [ Enter ]
PAR-IMPAR* fotos/
trabalhos
Temos um novo tipo de listagem agora. Lê-se a opção -F deste modo:
Nomes seguidos de uma barra ( " / " ) representam diretórios; nomes seguidos de
asterisco ( " * " ) são arquivos executáveis , e aqueles que não possuem nenhuma dessas
características ( o arquivo trabalho) não são considerados nem executáveis nem diretórios,
podendo ser, na maioria das vezes arquivos de texto. (arquivos executáveis podem ser
arquivos de texto, mas falaremos nisso quando entrarmos na parte de "shell scripts") .
Um outro modo , o mais utilizado, para listar o conteúdo de um diretório é usar o
comando ls com as opções -la. A opção " l " nos dá algumas características dos arquivos
listados, enquanto a opção " a " lista até os arquivos ocultos.
/home/mane$ ls -la [ Enter ]
total 23
drwxr-xr-x 6 mane users
drwxr-xr-x 21 root
root
-rw------1 mane users
-rw-r--r-1 mane users
-rw-r--r-1 mane users
-rw-r--r-1 mane users
-rwxr-xr-x 1 mane users
drwxrwxr-x 2 mane users
-rw-rw-r-1 mane users
1024 mai 19 10:08 .
1024 abr 29 13:40 ..
7406 mai 15 12:57 .bash_history
24 mar 23 06:05 .bash_logout
220 mar 23 06:05 .bash_profile
124 mar 23 06:05 .bashrc
505 mai 19 10:04 PAR-IMPAR
1024 mai 19 10:05 fotos
505 mai 19 10:05 trabalhos
Vamos então entender essa nova listagem, usando o comando ls com as opções -
la.
13
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
No primeiro campo estão as permissões de cada arquivo (veremos o que vem a
ser permissões posteriormente), note que na linha relativa à trabalhos, esse campo começa
com a letra "d" , indicando que trabalhos é de foto um diretório. O segundo campo refere-se ,
respectivamente ao dono do arquivo (mane) e ao grupo a que ele pertence. O terceiro campo
indica o tamanho do arquivo em bytes . O quarto campo faz referência à data e hora de criação
do arquivo e o quinto campo é o nome do arquivo. Não se preocupe se essa interpretação lhe
parecer confusa, logo você estará lendo esse tipo de listagem com muita facilidade e rapidez.
Você deve ter notado que nas várias maneiras de usar o comando ls (ls, ls –F, ls –la),
existe um certo padrão : ls - <opção>, esse padrão se aplica a grande maioria dos comandos
do Linux : comando - < opção >
Por exemplo, ls –l listaria todas os arquivos do diretório, com suas características (
permissões, dono, grupo, data e etc ) mas não me mostraria os arquivos ocultos ( arquivos
ocultos começam com um ponto ( “. “) no Linux ). Logo a sintaxe ls –la me daria uma
combinação dessas duas opções.
4.2 Movendo-se entre diretórios
Após listar o conteúdo do diretório vamos nos mover entre os diretórios do sistema.
Nosso diretório atual é /home/mane mas existe um comando que retorna nossa posição atual
no sistema, sua sintaxe é : pwd [ Enter ]
/home/mane$ pwd [ Enter ]
/home/mane
Para movermos entre os diretórios o camando usado é o cd ( change directory ) e sua
sintaxe é : cd < nome do diretório >
/home/mane$ cd fotos [ Enter ]
/home/mane/fotos$ pwd [ Enter ]
/home/mane/fotos
Pode-se usar um ponto ( “ . “ ) para fazer referência ao diretório corrente, ou seja
aquele em que você se encontra, e dois pontos referenciar o diretório acima do que você está,
o diretório parente.
/home/mane$ cd fotos [ Enter ]
/home/mane/fotos$ cd .. [ Enter ]
/home/mane$pwd [ Enter ]
/home/mane
Neste exemplo, após o usuário mover-se para o diretório fotos ele usa o comando cd
seguido por dois pontos o que o faz retornar ao diretório parente, que é /home/mane.
Outro recurso é usar “ ~ “ ( til ) para referenciar o diretório home de um usuário.
home/mane$ cd /tmp [ Enter ]
/tmp$ cd ~ [ Enter ]
/home/mane$ pwd [ Enter ]
/home/mane
Após mudar para o diretório /tmp , o uso do comando cd ~ faz com que o usuário vá
para seu diretório home ( /home/mane ).
Durante as tentativas de tentar mover-se pelo sistema pode surgir a mensagem “
Permission denied “ ( permissão negado ). Isso ocorre devido a política de segurança do Linux.
14
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Diretórios de usuários do sistema só podem ser acessados se esses derem permissão para
isso, ou pelo ROOT.
4.3 Criando diretórios
Para criar diretórios o comando usado é mkdir (make directory), e sua sintaxe é mkdir <
nome do diretório > .
/home/mane$mkdir teste [ Enter ]
/home/mane$ ls -F [ Enter ]
PAR-IMPAR* fotos/
trabalhos teste/
Neste exemplo cria-se um diretório chamado “ teste ”.
4.4 Copiando arquivos
Copiar arquivos no Linux é muito simples e para isso usa – se o comando cp. A sintaxe
desse comando é cp < nome do arquivo > < destino >.
/home/mane$cd /etc
/etc$ cp issue.net /home/mane [ Enter ]
/etc$cd /home/mane [ Enter ]
/home/mane$ ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
Aqui o usuário vai ao diretório /etc e copia o arquivo “ issue.net “ para seu diretório.
Essa operação pode ser feita de modo mais rápido usando alguns recursos já vistos.
/home/mane$cp /etc/issue.net ~ [ Enter ]
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
Usando o caminho absoluto do arquivo podemos copiá – lo de forma mais rápida. O
nome absoluto do arquivo é /etc/issue.net e o sinal ~ ( til ) faz referência ao diretório home do
usuário.
4.5 Movendo arquivos
Para mover arquivos no Linux o comando usado é o mv. Sua sintaxe é : mv < nome do
arquivo > < destino >.
/home/mane$mv /etc/issue.net ~ [ Enter ]
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
Neste exemplo movemos o arquivo issue.net para nosso diretório home.
4.5.1 Mudando o nome de um arquivo
15
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Para mudar o nome de um arquivo também é usado o comando mv. O modo é mv <
nome do arquivo > < novo nome >
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
/home/mane$mv trabalhos provas [ Enter ]
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
provas issue.net
Aqui o arquivo “ trabalhos “ teve seu nome alterado para “ provas “ .
4.6 Copiar e Mover
Talvez exista uma certa confusão entre os termos copiar e mover durante a utilização
do sistema. A dúvida é comum e fácil de ser sanada. Ao copiarmos um arquivo no final da
operação teremos dois arquivos, um na origem (de onde copiamos) que é o original, e um no
destino que é a copia do arquivo. Já quando movemos um arquivo o resultado da operação
será apenas um arquivo, por que ao movermos estamos tirando o arquivo de sua posição atual
e colocando – o em outro lugar.
4.7 Dando uma olhada nos arquivos
Para visualizar o conteúdo de um arquivo temo dois comandos: more e cat . O
comando cat irá listar o arquivo de uma vez, sem paradas. Se esse arquivo for grande demais
para ser exibido no espaço de uma tela a melhor opção será usar o comando more que lista o
arquivo e a cada vez que a listagem preenche toda a tela é feita uma parada.
/home/mane$ more /etc/smb.conf
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options (perhaps too
# many!) most of which are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentry and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command
"testparm"
More--(8%)
Aqui listamos o conteúdo do arquivo smb.conf que está no diretório /etc ( caminho
absoluto do arquivo : /etc/smb.conf ). Como o arquivo não cabe na tela é feita uma parada e o
sistema indica que foi mostrado 8% do arquivo.
Existem algumas opções para o comando more :
[ Barra de espaço ]
[ Enter ]
[b]
Avança para a próxima página do arquivo
Avança uma linha
Volta uma página
4.8 Pedindo ajuda ao sistema
16
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Felizmente o Linux possui um recurso que pose ser de grande utilidade para o usuário,
são as páginas de manuais do sistema (man pages). Essas páginas possuem um grande
volume de informações sobre comando e arquivos. Para consultar as páginas de manuais é
usado o comando man seguido do nome do comando ou do nome do arquivo que se quer
informação. Assim man < nome do comando > ou man < nome do arquivo >
/home/mane$ man cp [ Enter ]
CP(1)
CP(1)
NOME
cp – copia arquivos e diretórios
SINOPSE
cp [opções] caminho arquivo
cp [opções] arquivo... diretório ...
No exemplo acima olhamos a página de manual do comando cp . Essa página está
traduzida para o português porque esse exemplo foi retirado do Conectiva Linux versão 3.0
(Guarani) que contém um bom número de man pages traduzidas, mas as páginas de manuais
tem seu formato original em inglês e é assim que elas se apresentam na maioria dos sistemas.
Existem algumas facilidades para consultar as páginas de manuais, elas são :
[ Enter ]
[ Barra de Espaço ]
/ < palavra >
[n]
[b]
[q]
Avança a documentação linha por linha
Avança a documentação página por página
Faz procura no texto por “palavra”
Procura próxima ocorrêcia de “palavra”
Retrocede uma página
Sai da documentação
4.9 Apagando arquivos e diretórios
Todo cuidado é pouco quando o assunto é apagar arquivos no Linux, porque arquivos
apagados não podem ser recuperados. O comando usado é: rm (remove), e sua sintaxe é: rm
< nome do arquivo >
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
/home/mane$rm issue.net [ Enter ]
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
provas
Para apagar diretórios o comando usado é rmdir , mas o diretório só será apagado se
estiver vazio. Caso contrário surgirá uma mensagem do tipo : “ rmdir: < nome do diretório > :
Directory not empty “ .
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
/home/mane$rmdir fotos [ Enter ]
rmdir: fotos: Directory not empty
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
Nesse exemplo o diretório não foi apagado porque não estava vazio.
17
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Para apagar um diretório que contenha algum arquivo ou subdiretório é usado o
comando rm com a opção –r.
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
/home/mane$rm –r fotos [ Enter ]
/home/mane$ls [ Enter ]
fotos PAR-IMPAR
trabalhos issue.net
4.10 Caracteres Curinga (Wildcards)
Caracteres curinga ( Wildacards ) são caracteres que podem ajudar – nos em muitas
operações. Eles podem substituir um ou mais caracteres em muitas operações.
Caracter
*
?
Significado
Substitui todos os caracteres
Substitui um caracter
Vamos aos exemplos :
/home/mane$ls /etc/in* [ Enter ]
inetd.conf info-dir initrunlvl inittab
inputrc
O asterístico substitui todos os outros caracteres, deste modo serão listados todos os
arquivos que começam com “ in “ .
/home/mane$ls /etc/pas* [ Enter ]
passwd passwd-
Do mesmo modo, neste exemplo, serão listados todos os arquivos começados com
“ pas “
/home/mane$ ls ???.conf
pam.conf smb.conf
Aqui serão listados todos os arquivos terminados em .conf e tem seus nomes iniciados
por três caracteres quaisquer .
4.11 Exibindo as primeiras linhas de um arquivo
Para exibir as primeiras linhas de um arquivo usa – se o comando head, sua síntaxe é:
head <nome do arquivo> . Se for usada a opção –n N serão listadas as N primeiras linhas do
arquivo. Se for omitido –n N as dez primeiras linhas serão listadas.
/home/mane$head –n 5 /etc/passwd [ Enter ]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
Neste exemplo são listadas as cinco primeiras linhas do arquivo passwd contido no
diretório /etc. Se não fosse especificado o número de linhas (-n 5) seriam listadas as dez
primeiras linhas do arquivo.
18
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.12 Exibindo as últimas linhas de um arquivo
Para esta tarefa o comando utilizado é o tail, e sua sintaxe é: tail < nome do arquivo >.
Se for usada a opção –n N serão listadas as N útimas linhas do arquivo. A opção padrão é
listar as dez últimas linhas do arquivo.
/home/mane$tail –n 5 /etc/passwd [ Enter ]
mane:x:511:512:Franscisco da Silva:/home/mane:/bin/bash
bwayne:x:512:513:Bruce Wayne :/home/bwayne:/bin/bash
maria:x:514:515:Maria das Graças:/home/maria:/bin/bash
gvargas:x:515:516:Getúlio Vargas :/home/gvargas:/bin/bash
linux:x:516:516::/home/linux:/bin/bash
4.13 Contando as linhas, palavras e caracteres de um arquivo
O comando wc faz a contagem de linhas, palavras e caracteres de um arquivo. A
sintaxe é wc < nome do arquivo >.
/home/mane$ wc /etc/ wc smb.conf
292 1883 10756 smb.conf
Contando as linhas , palavras e caracteres do arquivo passwd encontrado no diretório
/etc temos : 292 linhas , 1883 palavras e 10759 caracteres.
4.14 Criando Links (Ligações entre arquivos)
Criar um link (ligação) entre dois arquivos . O arquivo existe apenas uma vez mais pode
haver mais de uma referência a ele. Os arquivos no Linux são identificados pelo sistema
através do seu “inode number“. Por exemplo, o comando ls com a apção –i lista o arquivo e seu
“inode number“.
/home/mane$ls -i PAR-IMPAR
100394 PAR-IMPAR
Aqui é listado o “inode number “ do arquivo PAR-IMPAR.
4.14.1 Criando Hard Links
Um hard link é uma referência a “inode number“ de um arquivo, ou seja, é uma ligação
que aponta para o “inode number “ desse arquivo. Para criá–lo comando é:
ln
< origem > < destino >
/home/mane$ln PAR-IMPAR jogo [ Enter ]
Foi criado aqui um hard link para o arquivo PAR-IMPAR com o nome de “jogo”, ou seja,
ao digitar “jogo”, o resultado será o mesmo que digitar PAR-IMPAR. Como esse é um hard link,
o “inode number“ de ambos os arquivos é o mesmo, isso pode ser verificado com o comando ls
–i. Se existir mais de um hard link para um arquivo será necessário apagar todos os links que
levam a esse arquivo para removê-lo completamente do seu sistema. Alterações feitas em
qualquer um desses arquivos serão repassadas para os outros arquivos, se você fizer uma
alteração no arquivo “jogo”, será o mesmo que alterar o arquivo PAR-IMPAR.
Uma restrição do hard link é que ele só pode referenciar arquivos que estejam no
mesmo sistema de arquivos (file system).
19
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.14.2 Criando Soft Links
Link simbólico, ou symlink, é uma referência à um arquivo que não aponta para seu “
inode number “ , mas dá ao arquivo em questão outro nome. Ao contrário do hard link, o soft
link pode apontar para arquivos que estejam em outros file systems. Para criar um soft link é
usado o comando: ln –s <origem> <destino>
/home/mane$ln –s PAR-IMPAR game [Enter]
No exemplo acima foi criado um soft link chamado “game” para o arquivo PAR-IMPAR.
Se for usado comando ls –i pode – se verificar que o arquivo criado não tem o mesmo “inode
number“ que PAR-IMPAR. Use o comando ls –l para listar as permissões do arquivo, o campo
referente à essas características será preenchido com lrwxrwxrwx, porque as permissões desse
tipo de link são dadas pelo seu alvo. Repare também que no local do nome do arquivo é dado
o nome do link e para onde ele aponta.
Como já foi dito anteriormente, é possível criar um soft link para um arquivo que esteja
em outro file system. Podemos também criar links para diretórios e isso só é possível com um
soft link.
4.15 Acessando dispositivos no Linux
Para acessar disquetes, CD-ROM’s ou outros dispositivos no Linux é preciso montá –
los no file system. Todos esses dispositivos são referenciados através de arquivos especiais
que estão presentes no diretório /dev, uma vez montado o dispositivo ele passa a fazer parte do
file system e pode ser então utilizado.
Os arquivos mais usados para acesso a dispositivos são :
Arquivo
/dev/fd0
/dev/hda1
/dev/hda2
/dev/hdb1
/dev/sda1
/dev/sda4
Dispositivo
Disquete de 3 ½ ( Floppy disk )
Hard Disk IDE primário Master
Hard Disk IDE primário Master
Hard Disk IDE primário Slave
Hard Disk SCSI
Hard Disk SCSI ( Geralmente ZIP Drive )
-
primeira partição
segunda partição
primeira partição
primeira partição
- quarta partição
4.15.1 Montando dispositivos
O comando utilizado para isso é o mount e sua sintaxe é : mount –t < file system >
/dev/”dispositivo” /”local onde se deseja montar o dispositivo”
Pode - se montar um dispositivo em quase todos os lugares do file system, mas por
questão de organização é comum montá – lo abaixo do diretório /mnt .
A opção –t indica o tipo de file system que será montado. Por exemplo, para ler um
disquete com arquivos do WINDOWS 95/98 ( arquivos com nomes longos ) a opção < file
system > será : vfat . Ficando então :
/home/mane$mount -t vfat /dev/fd0 /mnt/floppy [ Enter ]
Nesse exemplo, o disquete de 3½ seria montado no diretório /mnt/floppy , ou seja, seu
conteúdo estaria disponível nesse diretório. Ao mover – se nesse diretório você estará se
movendo no seu disquete e todas as outras operações também, como criar diretórios, ler e
editar arquivos e etc.
/home/mane$cd /mnt/floppy [ Enter ]
/home/mane$ls [ Enter ]
cartas tutoriais jogos
20
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
No exemplo acima, após o disquete ser montado no diretório /mnt/floppy o usuário tem
acesso a esse dispositivo e lista seu conteúdo. Qualquer alteração feita nesse diretório será
feita na verdade no disquete.
Alguns do file systems suportados pelo Linux:
File system
Second Extended File system
Extended File system
Minix File system
UMSDOS File system
MS-DOS File system
VFAT File system
/proc File system
ISO 9660 File system
NT File system
Xenix File system
System V File system
Tipo
ext2
ext
minix
umsdos
msdos
vfat
proc
Iso9660
ntfs
xenix
sysv
Comentário
Sistema de arquivos mais comum do Linux
Superado pelo ext2
Sistema de arquivos original do Minix (raro)
Para instalar o Linux em uma partição MS-DOS
Usado para acessar arquivos MS-DOS
Usado para acessar arquivos com nomes longos
Provém informações sobre processos e etc.
Usado pela maioria dos CD_ROM’s
Usado para acessar arquivos do Windows NT
Usado para acessar arquivos do Xenix
Usado para acessar arquivos System V para x86
4.15.2 Desmontando dispositivos
Após usar o dispositivo de seu interesse, é necessário desmontá – lo do sistema. O
comando usado para isso é o umount e sua sintaxe é: umount /local onde foi montado o
dispositivo” . Se você tentar desmontar um dispositivo estando dentro do diretório em que ele
foi montado então o sistema lhe dará uma mensagem de erro do tipo “ device is Busy “ .
/home/mane$cd ~ [ Enter ]
/home/mane$umount /mnt/floppy [ Enter ]
No exemplo acima o usuário sai do diretório onde o dispositivo foi montado (vai para
seu diretório home) e então desmonta esse dispositivo.
Por default somente um super-usuário pode montar e desmontar dispositivos, para
permitir que qualquer usuário monte determinados dispositivos, por exemplo, o cd-rom e o drive
de disquete. Para que todos usuários possam montar estes dispositivos é necessário editar o
arquivo /etc/fstab, como segue o exemplo abaixo:
/root# vi /etc/fstab [Enter]
/dev/sda1
swap
/dev/sda2
/
/dev/sdb1
/opt
/dev/cdrom /cdrom
/dev/fd0
/mnt/fd
none
/dev/pts
none
/proc
swap
ext2
ext2
iso9660
vfat
devpts
proc
defaults
0 0
defaults
1 1
defaults
1 1
noauto,user
0 0
noauto,user
0 0
gid=5,mode=620 0 0
defaults
0 0
No exemplo à cima nota-se que os dispositovs /dev/cdrom e /dev/fd0 poderão ser
montados pelos usuários, devido à coluna 4 (noauto,user) assim todos usuários poderão
montar o dispositivo, só que o comando para montar o dispositivo terá a seguinte sintaxe:
mount /cdrom [Enter] ou mount /mnt/fd [Enter]. Dessa forma o comando mount fará leitura do
arquivo /etc/fstab montando o dispositivo (/dev/cdrom ou /dev/fd0) com filesystems do tipo
iso9660 (cdrom) e vfat (disquete, supondo que o disquete foi formatado no DOS com FAT 32)
nos pontos de montagem especificados (/cdrom ou /mnt/fd).
21
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.16 Características de arquivos
Para determinar as características de um determinado arquivo usa –se o comando file,
e sua sintaxe é : file < nome do arquivo > . Esse comando utiliza o arquivo /usr/share/magic que
contém informações para determinar o tipo do arquivo em questão : arquivos de texto ( ASCII ) ,
executáveis ( binários ) , e etc.
/home/mane$ file /etc/smb.conf [ Enter ]
/etc/smb.conf: English text
No exemplo acima o usuário usa o comando file para descobreir o tipo do arquivo
/etc/smb.conf e esse comando retorna para ele a informação de que este é um arquivos de
texto em inglês.
4.17 Ordenando o conteúdo de um arquivo
O comando sort imprime o conteúdo de um arquivo em ordem alfabética na tela. Seu
formato é : sort < nome do arquivo >.
Supondo um arquivo chamado “ teste “ com o seguinte conteúdo :
Zeus
Farinha
Cavalo
Anta
Verdade
Usando o comando sort :
/home/mane$sort teste [ Enter ]
anta
cavalo
farinha
verdade
zeus
O conteúdo ordenado é impresso na tela mas o arquivo continua inalterado.
4.18 Entrada e saída padrão
Os comandos que são executados por nós no Linux possuem um padrão para entrada
e saída de dados. Por exemplo, quando executamos o comando ls listamos o conte’údo de um
diretório, a saída padrão desse comando é o monitor, ou seja, seu resultado aparecerá no seu
vídeo. Essa é a saída padrão desse comando. Outro exemplo, ao utilizarmos o comando cat
listamos o conteúdo de um arquivo na tela, a entrada padrão é um arquivo ( o que será lido ) e
a saída padrão é o monitor ( onde o conteúdo do arquivo será listado ).
É possível redirecionar entradas e saídas de arquivos usando os símbolos > e < .
Existem dois tipos de redirecionamento : destrutivo e não destrutivo.
22
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.18.1 Redirecionamento destrutivo
No redirecionamento destrutivo qualquer informação que houver no arquivo que será
destino de redirecionamento será sobreposta pela atual.
/home/mane$ls > lista [ Enter ]
Neste exemplo, a listagem do conteúdo do diretório que deveria ser impressa no vídeo
foi redirecionada para o arquivo “ lista “, usando o comando cat ou more é possível visualizar o
conteúdo desse arquivo. Se houvesse algo escrito neste arquivo essa informação seria
sobreposta.
/home/mane$wc lista > contar
[ Enter ]
No exemplo acima é feita uma contagem do número de linhas do arquivo listas e sua
saída é redirecionada para o arquivo “ contar ” .
Nos dois primeiros exemplos redirecionamos as saídas padrões para um arquivo, no
axemplo abaixo iremos redirecionar a entrada padrão.
/home/mane$sort < teste [ Enter ]
anta
cavalo
farinha
verdade
zeus
4.18.2 Redirecionamento não destrutivo
Ao usarmos o redirecionamento não destrutivo, o conteúdo que estamos
redirecionando é adicionado ao do arquivo. O conteúdo original do arquivo é mantido. O
símbolo usado para fazer esse tipo de redirecionamento é : >> (dois “ maior que “ seguidos).
/home/mane$ls > lista [ Enter ]
/home/mane$wc lista >> lista [ Enter ]
Neste exemplo a saída do comando ls é direcionada para o arquivo “ lista “ e logo em
seguida é adicionado ao conteúdo desse arquivo o seu númro de linhas.
4.19 Pipe
Pipe é o nome que se dá ao redirecionamento da saída de um comando para a entrada
de outro, para fazer isso usamos o símbolo “ | “ ( uma barra reta ) e sua utilização é a
seguinte : < comando 1 > | < comando 2 > . Esse é um serviço provido pelo SHELL e é de
grande utilidade. Vamos a alguns exemplos para clarear.
/home/mane$ls | more [ Enter ]
Neste exemplo a saída do comando ls é mandada para o comando more, ou seja, o
conteúdo do diretório será listado até que a tela seja preenchida, em seguida pode –se usar as
opções já vistas do comando more (barra de espaço = lista próxima tela; [ Enter ] lista próxima
linha)
23
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/mane$ ls -la | head -5
total 2614
drwxr-xr-x 14 root root
1024 jul 23 16:08 .
drwxr-xr-x 17 root root
1024 jul 21 14:24 ..
-rw-r--r-- 1 root root
31 mai 25 10:16 .AfterStep-errors
-rw-r--r-- 1 root root
0 mar 23 02:48 .WindowMaker-errors
Neste segundo exemplo a saída do comando ls –la é mandada para o comando head
que lista as primeiras cinco primeiras linhas.
O uso do Pipe facilita bastante a pesquisa, manuseio e outras tarefas. Outras
combinações de comandos podem ser usadas além das mostradas aqui.
4.20 Localizando arquivos
No Linux existem alguns comandos para localizar arquivos, alguns desses comandos
utilizam o PATH do sistema para realizar essa tarefa e outro procura em todo o sistema pelo
arquivo desejado.
4.20.1 Localizando arquivos usando o PATH do sistema
Os comandos que utilizam o PATH do sistema para localizar arquivos são type e which.
A sintaxe dos dois é semelhante : < nome do comando > < nome do arquivo >
/home/mane$ type passwd [ Enter ]
passwd is /usr/bin/passwd
No exemplo acima foi usado o camando type e este retornou a posição do arquivo
passwd baseado no PATH do sistema. Note que ele não dá a localização do arquivo
/etc/passwd por que o diretório /etc não deve estar no PATH.
/home/mane$ which passwd
/usr/bin/passwd
Neste exemplo foi usado o comando which para localizar o arquivo. Como esse
comando também utiliza o PATH ele retornou a esma localização que o comando type.
4.20.2 Outro comando para localizar arquivos
Outro comando usado para localizar arquivos é o find. Esse comando tem muito mais
recursos e procura em todo o file system, sendo de grande utilidade. Esse comando possui
uma grande variedade de opções e serão mostradas aqui apenas as mais utilizadas, para
maiores informações é aconselhável consultar sua página de manual. Sua sintaxe é :
find
< diretório inicial para pesquisa > - < opção > < nome do arquivo/outra informação >
Algumas opções do comando find :
Opção
-name
-size
-user
Significado
Procura arquivo por nome
Procura arquivo por tamanho/bloco ( cada bloco tem 512
bytes )
Procura arquivo por usuário
Alguns exemplos :
/home/mane$ find / -name passwd [ Enter ]
/etc/passwd
/etc/pam.d/passwd
/home/ftp/etc/passwd
24
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
No exemplo acima é feita uma procura começando pelo diretório raiz do sistema ( / ),
ou seja ele fará uma busca em todo o sistema por arquivos com nome passwd ( -name passwd
).
/home/mane$find /etc -size +400 [ Enter ]
/etc/termcap
/etc/security/tmp
Neste exemlo são listados todos os arquivos , a partir do diretório /etc , que contém
mais de 400 blocos de tamanho.
/home/mane$find / -user mane
/var/spool/mail/mane
/home/mane
/home/mane/.Xdefaults
/home/mane/.bash_logout
/home/mane/.bash_profile
/home/mane/.bashrc
/home/mane/.bash_history
/home/mane/PAR-IMPAR
/home/mane/ fotos
/home/mane/ trabalhos
Neste outro exemplo são listados todos os arquivos pertencentes ao usuário mane,
note que a procura é feita desde a raiz do sistema ( / ).
/home/mane$ find / -name smb.conf | wc
5
5 200
Um exemplo usando Pipe. É feita uma procura por todos os arquivos chamados
smb.conf e a saída desse comando é direcionada para o comando wc, que conta quantas
linhas são resultantes do comando find, ou seja, quantos arquivos com esse nome existem no
sistema.
Ao fazer uma pesquisa o usuário pode se deparar com a mensagem : “ Permission
denied “ ( permissão negada ) , ou seja , ele não possui permissão para acessar determinado
diretório.
4.20.3 Localizando arquivos através de strings
Para localizar arquivos através de parte de seu nome ( uma string é um conjunto de
caracteres ) é usado o comando locate e sua sintaxe é : locate < string > .
/home/mane$locate teste [ Enter ]
/etc/rc.d/init.d/teste.html
/home/httpd/html/netsaint/docs/untested.html
/home/mane/backup/testeif
No exemplo acima é feita uma pesquisa por todos os nomes que contém a string
“teste”. O comando locate utiliza uma base de dados do sistema que deve ser atualizada com
certa frequência para que a procura seja eficiente, essa base de dados pode ser atualizada com
o comando updatedb.
25
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.21 Comparando arquivos
Pode – se fazer uma comparação entre dois arquivos no Linux e para isso é usado o
comando diff seguido do nome dos arquivos que se deseja comparar : diff < arquivo 1 > <
arquivo 2 > .
Supondo dois arquivos chamados arq1 e arq2 com os respectivos conteúdos :
arq1
arq2
Arquivo de teste
Arquivo de testes
Arquivo de testes
Arquivo de teste
Arquivo de teste
Arquivo de testes
/home/mane$ diff arq1 arq2 [ Enter ]
2c2
< Arquivo de testes
--> Arquivo de teste
Nesse exemplo são comparados os arquivos arq1 e arq2 e é encontrada uma diferença
nas linhas de número dois dos arquivos.
4.22 Comprimindo arquivos
Um programa de compressão de arquivos comprime ( reduz o tamanho ) de um
arquivo e descomprime ( volta o arquivo ao seu tamanho original ). Existem várias utilidades em
diminuir o tamanho de arquivos. Com o crescimento da Internet a utilização desse tipo de
arquivos cresceu muito, visando reduzir o tempo de transferência de arquivos via rede. O Linux
possui algumas ferramentas de compressão de arquivos.
4.22.1 gzip
O gzip é um programa para compressão/descompressão de arquivos que não é nativo
do Linux mas devido a sua grande popularidade ele está presente na grande maioria das
distribuições. Para comprimir um arquivos é usado : gzip < nome do arquivo >
/home/mane$gzip trabalho [ Enter ]
Neste exemplo é feita o compressão do arquivo “ trabalho ”. Após a compressão é
gerado um arquivo com extensão .gz , ou seja , o resultado da operação acima será um arquivo
com nome trabalho.gz , que substituirá o arquivo original “trabalho”.
Existem duas sintaxes para descomprimir o arquivo, usando gunzip < nome do arquivo
> ou gzip –d < nome do arquivo >.
/home/mane$gunzip trabalho.gz [ Enter ]
ou
/home/mane$gzip –d trabalho.gz [ Enter ]
Note que ao comprimir um arquivo usando o gzip esse arquivo é substituído por um
arquivo com mesmo nome e extensão .gz .
4.22.2 Compress
O compress é outro programa para compressão de arquivos do Linux, sua utilização é
muito simples e se assemelha a do gzip. Ao comprimir um arquivo usando o compress será
gerado uma arquivo com extensão .Z no lugar do original: compress < nome do arquivo > . Para
descoprimí –lo é: uncompress < nome do arquivo >.
26
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/mane$compress trabalho [ Enter ]
/home/mane$uncompress trabalho.Z [ Enter ]
Nos dois exemplos acima o arquivo “trabalho” é comprimido e em seguida
descomprimido.
4.22.3 Visualizando o conteúdo de arquivos comprimidos
Caso seja necessário conhecer o conteúdo de um arquivo comprimido utiliza-se o
comando zcat: zcat < nome do arquivo >.
/home/mane$zcat arquivo.gz [ Enter ]
Nesse exemplo será visualizado o conteúdo do arquivo “arquivo.gz” sem ser preciso
descompactá –lo . O zcat funciona tanto para arquivos com extensão .gz ( comprimidos com
gzip ) quanto para arquivos .Z (comprimidos com compress).
4.23 Selecionando campos de uma tabela
O comando cut permite selecionar colunas de uma tabela, a princípio essa explicação
não parece ser muito esclarecedora mas vamos a exemplo para clarear : Suponha um arquivo
como o /etc/passwd que tem seus campos separados por dois pontos.
/home/mane$cat /etc/passwd [ Enter ]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mane:x:501:501:Francisco da Silva:/home/mane:/bin/bash
A utilização do comando cut é a seguinte: cut –d < elemento separador > -f < coluna
desejada >. Imagine o arquivo /etc/passwd como uma tabela com (neste exemplo) nove linhas
e sete colunas, cada colunas separada por dois pontos:
root
x
0
0
root
root
/bin/bash
Pois bem, usando o comando cut podemos selecionar qualquer campo desse arquivo:
/home/mane$ cat /etc/passwd | cut -d : -f 5 [ Enter ]
root
bin
daemon
adm
sync
shutdown
halt
news
Francisco da Silva
27
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Aqui, listado o conteúdo do arquivo /etc/passwd, selecionou –se o quinto campo do
arquivo ( -f 5 ) usando como elemento separador os dois pontos ( -d : ).
4.24 Empacotando arquivos
Existe uma ferramenta no Linux que possibilita empacotar vários arquivos em um único
arquivo, ou até toda uma estrutura de diretórios inteira em um arquivo, essa ferramenta também
é muito utilizada para fazer cópias de segurança ( backup ) de arquivos importantes. Essa é
uma prática recomendável para qualquer usuário de computadores, infelizmente não são
muitos que seguem esse conselho e vez o outra acabam perdendo arquivos de seu interesse.
Para isso usamos o comando tar, o tar cria um arquivo com extensão .tar que pode conter
vários arquivos, um diretório e até uma estrutura de diretórios inteira.
A maneira mais usada do tar é : tar –cvf < arquivo.tar > < arquivo1 > < arquivo2 > ... <
arquivoN > . Vamos explicar as opções –cvf significam : c – criar novo arquivo tar ; v – modo
verboso ( apresentar mensagens na tela se for necessário ) ; f - ( file ) indica o arquivo .
Vamos exemplificar :
/home/mane$ tar –cvf backup.tar arquivo1 arquivo2 arquivo3 [Enter ]
Nesse exemplo seria criado um arquivo chamado “backup.tar” que conteria os três
seguintes arquivos : “arquivo1”, “arquivo2” e “arquivo3”.
Para restaurar as cópias desses arquivos com o comando tar a sintaxe é a seguinte :
tar –xvf < arquivo.tar > . Seu significado é : x – extrair os arquivos que estão no arquivo de
extensão .tar ; v – modo verbose ; f – ( file ) indica o arquivo. Vamos a outro exemplo:
/home/mane$ tar –xvf backup.tar [ Enter ]
Aqui foram extraídos os arquivos que estavam contidos em “backup.tar” , esses
arquivos são extraídos no diretório corrente.
Como já foi falado, é possível criar um arquivo que contenha um diretório, ou uma
estrutura de diretórios, em seu interior. O exemplo abaixo demonstra isso.
/home/mane$ tar –cvf mane.tar /home/mane [ Enter ]
O arquivo “mane.tar” contém todo o diretório home do usuário mane, isso inclui todos
os arquivos em seu interior e subdiretórios também.
É muito comum no mundo Linux a utilização de arquivos .tar comprimidos com o gzip
ou compress, gerando arquivos .tar.gz ( gzip ) ou .tar.Z ( compress ). O modo de extrair esses
arquivos é primeiro descomprimir o arquivo ( gunzip , gzip –d ou umcompress ) e depois usar o
tar para extrair os arquivos ou diretórios.
Para conhecer o conteúdo de um arquivo .tar utilize a opção –tvf , como no exemplo a
seguir :
/home/mane$tar –tvf mane.tar [ Enter ]
4.25 Filtrando informações
Uma ferramenta muito importante no Linux é o comando grep, ele é um filtro que pode
facilitar bastante nossas tarefas na hora de procurar informações. Quando o comando grep
encontra a informação desejada ele a imprime na tela, ou pode –se redirecionar sua saída
também. Vamos aos exemplos:
28
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/mane$ls -la /etc | grep passwd
-rw-r--r-- 1 root root
1308 Jul 29 19:33 passwd
-rw-r--r-- 1 root root
556 Jan 11 1999 passwd.OLD
Neste exemplo após o conteúdo do diretório /etc ser listado será feita uma procura pela
palavra “passwd” , a saída então é apresentada no vídeo.
/home/mane$grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:
No segundo exemplo é feita uma procura no arquivo /etc/passwd pela palavra “root” e
as linhas onde essa palavra é encontrada são apresentadas.
4.26 Máscaras para comandos
4.26.1 Criando máscaras
Um método de personalizar os comandos usados no Linux é usar o comando alias. O
alias cria um “apelido” para um comando qualquer, desse modo podemos executar esse
comando usando seu “apelido”. O modo de usar esse comando é : alias < novo comando > =
“<comando real>” , vamos a um exemplo para ficar mais claro :
/home/mane$ alias apaga="clear" [ Enter ]
Deste modo se digitarmos “apaga” seguido de [ Enter ] o efeito será o mesmo de usar
o comando clear, que limpa a tela.
/home/mane$ alias lista="ls” [ Enter ]
Neste segundo exemplo a palavra “lista” substitui o comando ls .
4.26.2 Retirando máscaras
Para retirar algumas máscara que foi criada para um comando usa – se o comando
unalias seguido do nome da máscara.
/home/mane$ unalias lista [ Enter ]
Isso iria retirar a máscara “lista”.
4.27 Descobrindo que usuário você é:
O comando who imprime na saída padrão ( a tela ) informações sobre que usuário é
você, de onde logou e a data.
/home/mane$ who [ Enter ]
mane ttyp0 Aug 11 16:33 (200.137.220.3) [ Enter ]
Aqui o usuário que está trabalhando é mane, ele logou remotamente nessa máquina e
sua máquina de origem é 200.137.220.3 na data de 11 de agosto às 16:33 horas.
29
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
4.28 As variáveis de sistema
O ambiente Linux possui algumas variáveis necessárias para seu funcionamento, e
estas podem ser visualizadas com o comando env ou set. Sua sintaxe é: env ou set
/home/mane$ env
PWD=/home/mane
HOSTNAME=morpheu.ufgnet1.ufg.br
MOZILLA_HOME=/usr/lib/netscape
ignoreeof=10
LS_OPTIONS= --color=auto -F -b -T 0
QTDIR=/usr/lib/qt
OPENWINHOME=/usr/openwin
MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11R6/man:/usr/openwin/man:
/usr/lib/qt/doc/man
LESSOPEN=|lesspipe.sh %s
PS1=\u@\h:\w\$
PS2=>
LESS=-M
USER=mane
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:
or=40;31;01:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:
*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.bz2=01;31:*
.rpm=01;31:*.deb=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.jpg=01;35:*.gif=01;35:*.
bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.mpg=01;37:
*.avi=01;37:*.mov=01;37:
CPLUS_INCLUDE_PATH=/usr/lib/qt/include:
MACHTYPE=i386-slackware-linux-gnu
LC_ALL=POSIX
MAIL=/var/spool/mail/mane
SSH2_CLIENT=192.168.0.100 1046 192.168.0.102 22
INPUTRC=/etc/inputrc
LOGNAME=mane
SHLVL=1
MINICOM=-c on
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux-gnu
HOME=/home/mane
TERM=vt100
PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/games:.
_=/usr/bin/env
OLDPWD=/home
4.28.1 Manipulando as variáveis de sistema
Pode-se alterar os valores das variáves de sistema usando o comando export, e sua
sua sintaxe é: export <VARIÁVEL>=<$VARIÁVEL>:<complemento>
/home/mane$ export PATH=$PATH:/opt/bin <ENTER>
No exemplo àcima foi adicionado à variável PATH o diretório /opt/bin. Isto torna-se
necessário quando instala-se vários executáveis em caminhos que não estão no PATH,
exportando a variável como mostrado acima os executáveis instalados no diretório /opt/bin
poderão ser chamados no prompt de comando estando em qualquer diretório.
30
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
5. Permissões de Arquivos
5.1 Entendendo as Permissões
Por ser um sistema multiusuário o Linux possui um conjunto de regras para assegurar
a integridade e individualidade dos arquivos e diretórios. Essas regras são chamadas "
Permissões de Arquivos ".
Usando o comando ls -la listamos todos os arquivos do diretório e suas permissões :
/home/mane$ ls -la [ Enter ]
total 9
drwxr-xr-x 6 mane users
drwxr-xr-x 21 root
root
-rw------1 mane users
-rw-r--r-1 mane users
-rw-r--r-1 mane users
-rw-r--r-1 mane users
-rwxr-xr-x 1 mane users
drwxr-xr-x 2 mane users
-rw-rw-r-1 mane users
1024 mai 19 10:08 .
1024 abr 29 13:40 ..
7406 mai 15 12:57 .bash_history
24 mar 23 06:05 .bash_logout
220 mar 23 06:05 .bash_profile
124 mar 23 06:05 .bashrc
505 mai 19 10:04 PAR-IMPAR
1024 mai 19 10:05 fotos
505 mai 19 10:05 trabalhos
Esse ‚ o conteúdo do diretório, vamos agora entender o que essas informações querem
dizer. Na primeira coluna temos as permissões do arquivo/diretório ; na segunda, temos o
número de links ( caminhos/atalhos ) que levam ao arquivo/diretório ; na terceira coluna temos
o nome do dono do arquivo e o grupo a que ele pertence ; na quarta está o tamanho do
arquivo e na quinta e sexta colunas, respectivamente , estão as datas de criação e o nome do
arquivo. Vamos pegar como exemplo o arquivo PAR-IMPAR para entender melhor :
-rwx------ Como PAR-IMPAR ‚ um arquivo e não um diretório o primeiro campo
traz um traço ( " - " ) . Se fosse um diretório, nesta posição encontraria-se um " d " ,
e se esse arquivo fosse um link este campo estaria preenchido com a letra " l " .
Os três caracteres que se seguem tem os seguintes significados:
r = permissão de leitura (read) ;
w = permissão de escrita (write) ;
x = permissão de execução (execution).
Esse primeiro conjunto de permissões diz respeito ao dono do arquivo, ou seja, o dono
desse arquivo tem direitos de ler o arquivo ( " r " ) , escrever no arquivo ( " w " ) e
executa-lo ( " x " ).
-rwxr-x--- Os próximos três caracteres dizem respeito as permissões dadas ao grupo a
que o dono do arquivo pertence. Neste caso os usuários que pertencem ao mesmo grupo do
dono do arquivo tem Permissões de leitura e execução sobre o arquivo, mas não tem
permissão de escrita no arquivo (o campo relativo a escrita não esta preenchido, tendo apenas
um traço).
-rwxr-xr-x Em seguida estão as Permissões dadas a todos os usuários do sistema.
Essas Permissões, neste caso, são de leitura e execução ( " r " e " x " ) do arquivo. Aos outros
usuários do sistema também não foi dado a permissão de execução do arquivo PAR-IMPAR.
Resumindo então, temos:
31
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
-rwxr-xr-x
Permissões dos outros usuários
Permissões do grupo
Permissões do dono do arquivo
Permissão de leitura:
Permissão de escrita:
Permissão de execução:
r (read)
w (write)
x (execution)
No caso de um diretório, a permissão de leitura significa poder listar seu conteúdo, a
permissão de escrita consiste em escrever nesse diretório e a permissão de execução é o
acesso ao diretório.
As permissões de arquivos restringem o acesso ao arquivo/diretório apenas as pessoas
que o dono achar que é seguro, isso garante a individualidade e segurança dos arquivos
pessoais e de importância para o sistema.
5.2 Alterando Permissões
As permissões dos arquivos não são características estáticas. Elas podem ser
alteradas pelo dono do arquivo. O comando usado para isso e o chmod, e sua sintaxe e a
seguinte:
chmod { a,u,g,o } { + , - } { r,w,x } < nome do arquivo >. Os significados dessas opções são:
a
u
g
o
_ Significa " todos " ( all );
_ significa " usuário ", o dono do arquivo ( users );
_ significa " grupo " ( group );
_ significa " outros " ( others );
+ _ Atribui Permissões;
- _ retira Permissões;
r _ permissão de leitura ( read );
w _ permissão de escrita ( write );
x _ permissão de execução ( execution ).
Abaixo seguem alguns exemplos sobre mudança de permissões, após realizar
qualquer uma dessas operações utilize o comando ls -la para visualizar as permissões
alteradas.
/home/mane$chmod g-x PAR-IMPAR [ Enter ]
Essa linha de comando retiraria a permissão de execução do arquivo PAR-IMPAR de
todas as pessoas do mesmo grupo do dono desse arquivo.
/home/mane$chmod a+x PAR-IMPAR [ Enter ]
Essa linha atribuiria permissão para execução a todas as pessoas do sistema sobre o
arquivo PAR-IMPAR.
/home/mane$chmod g-x fotos [ Enter ]
Aqui é retirado dos usuários do grupo o direito de entrar no diretório " fotos ". Outro
modo de alterar as Permissões de um arquivo/diretório e' usar números para representar as
32
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Permissões ( r,w e x ). Os números correspondentes são :
1 => x ( execução )
2 => w ( escrita )
4 => r ( leitura )
A sintaxe e' : chmod ABC < nome do arquivo > , onde A e' a soma das Permissões
dadas ao dono do arquivo ; B e' a soma das Permissões dadas ao grupo e C e a soma das
Permissões
do resto dos usuários. Vamos exemplificar :
/home/mane$chmod 755 PAR-IMPAR [ Enter ]
Isso daria permissões de execução, escrita e leitura ao dono ( A=1+2+4 A=7 ); ao grupo
seriam dadas Permissões de execução e leitura ( B=1+4 B=5 ) e aos outros usuários seriam
dadas Permissões de execução e leitura ( C=1+4 C=5 ).
/home/mane$chmod 700 PAR-IMPAR [ Enter ]
Isso daria permissão de execução, escrita e leitura ao dono do arquivo e retiraria todas
as Permissões do grupo e dos outros usuários.
5.3 Máscara de criação de arquivos
Quando criamos qualquer arquivo no Linux, lhe é dado um conjunto de Permissões que
chamamos de "máscara ". A mascara define quais Permissões os arquivos terão ao serem
criados. Podemos alterar a máscara de criação de arquivos com o comando umask, sua
sintaxe é a seguinte: umask ABC, onde A,B e C são os direitos que queremos negar. Uma
conta nos dá o valor da máscara que desejamos:
666 - ABC= direitos que os arquivos terão ao serem criados
Suponhamos que seja usada uma mascara 022 :
/home/mane$ umask 022 [ Enter ]
Deste modo todos os arquivos criados teriam Permissões : 644 ( 666 - 022 = 644 ), ou
seja, o dono teria permissões de escrita e leitura ; o grupo teria permissões de leitura e o resto
dos usuários teriam permissões de leitura também.
Se o comando umask for usado sem nenhum parâmetro ele retornara a mascara que
estão em uso.
/home/mane$ umask [ Enter ]
022
33
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
6. Alguns Arquivos Importantes do Linux
Grande parte das informaçôes do Linux estâo no sistema em forma de arquivos de
texto, desta forma, torna-se importante conhecer esses arquivos para, também, conhecer
melhor o sistema em que estamos trabalhando.
6.1 Arquivos do diretório /etc
/etc/passwd
Esse arquivo contém informações sobre todos os usuários do sistema. Tem seus
campos separados por dois pontos e seu formato geral é:
mane:x:212:103:Francisco da Silva:/home/mane:/bin/bash
Cada campo tem um significado, o primeiro campo é o nome com que o sistema
reconhece o usuário (login); o segundo é a senha do usuário (Essa senha não aparece por
que está no arquivo /etc/shadow, criptografada por motivos de segurança ) ; o terceiro o é o
ID do usuário (Número de identificação do usuário no sistema) ; o quarto é o número do grupo
a que o usário pertence; o quinto é o nome do usuário; o sexto é o diretório home do usuário
(Aquele em que ele está quando loga no sistema) e o sexto campo é o Shell que esse usuário
vai usar. Uma forma simples de impedir que um usuário acesse o sistema é colocar no sexto
campo algo como /dev/null ou /bin/true, o que ocorre é que quando o usuário tentar logar no
sistema ele não terá um interpretador de comandos válido, assim, não poderá efetuar logon no
sistema.
Este é um arquivo de extrema importância para o sistema e por isso só o Root (superusuário) tem permissão de alterá-lo.
/etc/shadow
Esse arquivo só existirá se o pacote “shadow“ for instalado, aqui ficam as senhas dos
usuários do sistema. Como já falado, essas senhas ficam critografadas por motivos de
segurança e não podem ser visualizadas por nimguém. Nem mesmo o Root consegue ver as
senhas do sistema.
/etc/group
Nesse arquivo fica uma listagem de todos os grupos que o sistema possui. Ele também
está dividido em campos separados por dois pontos, seu formato é :
users:!:104:mane,maria,roberto
Cada campo tem um significado: o primeiro campo é o nome do grupo ; o segundo é a
senha para o grupo (Essa senha é opcional) ; o terceiro é o número do grupo e o quarto campo
guarda os nomes dos usuários que pertencem a esse grupo.
/etc/issue
A mensagem mostrada ao usuário antes que ele faça o login no sistema ica
armazenada nesse arquivo.
/etc/issue.net
Caso o usuário tente logar remotamente na máquina e mensagem que ele verá será a
que está armazenada nesse arquivo.
/etc/motd
Nesse arquivo fica a mensagem que será exibida ao usuário após o seu login.
Abreviação de "Mensagem do dia " (Message of the day).
/etc/fstab
34
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Nesse arquivo encontram-se informações sobre os dispositivos montados no sistemas
(discos rígidos, disquetes, cdrom, nfs e etc). Ele é lido pelo sistema, ou por programs, para
montar esses dispositivos e sua alteração só pode ser feita pelo Root. Esse arquivo também é
composto por linhas e cada uma delas representa um dispositivo a ser montado, seu formato
geral é:
/dev/hda1
/
ext2
defaults
11
No primeiro campo está o nome do dispositivo a ser montado; o segundo é o ponto de
montagem do dispositivo; o terceiro campo descreve o sistema de arquivo do dispositivo, os
sistemas de arquivos suportados atualmente pelo Linux são : minix, ext, ext2, xiafs ,msdos,
hpfs, iso9660, nfs e swap; o quarto campo informa as opções de montagem para os sistema de
arquivos; o quinto informa ao comando dump quais os sistemas de arquivos devem ser
copiados e o sexto campo informa ao programa fsck a ordem em que os sistemas de arquivos
devem ser checados na inicialização do sistema.
/etc/mtab
Enquanto o fstab contém informações sobre os sistemas de arquivos que podem ser
montados, o mtab contém informações sobre os sistemas já montados. Esse arquivo é
dinâmico, sendo alterado toda vez que um novo dispositivo é montado no sistema.
/etc/inittab
Esse arquivo é de extrema importância para o sistema por que nele estão listados os
pocessos que serão disparados na sua inicialização. Seu formato é: identificação:níveis de
execução:ação:processo .
O primeiro campo (identificação) deve ser composto de um a quatro carateres e
representa uma entrada no inittab; o segundo é relativo ao nível de execução (run-level) em que
o processo deverá ser inializado; o terceiro é a ação que será executada e o quarto campo é o
processo a ser executado.
Níveis de execução (run-levels):
0 - Desligar (poweroff) ;
1 - Modo monousuário;
2 - Multiusuário, sem NFS;
3 - Multiusuário completo;
4 - Multi-usuário completo com interface gráfica (X11);
5 - Não utilizado, mas, configurado como runlevel 3
6 - Reinicializar (reboot).
Neste arquivo também pode ser configurado quantos consoles virtuais o linux
inicializará, pode-se fazer isto comentando as seguintes linhas do arquivo:
/etc$ vi inittab [ Enter ]
…
# Note: for 'agetty' you use linespeed, line.
# for 'getty_ps' you use line, linespeed and also use 'gettydefs'
c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
#c3:1235:respawn:/sbin/agetty 38400 tty3 linux
#c4:1235:respawn:/sbin/agetty 38400 tty4 linux
#c5:1235:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux
No exemplo àcima serão abertas 2 consoles virtuais.
/etc/lilo.conf
Esse é o arquivo de configuraçâo do LILO, que é um gerenciador de carga de sistema
operacional, o executável desse arquivo se encontra no diretório /sbin.
/etc/smb.conf
35
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
O serviço conhecido como Samba é configurado por esse arquivo. O Samba é um
conjuno de programas que implementa o protocolo chamado Server Message Block, ou SMB,
em ambientes UNIX/Linux. Esse protocolo também é conhecido como Common Internet File
System (CIFS), LanManager ou NetBios. Há uma enorme gama de aplicações com este
serviço.
/etc/shells
Estão listados aqui os caminhos para os shells válidos para os usuários.
/etc/securetty
Os terminais listados neste arquivo são os considerados seguros para o Root logar no
sistema. Se todas as linhas com tty forem comentadas o root não poderá efetuar logon na
console, assim, para executar comandos como root é necessário usar o comando “ su “. Se a
linha console for comentada o root somente efeturá logon via o comando su.
/etc$ vi securetty [ Enter ]
console
#tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#ttyS0
#ttyS1
#ttyS2
#ttyS3
#ttyp0
#ttyp1
#ttyp2
#ttyp3
/etc/resolv.conf
Está listado aqui o domínio da máquina e também a relação dos servidores de nomes
(DNS)
/etc/inetd.conf
Este arquivo é lido pelo processo inetd na sua inicialização. Neste arquivo pode ser
configurado os serviços que serão inicializados pelo inetd.
/etc/ld.so.conf
Neste arquivo estão listados os diretórios que contêm bibliotecas (os diretórios /.../lib ).
/etc/services
Neste arquivo estão listadas as portas (TCP e UDP) que é aberta por cada serviço do
linux.
6.2 Arquivos do diretório /proc
36
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/proc/interrupts
O diretório /proc é um diretorio virtual, ou seja, está montado na memória RAM e nâo
no HD da máquina. Nesse diretório estâo muitas informaçôes sobre a situaçâo atual do seu
sistema, o arquivo interrupts contém uma listagem das interrupçôes utilizadas pelo sistema no
momento.
/proc/partitions
Todas as partições montadas no sistema estâo listadas nesse arquivo.
/proc/ioports
Contém uma relaçâo dos intervalos de I/O (Entrada e saída) do sistema e dos
dispositivos que as utilizam.
/proc/meminfo
Contém informações sobre memória utilizada pelo Linux.
/proc/cpuinfo
Contém especificações sobre a CPU da máquina.
/proc/modules
Contém uma relação dos módulos carregados pelo sistema.
/proc/mounts
Contém uma relação dos dispositivos montados.
/proc/swap
Contém informações sobre a partição swap
6.3 Arquivos de Inicialização (Scripts de inicialização)
Arquivos de inicialização, ou scripts de inicialização, são lidos e executados pelo SHELL
no momento que o usuário loga no sistema para configurar algumas de suas características
como o sua variável PATH, exibir mensagens do programa de e-mail, executar comandos,
configurar aliases e etc. Esses arquivos variam conforme o SHELL que se está usando.
Existem também arquivos que são executados em outras instancias do SHELL, não em
momentos do login mas quando se usa um programa como o editor de textos vi ou no próprio
momento de execução dos arquivos de inicialização.
Se o SHELL usado for o bash os arquivos lidos serão:
/etc/profile
$HOME/.bash_profile
$HOME/.profile
Esse arquivo é setado pelo administrador e executado no login de
todos os usuários.
Executado no login do usuário.
Usado se o .bash_profile não estiver presente.
Se o SHELL utilizado for o tcsh os arquivos serão :
/etc/csh.login
$HOME/.tcshrc
$HOME/.login
$HOME/.cshrc
Executado no momento do login por todos os usuários
Executado no momento do login.
Executado após o .tcshrc
Executado se .tcshrc não estiver presente
6.4 Arquivos de Inicialização dos processos (SLACKWARE)
Os arquivos que inicalizam os processos no sistema Linux Slackware estão localizados
no diretório /etc/rc.d, entre eles os mais importantes são:
37
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/etc/rc.d/rc.0
Script lido quando computador entra em runlevel 0 (halt) ou runlevel 6 (reboot), este
arquivo é um link para o arquivo rc.6.
/etc/rc.d/rc.4
Script lido quando o computador entra em runlevel 4 (XDM). Neste runlevel o
computador já se inicializa em modo gráfico.
/etc/rc.d/rc.K
Script lido quando o computador entra em runlevel 1 (MONOUSUÁRIO).
/etc/rc.d/rc.M
Script lido quando o computador entra em modo multi-usuário, runlevels 1 a 6. A
maioria dos processos inicializados pelo Linux estão listados neste arquivo.
/etc/rc.d/rc.S
Script de inicialização do sistema.
/etc/rc.d/rc.font
Script que define a fonte a ser usada pelo Linux no shell.
/etc/rc.d/rc.inet1
Script que define as configurações necessárias para ambiente de rede para o Linux,
como:
 Se o computador tem IP fixo ou se este é atribuído via DHCP;
 Se o computador tiver IP fixo é neste arquivo que se determina o endereço do
GATEWAY padrão, o endereço da rede (NETWORK), o endereço de BROADCAST e o
endereço da máscara da rede (NETMASK)
/etc/rc.d/rc.inet2
Script que inicializa a maioria dos serviços de rede, como:
 Serviço de “Packet forwarding” necessário quando o computador é GATEWAY
(primeiro computador de uma rede);
 Serviços de NFS necessário para o compartilhamento de arquivos entre compudares
com sistema UNIX;
 e todos os outros daemons1 como INETD, SSHD, SMBD, NMBD, HTTPD, ROUTED,
NAMED, LPD, etc.
/etc/rc.d/rc.local
Último script lido quando o computador inicializa.
/etc/rc.d/rc.modules
Script que lista os módulos que serão carregados na inicialização do Linux
daemon = processo “pai”
38
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
7. Editor de Textos vi
O vi é o editor de textos em formato ASCII que está presente em qualquer plataforma
UNIX ou distribuição do Linux. Torna-se imprescindível que um usuário de Linux o conheça e
consiga trabalhar com ele. É certo que as primeiras impressões que se tem desse editor não
são as melhores (Graças a uma cultura já adquirida sobre essas ferramentas) mas com um
pouco de tempo suas principais funções são assimiladas . Para chamar o vi digite: vi < nome do
arquivo > [Enter]
/home/mane# vi teste [enter]
Se existir um arquivo chamado “teste“ o vi irá abrí-lo, e será mostrado algo deste modo
:
Arquivo de teste do vi.
~
~
~
"teste" 2 lines, 25 characters
Se esse arquivo não existir ele será criado:
~
~
~
"teste" [New File]
O vi trabalha com três modos : modo de comando , modo de inserção e modo de última
linha. Ao entrar no vi vc está no modo de comando, o editor está esperando que você use um
dos seguintes comandos para começar a escrever no arquivo :
Comando
A
A
I
I
O
O
Função
Adiciona o texto após o cursor
Adiciona o texto no final da linha
Insere texto antes da posição do cursor
Insere texto no início da linha
Cria nova linha depois do cursor
Cria nova linha acima do cursor
Para começar a digitar algo no vi tecle um desses comandos acima ( a,A,i,I,o,O ). Para
sair do modo de inserção de texto pressiona-se [ Esc ]. No modo de comando utiliza-se os
comandos ( alguns estão listados abaixo ) para editar o texto e no modo de última linha pode-se
salvar o texto, fechá-lo sem salvar, procurar ou substituir palavras e etc. O esquema de
utilização é o seguinte :
[ Esc ]
Última linha
A,a,I,i,O,o
Comando
:?/
Inserção
[ Esc ]
39
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Exemplificando:
/home/mane#vi teste [Enter]
~
~
~
~
"teste" [New file]
(cria um arquivo chamado “teste”)
1- Para começar a escrever tecle : A,a,I,i,O,o ;
2- Digite um texto ;
3- Tecle [ Esc ] para ir para o modo de comando ;
[ i ] Testando o editor de textos vi [ Esc ]
~
~
~
-- Insert -4- Digite “:“ para ir para o modo de última linha;
5- Escreva “w“ (write) para salvar o texto.
Testando o editor de textos vi
~
~
~
:w [ Enter ou Return ]
Funções para apagar texto/linha
Comando
X
Q
X
dd
Dw
:A,Bd
Função
Apaga caractere na posição do cursor
Sai do vi
Apaga caractere a esquerda do cursor
Apaga linha
Apaga palavra a direita do cursor
Apaga intervalo entre a linha de número A até a de número B
Funções para mudar palavra/trocar caractere/desfazer comando/trocar linha
Comando
Cw
r
R
U
U
Função
Muda a palavra em que o cursor está
Troca o caractere da posição atual do cursor
Troca a linha do cursor
Desfaz o último comando
Desfaz todas as alterações feitas na linha corrente
Funções para copiar e colar
Comando
Yy
Y
p
P
:A,B co C
:A,B m 8
Função
Copia a linha em que o cursor se encontra
Copia a linha em que o cursor se encontra
Cola a linha copiada abaixo da linha corrente
Cola a linha copiada acima da linha corrente
Copia as linhas entre A e B e cola após a linha C
Move as linhas entre A e B e cola após a linha C
40
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Funções para procura e substituição de palavras
Comando
/palavra
?palavra
N
Função
Procura por ““palavra” no texto ( à frente )
Procura por “palavra” no texto ( atrás )
Encontra a próxima ocorrência de “palavra” na direção de
procura
N
Encontra uma ocorrência prévia de “palavra”
:s/velha/nova/g
Substitui “velha” por “nova” na linha corrente
:%s/velha/nova/g Substitui “velha” por “nova” no documento todo
41
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
8. Administrando contas de usuários
8.1 Contas de usuários
Em um sistema operacional multiusuário como o Linux é necessário que o responsável
pelo sistema (root ou super usuário) mantenha a organização, inclusão e exclusão de usuários
do sistema. Cada pessoa que tem acesso à máquina deve possuir uma conta com um nome de
usuário (login ou user name) e senha (password) únicos.
Uma conta também é composta pelos arquivos que pertencem a esse usuário e seu
diretório home (se ele possuir um . Tudo isso deve ser protegido para que apenas esse usuário
tenha acesso a esses arquivos.
Uma observação: mesmo que você seja o único usuário do computador é
extremamente recomendável que esse sistema possua no mínimo dois usuários, sendo um o
root e outro um usuário normal. Isso se dá pelo fato de que o root possui permissão para
realizar tudo no sistema e um erro cometido, como apagar arquivos importantes, não tem volta.
Por isso mantenha sempre duas contas e realize seus trabalhos com a conta de usuário
normal, e apenas quando for necessário entre no sistema como root.
8.2 Tornando-se Root
É possível tonar-se root usando o comando su , deste modo não é necessario sair do
sistema e logar-se de novo. Se o su for usado seguido de um traço ( - ) então o usuário tornase-a root e serão carregados os arquivos de inicialização do root. Após digitado o comando o
sistema irá pedir a senha de root.
/home/mane$ su – [ Enter ]
Password:
/root#
Percebe-se que após tornar-se root o símbolo ao final do prompt muda para uma
cancela ( # ) , esse é um meio de identificar se você está realizando algo como super usuário.
O comando su também é usado para um usuário tornar-se outro usuário, para fazer
isso a sintaxe é : su < nome do usuário > . Se você for o root e quiser tornar-se outro usuário
não lhe será a senha desse usuário, caso contrário sempre lhe será pedida a senha do usuário
que você deseja tornar-se.
/home/mane$ su maria [ Enter ]
Password:
/home/maria$
Aqui o usuário mane usa o comando su para tornar-se maria, como ele não é o root
então a senha de maria lhe é pedida.
42
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
8.3 Onde todos os usuários estão
Para conseguir uma listagem completa dos usuários que possuem conta no Linux deve
–se olhar o arquivo /etc/passwd. Esse arquivo possui o seguinte formato :
Login:x:501:100:Nome do usuário:/home/login:/bin/bash
Cada campo desse arquivo é separado por dois pontos, sendo seus significados :
Campo
Primeiro
Segundo
Terceiro
Quarto
Quinto
Sexto
Sétimo
Significado
Login do usuário ou nome com que o sistema o identifica
Senha criptografada representada por um “x”
Número de identificação do usuário ( UID )
Número do grupo a que o usuário pertence ( GID )
Nome completo ou outra descrição do usuário
Diretório home do usuário
Shell que o usuário irá usar
No segundo campo temos a senha criptografada do usuário, essa senha é
representada por um “x” e na verdade é guardada no arquivo /etc/shadow em sistemas que
possuem o pacote shadow instalado. O terceiro campo trás o número do grupo a que o usuário
pertence, os grupos de usuários que seu sistema possui podem ser conferidos no arquivo
/etc/group. O sexto campo indica o diretório que pertence ao usuário (home), para usuários
comuns os diretorios se encontram geralmente abaixo do diretório /home.
8.4 Adicionado usuários ao sistema
O useradd adiciona usuários ao sistema. Podemos utilizar algumas opções desse
comando para passar – lhe todas as informações necessárias para a criação da nova conta.
Sua sintaxe é : useradd -u <UID> -g < GID> -d <diretório home> -c <”comentário"> -m -s
<shel> <login>
/root# useradd -u 1001 –g 100 -d /home/teste -c "Conta de teste" -m –s
/bin/bash teste [ Enter ]
Acima foi criada uma conta para um usuário com login “teste” e seu diretório home é
/home/teste. A opção –m serve para criar o diretório home caso ele não exista. Para criar a
senha do usuário use o comando passwd seguido de seu login : passwd < login >
/root# passwd teste [ Enter ]
O Linux Slackware possui um script que facilita a adição de usuários, é o adduser, que
vai fazendo perguntas ao administrador sobre o usuário à medida que vai o adicionando ao
sistema. Sua sintaxe é: adduser
43
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
8.5 Removendo usuários do sistema
Para remover usuários do sistema é usado o comando userdel. Sua sintaxe é simples,
sendo : userdel < nome do usuário > . Se for usado a opção –r será apagado seu diretório
home, todos os arquivos e subdiretórios.
/root# userdel –r teste [ Enter ]
Neste exemplo o usuário “teste” foi removido, ou seja, sua entrada do arquivo
/etc/passwd foi apagada, e seu diretório home (/home/teste) foi apagado com tudo que havia
em seu interior. Esse usuário não possui mais uma conta nesse sistema, portanto não pode
acessá – lo mais.
8.6 Adicionando grupos
Recomenda –se organizar os usuários do sistema por grupos. O comando groupadd
adiciona um novo grupo ao sistema, sua sintaxe é : groupadd –g < GID > < nome do grupo >
/root# groupadd –g 100 alunos [ Enter ]
Aqui é criado um grupo chamado “alunos” e seu GID é 100.
8.7 Removendo grupos
Para remover grupos é usado o comando groupdel seguido do nome do grupo que se
deseja remover : groupdel < nome do grupo >
/root# groupdel alunos [ Enter ]
Removemos neste exemplo o grupo “alunos”.
44
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
9. Processos e Tarefas
Uma das características de um sistema operacional estável é o controle que ele possui
sobre os tarefas que estão sendo realizados. Essas tarefas recebem o nome de processos. O
Linux possui algumas ferramentas para que o usuário controle esses processos. É possível,
dentre outras coisas, listar e finalizar os processos que estão sendo executados pela máquina.
Processos servidores ou “deamos” são processos responsáveis por determinadas
tarefas no sistema, por exemplo: o processo que gerencia os pedidos de páginas em um
servidor de WWW (Internet) é chamado de httpd , ou http deamon.
9.1 Listando os processos da máquina
Para listar os processos que o sistema está executando o comando é: ps . Se for usada
a opção aux serão listados todos os processos da máquina.
/home/mane$ps [ Enter ]
PID TTY STAT TIME COMMAND
535 p0 S 0:00 su 536 p0 S 0:00 –bash
602 p0 R 0:00 ps
No exemplo acima são listados os processos do usuário mane.
/home/mane$ ps aux [ Enter ]
USER
PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
Bin
213 0.0
2.2
760 332 ?
S
Oct 27 0:00 portmap
Nobody 286 0.0
3.9
1688 584 ?
S
Oct 27 0:00 ssl_gcache 99 /etc/ht
Root
1
0.0
2.6
764 384 ?
S
Oct 27 0:02 init [3]
Root
2
0.0
0.0
0 0
?
SW
Oct 27 0:00 (kflushd)
Root
3
0.0
0.0
0 0
?
SW < Oct 27 0:00 (kswapd)
Root
4
0.0
0.0
0 0
?
SW
Oct 27 0:00 (md_thread)
Root
5
0.0
0.0
0 0
?
SW Oct 27 0:00 (md_thread)
Root
37
0.0
2.3
736 348 ?
S
Oct 27 0:00 /sbin/kerneld
Root
224 0.0
2.9
800 432 ?
S
Oct 27 0:00 syslogd
Root
233 0.0
3.7
940 548 ?
S
Oct 27 0:00 klogd
Root
244 0.0
2.5
772 380 ?
S
Oct 27 0:00 inetd
Root
248 0.0
3.8
1216 564 ?
S
Oct 27 0:10 /usr/sbin/sshd
Root
328 0.0
2.0
724 296 1
S
Oct 27 0:00 /sbin/mingetty tty1
Root
329 0.0
2.0
724 296 2
S Oct 27 0:00 /sbin/mingetty tty2
Neste exemplo são listados todos os processos que a máquina está executando (opção
aux). A primeira coluna (USER) identifica o dono do processo, ou seja, o usuário que inicializou
a tarefa que está rodando. A segunda coluna é o número de identificação do processo (PID), é
através desse número que o sistema operacional reconhece e gerencia as tarefas que ele
precisa realizar. A última coluna é o nome do processo. Para mais informação sobre o comando
ps consulte a página de manual do comando ps.
9.2 Finalizando processos
É possível finalizar qualquer processo no Linux desde que este não seja essencial para
o funcionamento do sistema ou que você seja o dono do processo. Se o usuário em questão for
o Root ele tem permissão para finalizar processos de qualquer usuário.
O comando para finalizar processos é o kill e sua sintaxe é: kill <PID >
Se for usada a opção –9 antes do PID o comando kill forçará a finalização do processo
e se for usado a opção –1 o processo será reinicializado.
/home/mane$ kill –9 342 [ Enter ]
45
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
No exemplo acima é mandado um sinal de finalização para o processo de PID 342.
/home/mane$ kill –1 345 [ Enter ]
Neste segundo exemplo o comando kill fará com que o processo de PID 345 seja
finalizado e inicializado logo em seguida (reinicializado).
É possível finalizar processos pelo nome e não pelo PID, para isso usa-se o comando
killall seguido do nome do processo ( esse nome pode ser conseguido usando o comando ps )
/home/mane$ killall rpc.mountd [ Enter ]
9.3 Processos em background e foreground
Processos podem estar rodando em dois modos : background ( segundo plano ) ou
foreground ( primeiro plano ) . Por exemplo, ao fazer uma pesquisa em seu sistema com o
comando find o seu cursor irá sumir até que a pesquisa seja inteiramente realizada ( ou seja,
seu processo está sendo executado em foreground ), mas se esse processo for realizado em
background você poderá realizar outras tarefas. Para que um processo seja inicializado em
background é preciso que coloquemos o sinal & ( e comercial ) no final da sua linha de
comando.
/home/mane$ find / -name netscape* > arquivos-netscape [ Enter ]
Neste exemplo o comando find será executado e fará uma procura por qualquer
arquivo que comece com a palavra “ netscape “, o conteúdo da pesquisa será redirecionado
para o arquivo chamado “ arquivos-netscape “. Mas tudo isso estará sendo executado em
foreground ( primeiro plano ) e você não terá seu cursor de volta até que essa tarefa acabe.
Para interromper a tarefa digita-se <CONTROL> + < z > . Para fazer com que ela
continue sendo executada em background digite “bg” no prompt e tecle [ Enter ] . Desse modo
a tarefa irá recomeçar de onde parou mas estará rodando em background.
/home/mane$ find / -name netscape > arquivos-netscape [ Enter ]
find: /etc/httpd/conf/ssl.key: Permission denied
find: /tmp/linux-router/2.9.3/kernel/kernel-36pre2/modules/misc: Permission denied
<CONTROL> + < z >
[1]+ Stopped
find / -name netscape >arquivos-netscape
/home/mane$ bg [ Enter ]
Para que uma tarefa rode em background ,sem rodar em foreground primeiro, digite ao
final da linha de comando o caracter & ( e comercial ).
/home/mane$ find / -name netscape > arquivos-netscape & [ Enter ]
Deste modo você terá o prompt de volta e poderá realizar outras tarefas enquanto o
sistema faz sua procura.
9.4 Tarefas
46
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
9.4.1 Crontab
É possível agendar tarefas no Linux para que o sistema as realize em uma hora
marcada ou com certa frequência. Para agendar uma tarefa é preciso que o deamon (processo
servidor) crond esteja rodando na máquina em questão. Verifique se esse servidor está
rodando com o comando ps aux, se esse servidor não estiver sendo executado digite: crond [
Enter ].
Para isso é preciso criar um arquivo de texto para o agendamento de tarefas com o
seguinte formato :
Minuto
00-59
Hora
0-23
Dia do Mês
1-31
Mês
1-12
Tarefa
0-7
Por exemplo, um arquivo que tivesse as entradas abaixo fariam com que o
arquivo/programa chamado teste e localizado no diretório /root fosse executado a cada trina
minutos, todas as horas, todos os dias do mês de janeiro de segunda a sexta-feiras.
00,30 0-23 * 1 1,2,3,4,5 /root/teste
Após criar um arquivo de agendamento como o do exempolo acima é prciso rodar o
comando crontab nele.Supodo que esse arquivo chame root.cronab :
/root# crontab root.crontab [ Enter ]
Na distribuição Red Hat já existem alguns recursos prontos para agendamento de
tarefas. Coloque os arquivos a serem executados nos seguintes diretórios :
Diretório
/etc/cron.hourly
/etc/cron.daily
/etc/cron/weekly
/etc/cron.mounthly
Período de execução
De hora em hora
Diariamente
Semanalmente
Mensalmente
Para listar as tarefas agendadas digite crontab –l . Para retirar uma tarefa digite crontab
–r.
9.4.2 At
Outro modo de agendar tarefas no Linux é usando o comando at , mas para isso é
preciso que o servidor atd esteja sendo executada, para isso digite : atd [ Enter ]
/root# at 1731 [ Enter ]
at> /root/teste
at> <CONTROL> + <D> <EOT>
warning: commands will be executed using /bin/sh
job 6 at 1999-11-08 17:31
No exemplo acima o arquivo /root/teste será executado às 17:31 h . Mas será
executado apenas uma vez, no dia em que você entrar com a tarefa. Para agendar tarefas que
precisam se repetir use o crontab.
47
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
10.
Criando disco de instalação no DOS/Windows
Para criar um disco de instalação da distribuição Slackware usa-se o programa
rawrite.exe presente no CD de instalação. Para isso é preciso dois disquetes formatados.
C:\> d:
D:\> cd \bootdsks.144
D:\dosutils> rawrite
Enter disk image source file name: bare.i (esta imagem pode ser utilizada na maioria dos
computadores com dispositivos IDE, para dipositivos SCSI ler o arquivo README para ver
qual imagem se adapta à sua placa controladora)
Enter target diskette drive: a:
Please insert a formatted diskette into drive A: and
press –ENTER-- : [Enter]
Terminada a fase de criação do disco de boot (BOOTDISK) é necessário criar um disco de root
(ROOTDISK) que contém os programas necessários para instalação. Para criar um rootdisk
siga os seguinte passos:
C:\> d:
D:\> cd \Rootdsks
D:\dosutils> rawrite
Enter disk image source file name: Color.gz (esta imagem contém os programas necessários
para instalação; a imagem Network.dsk é necessária quando deseja fazer instalação via NFS
pois esta imagem contém os módulos de placas de rede e programas necessários para
configurar o ambiente de rede )
Enter target diskette drive: a:
Please insert a formatted diskette into drive A: and
press –ENTER-- : [Enter]
O programa primeiramente irá pedir o nome do arquivo que contém a imagem que será
copiada no disquete e em seguida para qual drive essa imagem deve ser copiada, nesse caso o
driver de 3 ½ (a:)
48
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
11.
Particionando e Formatando Discos Rígidos
11.1 Particionando Discos Rígidos
Particionar um disco rígido consiste em dividir esse disco de modo que podemos usar
cada parte para um fim diferente. Para instalar o Linux é preciso que existam duas partições no
seu disco rígido, uma chamada de “Linux native” e outra chamada de “Linux swap”. O programa
que será visto aqui será o fdisk do próprio Linux, seus comandos são simples e fáceis de
aprender.
As ações mais utilizadas são: criar, deletar e alterar características de partições.
A seguir algumas relações entre os drives no Linux:
/dev/hda
/dev/hdb
/dev/das
/dev/sdb
Primeiro drive IDE
Segundo drive IDE
Primeiro drive SCSI
Segundo drive SCSI
Os principais comandos do fdisk são :
Criar partição
Apagar partição
Alterar característica da partição
Sair sem salvar
Sair e salvar alterações
Ajuda
n
d
t
q
w
m
Após inicializar o programa ele irá mostrar a seguinte mensagem:
Command (m for help):
Para mostrar as partições que existem usa – se o comando p.
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 *
1
1 203 61693 6 DOS 16-bit >=32M
Neste exemplo temos uma partição DOS no IDE primário. Para criar outra partição
usamos o comando n:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Após digitar n o programa irá perguntar se você quer criar uma partição primária ou
extendida. Nesse caso iremos criar uma partição primária e escolhemos p (última linha).
Partition number (1-4): 2
First cylinder (204-683): 204
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M
49
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Os próximos dados são: Partition number ( número da partição a ser criada ) como já
havia uma partição no nosso exemplo vamos criar uma segunda partição ; First cylinder (
primeiro cilindro ) cilindro onde começará a segunda partição e Last cylinder ( último cilindro )
ou onde essa partição acaba, seu tamanho. Pode – se digitar o último cilindro ou tamanho em
bytes ( +size ) , em Kbytes ( +sizeM ) ou em Mbytes ( +sizeM ) .
Vamos criar outra partição. Desta vez de número 3 e com 10 Mbytes de tamanho.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (474-683): 474
Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
Olhando as partições que criamos:
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 *
1
1 203 61693 6 DOS 16-bit >=32M
/dev/hda2
204 204 473 82080 83 Linux native
/dev/hda3
474 474 507 10336 83 Linux native
Para instalar o Linux precisamos de uma partição de swap e para isso utilizaremos o
partiçõa de número três. Para transformar essa partiçõa de “Linux native” para “Linux swap” use
o comando t ,
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
O Hex code para partição “Linux swap” é 82. Se quiser saber outros tipos de partições
que o fdisk pode criar use o comando L .
Para sair e salvar as alterações feitas digite w e para sair sem salvar as alterações
digite q .
11.2 Formatando Discos Rígidos
No Linux Slackware para formatar uma partição com sistema de arquivos EXT2 o
comando utilizado é o mke2fs. Sua sintaxe é a seguinte: mke2fs <device>
Para formatar uma partição tipo FAT 32 pode ser utilizado o comando mkdosfs, e sua
sintaxe é: mkdosfs –F 32
50
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
12.
Um pouco sobre o LILO
O LILO (LInux LOader) é um programa que gerencia a inicialização do sistema. Esse
programa é geralmente instalado no MBR (Master Boot Record - que corresponde aos
primeiros 512 bytes do disco rígido) e possibilita a coexistência de vários sistemas operacionais
na máquina.
O arquivo que configura o funcionamento do LILO é o lilo.conf, nas linhas que se
seguem será dada uma visão básica desse arquivo e quais as coisas você pode alterar sem
problemas, pois esse material não irá se aprofundar no assunto.
Abaixo um exemplo do arquivo lilo.conf com comentários :
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
password=minhasenha
restricted
prompt
timeout=50
default=linux
image=/boot/vmlinuz
label=linux
root=/dev/hda2
read-only
other=/dev/hda1
label=Win
table=/dev/hda
# Senha para o LILO
# Restringe o acesso
# Mostrar o prompt do LILO
# Tempo de espera do prompt de 5 seg
# O linux é o sistema padrão
# Arquivo com a imagem de kernel
# Nome do linux no menu do LILO
# Partição da imagem do kernel
# Partição com o Windows
# Nome do Windows no menu de escolha do LILO
# Localização do Windows
Alguns campos do lilo.conf:
restricted – Restringe o acesso ao LILO, pedindo senha ao se tentar passar parâmetros para a
inicialização do kernel. A opção restricted exige a linha password.
prompt - Mostra o prompt do LILO e e permite escolher por qual sistema operacional você
deseja inicializar a máquina. Pode -se pressionar a tecla Tab para saber por quais sistemas é
possível inicializar sua máquina.
timeout - Aqui é colocado o tempo de espera antes de inicializar pelo sistema default (
explicado mais a frente ), esse tempo é dado em decissegundo, ou seja, se você deseja que o
LILO espere 5 segundos coloque 50, se você deseja 10 segundos coloque 100.
default - Aqui é definido qual o sistema será carregado se não for feita nenhuma escolha
quando for apresentado o prompt do LILO. Neste exemplo poderiam ser usadas duas opções :
linux ou Win. Mais explicações de como isso funciona logo abaixo mas, se você quiser mudar a
inicialização padrão apenas troque o valor desse campo
image - Possui o caminho do arquivo com a imagem do Linux.
label - Esse campo guarda o nome que irá aparecer quando você teclar Tab ao ser
apresentado o prompt do LILO. É importante notar que nesse exemplo a inicialização padrão (
campo " default " , visto acima ) será pelo Linux, caso se mude o valor desse campo para " Win
" a máquina dará o boot pela partição definida por esse label.
root - Essa é a partição onde estará a imagem do Kernel. Por exemplo, se seu Linux estiver na
partição hda2 então o valor desse campo será : /dev/hda2, se estiver na partição hda3 então
será : /de/hd3.
51
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Caso você tenha Linux e Windows na mesma máquina então os próximos
campos serão:
other - Localização da partição onde está instalado o Windows.
label - Guarda o nome que será apresentado pelo LILO para escolha do sistema a ser
inicializado, nesse caso o valor é Win.
table - Onde o Windows se encontra.
Ao fazer qualquer mudança no arquivo /etc/lilo.conf é necessário rodar o lilo para que
as alterações sejam gravadas , para isso digite :
# /sbin/lilo [ Enter ]
52
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
13.
Pacotes de instalação pré-compilados
13.1 Pacotes RPM
O RPM, Gerenciador de Pacotes Red Hat é uma maneira fácil e rápida de instalar
softwares no Linux. Com ese sistema é possível instalar,desinstalar, pesquisar quais pacotes
você tem instalados na sua máquina e atualizar programas.
13.1.1 Instalando pacotes RPM
Os pacotes RPM tem um formato padrão, que informa o nome do pacote, a versão,
release e plataforma ( processador ) para que o pacote foi compilado. Por exemplo :
netscape-common-4.7-8cl.i386.rpm . Esse pacote tem o nome de "netscape-common" , sua
versão é 4.7 , release 8 e foi compilado para plataforma i386, ou seja, PC´s.
Para instalar pacotes RPM a sintaxe~é a seguinte : rpm -ivh <nome do pacote>. Para
instalar o pacote que nós usamos como exemplo a síntaxe seria :
# rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ]
Após feito isso aparecerá um conjunto de caracteres " # " , indicando o progresso da
instalação. Caso o pacote já tenha sido instalado aparecerá a seguinte mensagem :
# rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ]
netscape-commom package netscape-common-4.7-8 is already installed
error : rpm -ivh netscape-common-4.7-8cl.i386.rpm cannot be installed
13.1.2 Conflitos com pacotes já instalados e Depêndencias entre outros pacotes
Podem ocorrer também conflitos entre arquivos já instalados no seu sistema e aqueles
que pertencem ao pacote que você está tentando instalar. Se isso ocorrer a mensagem
apresentada será semelhante a essa :
# rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ]
netscape-commom /usr/bin/netscape-commom conflicts with file from
netscape-teste.4.7-8
error : netscape-common-4.7-8cl.i386.rpm cannot be installed
Caso você queira forçar a instalação use a opção -replacefiles .
Outra situação que pode ocorrer é que, ao tentar instalar um pacote este precise que
outros já tenham sido instalados, para resolver este problema pode -se instalar os pacotes
requeridos ou forçar a instalação com o parâmetro -nodeps , mas deste modo seu pacote não
funcionará.
13.1.3 Quais pacotes estão instalados?
Uma das vantagens do RPM é que você possui meios de descobrir quais são os
pacotes que estão instalados na sua máquina. É possível também descobrir a qual pacote
pertence determinado arquivo. Algumas opções :
Mostra todos os pacotes instalados :
# rpm –qa [ Enter ]
Procura a qual pacote pertence o arquivo test.conf :
# rpm –qf teste.conf [ Enter ]
53
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
13.1.4 Desinstalando os pacotes
Para desinstalar os pacotes RPM a sintaxe é a seguinte : rpm -e < nome do pacote >.
Use apenas o nome do pacote, e não o nome total do arquivo. No exemplo acima foi usado o
arquivo netscape-common-4.7-8cl.i386.rpm , mas o nome do pacote é apenas netscapecommon. Exemplificando :
# rpm -e netscape-common [ Enter ]
Pode ocorrer que, ao tentar desinstalar um pacote esse seja necessário para o
funcionamento de um segundo, então será apresentada uma mensagem de erro. Se quiser
realmente desinstalar o pacote use a opção -nodeps .
13.1.5 Atualizando pacotes
Para instalar uma versão mais atual de um pacote já instalado no seu sistema use a
opção -Uvh seguido do nome do pacote.
# rpm –Uvh netscape-common-4.7-9cl.i386.rpm [ Enter ]
O próprio sistema RPM fará cópias de segurança dos arquivos de configuração que
seu software costumava usar, geralmente renomeando -os para algo como:
arquivo.conf.rpmsave .
13.2 Pacotes TGZ
Estes pacotes são pacotes já compilados que podem ser instalados utilizando a
ferramenta PKGTOOL, ou os comandos como abaixo listados. A sintaxe do comando pkgtool é:
pkgtool
13.2.1 Instalando pacotes TGZ
Para instalar um pacote TGZ a sintaxe é a seguinte: installpkg <pacote.tgz>
# installpkg Netscape.tgz [ Enter ]
13.2.2 Removendo pacotes TGZ
Para remover um pacote TGZ a sintaxe é a seguinte: removepkg <pacote.tgz>
# removepkg Netscape.tgz [ Enter ]
13.2.3 Atualizando pacotes TGZ
Para atualizar um pacote TGZ a sintaxe é a seguinte: upgradepkg <pacote.tgz>
# upgradepkg netscape-v600pr1.x86-unknown-linux2.2.tgz [ Enter ]
13.2.3 Quais pacotes estão instalados
A relação de todos os pacotes instalados está listada no diretório /var/log/packages
Para converter pacotes .TGZ (Slackware), .RPM (Red Hat), DEB (Debian) e outros pode ser
utilizado uma ferramenta chamada ALIEN que pode ser encontrado em www.freshmeat.net.
54
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
14.
Redes TCP/IP no Linux
O TCP/IP (Transfer Control Protocol/Internet Protocol) é um conjunto de protocolos que
pode ser usado para troca de dados em uma LAN (rede local) ou em uma WAN (rede de longa
distância). Esse conjunto de protocolos possui várias funções como roteamento, transferência
de arquivos, emulação de terminais e correio eletrônico.
O TCP/IP é o protocolo utilizado na Internet e está presente na maioria dos sistemas
operacionais inclusive no Linux.
14.1 Um pouco sobre o Hardware
Para que uma máquina consiga se comunicar em uma rede é necessário que seu
hardware esteja habilitado para isso. No nosso caso estamos falando de interfaces de rede
(placas de rede). A habilitação dessa interface de rede consiste em fazer com que o Linux a
reconheça e carregue o programa que irá se comunicar com ela. Para isso precisamos
conhecer algumas características da interface (placa) que iremos usar : modelo da placa, para
cada interface temos um programa de controle ; irq , número do pedido de interrupção e
intervalo de i/o (entrada e saída).
Código de Rede do Kernel
Interface de Rede
Programa de Controle
Eth0
Programa de
Controle
NE2000
Hardware
Placa
NE2000
A figura acima ilustra a comunicação entre o Kernel do Linux e o Hardware. (Essa
figura é uma reprodução parcial da figura 3.1 do Guia do Administrador de Redes Linux de Olaf
Kirch).
Programas de controle de dispositivos (tanto de placas de rede, de som e outros) são
conhecidos como módulos. O Linux possui uma característica chamada “carga de drivers sob
demanda”, ou seja, é possível carregar um programa de controle quando necessário e
descarrega – lo da memória também quando necessário. Isso pode ser feito sem a
necessidade de reinicializar o sistema. Para essa tarefa existe um servidor chamado Kerneld
que gerência a carga/descarga dos módulos quando necessário.
Para carregar módulos utilizamos o comando modprobe, que faz a carga do módulo
pedido e de outros caso seja necessário. Sua sintaxe é: modprobre < módulo > < opções >
/home/mane# modprobe ne.o irq=5 io=0x320 [ Enter ]
55
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Neste exemplo carregamos o módulo do programa de controle da placa de rede
NE2000 (ne.o) com valor da interrupção igual a cinco (5) e endereço de i/o (entrada e saída)
igual a 0x320 (este endereço está em notação hexadecimal). No diretório /lib/modules/<versão
do Kernel> encontram-se os módulos do Linux.
Para listar quais módulos estão carregados na memória use o comando lsmod seguido
de [ Enter ]. O arquivo lido na hora do boot para a carga dos módulos que o sistema é o
/etc/rc.d/rc.modules
Abaixo estão alguns dos modelos de placas de rede que o Linux suporta:
3Com EtherLink
3c503 , 3c503/16 , 3c507 , 3c509 , 3c501
Novell Eagle
NE1000, NE2000 e uma grande variedade de clones desses modelos.
NE1500 e NE2100 também
Western Digital/SMC
WD8003 , WD8013 (SMC Elite and SMC Elite Plus) e SMC Elite 16 Ultra.
Hewlett Packard
HP 27252, HP 27247B, e HP J2405A.
D-Link
DE-600, DE-100, DE-200, e DE-220-T. E um kit de correção para DE-650-T, que é um
cartão PCMCIA .
DEC DE200 (32K/64K), DE202, DE100, e DEPCA rev E.
Allied Teliesis
AT1500 and AT1700
PCI
ne2k-pci utilizado em várias placas pci
rtl8139 utilzado em várias placas com chipset Realtek
Está lista foi baseada no Guia do Administrador de Redes Linux, escrito por Olaf Kirch
(versão beta 0.21) e traduzido pela Conectiva Informática. Para uma lista completa e atualizada
do hardware de rede suportado pelo Linux consulte o Ethernet How-To.
14.2 Identificação de máquinas em uma rede TCP/IP
Para que uma máquina seja reconhecida (passe a fazer parte) em uma rede TCP/IP é
preciso que seja atribuído a sua interface de rede um número chamado “número IP” ou
“endereço IP”. Esse endereço consiste em um número decimal divido em quatro campos por
pontos. Ex: 192.168.1.10 _ 200.137.223.195 _ 200.222.135.45
14.3 Atribuindo um número IP e estabelecendo rotas de uma interface de rede
14.3.1 Atribuindo um número IP a uma interface de rede
Para atribuir um número IP a uma interface de rede usamos o programa ifconfig. Sua
sintaxe é a seguinte : ifconfig <interface> <endereço ip> broadcast <endereço de broadcast>
netmask <máscara da sub-rede>
/home/mane#
255.255.255.0
ifconfig
[ Enter ]
eth0
192.168.1.10
broadcast
192.168.1.255
netmask
Neste exemplo foi atribuída a interface eth0 o endereço IP 192.168.1.10
Vários outros parâmetros podem ser usados com o ifconfig, alguns exemplos: máscara
de sub-rede, habilitação do modo promíscuo da interface, endereço de broadcast, etc.
56
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Se o comando ifconfig for usado sem nenhum parâmetro ele mostrará informações
sobre as interfaces de rede ativadas.
/home/mane# ifconfig
eth0
Encapsulamento do Link: Ethernet Endereço de HW 00:80:C8:14:B6:E7
end. Inet:192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
Pacotes RX:3936 erros:0 descartados:0 sobreposições:0 quadros:0
Pacotes TX:10084 erros:0 descartados:0 sobreposições:0 portadora:0
Colisões:0
lo
Encapsulamento do Link: Loopback Local
end. inet:127.0.0.1 Bcast:127.255.255.255 Masc:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Métrica:1
Pacotes RX:9193 erros:0 descartados:0 sobreposições:0 quadros:0
Pacotes TX:9193 erros:0 descartados:0 sobreposições:0 portadora:0
Colisões:0
Neste exemplo o programa ifconfig mostra informações sobre as interfaces de rede que
estão instaladas na máquina.
14.3.2 Estabelecendo rotas de uma interface de rede
Depois de configurar o endereço IP para a interface é necessário configurar qual o
endereço da rede e do gateway, para isso utilizaremos o comando route. Sua sintaxe é a
seguinte: route <add ou del> <opções>
/root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
No exemplo à cima estamos estabelecendo que a interface eth0 faz parte da rede
162.168.0.1 e da sub-rede 255.255.255.0
/root# add default gw 192.168.0.1 netmask 0.0.0.0 metric 1
Aqui configuramos qual é o gateway (default gw) da rede.
Para configurar uma interface de rede no momento do boot no Linux Slackware temos
o arquivo /etc/rc.d/rc.inet1 que é lido todo vez que o sistema é inicializado. É necessário apenas
acrescentar as informações desejadas.
/etc/rc.d# vi rc.inet1
#! /bin/sh
57
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
#
# rc.inet1
#
# Version:
#
This shell script boots up the base INET system.
@(#)/etc/rc.d/rc.inet1 1.01
05/27/93
HOSTNAME=`cat /etc/HOSTNAME`
# Attach the loopback device.
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
# IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the
# eth0 interface. If you're only using loopback or SLIP, don't include the
# rest of the lines in this file.
# Edit for your setup.
IPADDR="192.268.0.100"
NETMASK="255.255.255.0"
NETWORK="192.168.0.0"
BROADCAST="192.168.0.255"
GATEWAY="192.168.0.1"
# REPLACE with YOUR IP address!
# REPLACE with YOUR netmask!
# REPLACE with YOUR network address!
# REPLACE with YOUR broadcast address, if you
# have one. If not, leave blank and edit below.
# REPLACE with YOUR gateway address!
Sobre os termos acima: IPADDR é o endereço do dispositivo (192.168.0.100);
NETMASK é a máscara de sub-rede; NETWORK é o endereço da rede; BROADCAST é um
endereço que representa todas as máquinas da rede, ou seja, se for mandado uma mensagem
para esse endereço todas as máquinas que pertencem a ela irão receber essa mensagem;
GATEWAY é o primeiro computador de uma rede.
Para mais detalhes sobre o comando ifconfig e route consulte sua página de manual.
14.4 Configurando uma interface ppp (Point to Point Protocol)
Para usuários de modem a interface utilizada é a ppp0 e para configurar uma conexão
dial-up é necessário o pacote ppp instalado. Este pacote possui algumas ferramentas para
configuração e inicialização do daemon pppd. Destas ferramentas a que será utilizada para
configurar a conexão dial-up é o pppsetup.











A primeira janela é uma janela de apresentação, apenas tecle Enter
Na segunda janela é solicitado o telefone do seu ISP (Internet Service Provider Provedor de Acesso à Internet) e deve ser informado com a seguinte sintaxe:
atdt<numero do telefone> (para discagem de pulso) e atdp<numero do telefone> (para
discagem de tom);
Na terceira janela é perguntado em qual porta está instalado seu modem (/dev/ttyS0
(COM1 no DOS), /dev/ttyS1(COM2 no DOS) e assim por diante);
Na quarta janela é perguntado qual a "baud rate" do seu modem que é a taxa máxima
de transferêcia de dados, nos modems de 28.600 kBps, 33.600 kBps e 56 kBps
geralmente esta "baud rate" é 115kBps;
Na quinta janela é perguntado se seu ISP liga de volta para você para solicitar
username e senha, nos ISPs atuais não é utilizado este recurso
Na sexta janela pergunta se deseja passar alguma string especial para o modem;
Na sétima janela é questionado qual o domíni do seu servidor.
Por exemplo: ig.com.br
Na oitava janela é solicitado o endereço IP do servidor de nomes (DNS) do seu ISP, se
não souber pode deixar este campo em branco;
Na nona janela é questionado qual sistema de autenticação que seu ISP utiiza,
geralmente, nos servidores atuais, o sitema de autenticação é o PAP;
Na décima janela é solicitado o seu nome de usuário (username);
Na décima primeira janela é solicitado a sua senha (password);
58
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001

Por fim lhe é mostrado como ficaram seus arquivos de configuração. Estes arquivos
estão localizados no diretório /etc/ppp e por default somente o root tem acesso à esse
diretório
Feita as configurações, para conectar deve-se utilizar o comando ppp-go ou ppp-on.
14.5 Configurando o nome da máquina
Para configurar o nome da máquina devemos acrescentar ( ou modificar ) uma linha ao
arquivo /etc/hosts com os seguintes campos : < número IP > < nome da máquina >
Formato do arquivo /etc/hosts:
/home/mane# more /etc/hosts
127.0.0.1
localhost localhost.localdomain
192.168.0.100
host.dominio host
A primeira linha é relativa à interface de loopback, essa interface não existe na
realidade mas é usada pelo Kernel para algumas funções. A segunda linha é a que nos
interessa, nela temos o endereço IP e o nome que daremos à nossa máquina.
14.6 O comando ping
O comando ping envia pacotes do tipo ICMP (Internet Control Message Protocol) para
uma máquina. Esse comando pode ser usado para testar se determinada máquina está ou não
conectada à rede, caso esteja, a máquina em questão irá responder ao comando ping (A
menos que esteja devidamente configurada para não fazer isso, mas não vamos nos
aprofundar nisso.) Sua sintaxe é : ping <nome da máquina> ou <endereço IP da máquina>
/home/mane$ ping www.slackware.com
PING bob.slackware.com (204.216.27.12): 56 data bytes
64 bytes from 204.216.27.12: icmp_seq=2 ttl=243 time=343.8 ms
64 bytes from 204.216.27.12: icmp_seq=3 ttl=243 time=429.3 ms
64 bytes from 204.216.27.12: icmp_seq=4 ttl=243 time=368.7 ms
--- bob.slackware.com ping statistics --6 packets transmitted, 3 packets received, 50% packet loss
round-trip min/avg/max = 343.8/380.6/429.3 ms
Neste exemplo o comando ping envia dados para a máquina www.slackware.com e ela
responde, pode-se observar alguns dados como tempo de resposta, tamanho do pacote
quantidade de pacotes enviados e recebidos, etc. Para finalizar o ping tecle <control> + <c> .
14.7 O comando netstat
O comando netstat é de grande utilidade e através dele podemos conseguir várias
informações como: tabela de roteamento , estatísticas sobre interfaces de rede, conexões e
etc. Algumas de suas principais funções são :
Opções
-i
-r
-ta
Ação
Mostra estatísticas sobre as interfaces de rede
Mostra tabela de roteamento
Lista os servidores que estão sendo executados
/home/mane# netstat –i
Tabela de Interfaces do Kernel
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR
eth0 1500 0
4098
0
0
0
lo
3584 0
9229
0
0
0
TX-OK TX-ERR TX-DRP TX-OVR Flg
10287
0
0
0
BRU
9229
0
0
0
BLRU
No exemplo acima são mostradas algumas estatísticas sobre as interfaces eth0 e lo
(loopback).
59
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
/home/mane# netstat –r
Tabela de Roteamento IP do Kernel
Destino
Roteador
MáscaraGen.
192.168.1.254 *
255.255.255.0
127.0.0.0
*
255.0.0.0
default
192.168.1.254 0.0.0.0
Opções MSS Janela
U
1500 0
U
3584 0
UG
1500 0
irtt Iface
0 eth0
0 lo
0 eth0
Neste segundo exemplo o comando netstat mostra a tabela de roteamento utilizado
pelo Kernel do Linux. Essa tabela indica para o Kernel quais decisões tomar quando a máquina
recebe pacotes pela rede, se esse pacotes pertencem a rede e para onde encaminha-los caso
não pertençam.
/home/mane$ netstat -ta
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address
Foreign Address
tcp
0
248 morpheu.ufgnet1.ufg:ssh xxx.ufgnet1.ufg.br:1205
tcp
0
0 *:734
*:*
tcp
0
0 *:2049
*:*
tcp
0
0 *:111
*:*
tcp
0
0 *:ssh
*:*
State
ESTABLISHED
LISTEN
LISTEN
LISTEN
LISTEN
Neste exemplo o comando netstat mostra os servidores e as conexões de rede
presentes no sistema. Para mais informações sobre o netstat consulte sua página de manual.
14.8 O servidor de Internet Inetd (Internet Deamon)
De maneira simplificada, um servidor é um programa que fica rodando e quando lhe é
solicitado uma tarefa ele cria um processo filho para tomar conta dessa tarefa e retorna a ficar
escutando os pedidos de serviços. O servidor que gerencia os serviços de Internet no Linux é o
inetd e seus arquivos de configuração são: /etc/inetd.conf e /etc/services .
14.9 Acesso remoto seguro com Secure Shell (SSH)
O SSHD é um daemon do Linux que utiliza o protocolo TCP/IP para acessar uma
máquina remotamente que consiste em executar tarefas nessa máquina via rede, ou seja,
conectar-se a essa máquina através de uma rede e operá-la como se você estivesse
localmente. O SSH assegura a comunicação entre os dois hosts encriptografando toda a
comunicação. Pode ser encontrado para download em www.ssh.org. O programa utilizado é o
ssh, e sua sintaxe é: ssh -l <usuário> -c <modo de criptografia que deseja usar> <número IP ou
nome da máquina>
/home/mane$ ssh -l ufgnet -c blowfish morpheu
Host key not found from database.
Key fingerprint:
60
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
xogak-senon-tesok-hupep-romap-vypil-morib-pydog-bolit-tusyz-paxax
You can get a public key's fingerprint by running
% ssh-keygen -F publickey.pub
on the keyfile.
Are you sure you want to continue connecting (yes/no)? yes
Host key saved to /root/.ssh2/hostkeys/key_22_morpheu.pub
host key for morpheu, accepted by root Wed Jan 24 2001 16:34:14
ufgnet's password:
Authentication successful.
Last login: Thu Jan 18 2001 17:49:44 from
UFGNet
No mail.
morpheu:~$
14.10 Transferência de arquivos (FTP)
Outra tarefa possível de ser realizada em uma rede é a transferência de arquivos,
usando o protocolo FTP (File Transfer Protocol). Esse serviço permite que você se conecte a
uma máquina e pegue ou coloque arquivos nesse máquina remota. O modo de realizar isso é
usar o programa ftp seguido do nome ou número da máquina a se conectar.
/home/mane# ftp ftp
Connected to michelle.ufgnet1.ufg.br.
220 ProFTPD 1.2.0 Server (Michelle FTP Server) [michelle.ufgnet1.ufg.br]
Name (ftp:ufgnet): anonymous
331 Anonymous login ok, send your complete e-mail address as password.
Password:
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Aqui para conectar –se o processo é semelhante ao Telnet, é preciso Ter um login e
senha nessa máquina. É comum em servidores públicos de ftp existirem contas anonymous em
que qualquer um tem permissão de conexão, sendo a senha o e-mail de quem deseja realizar a
conexão. Abaixo alguns comandos do ftp :
Comando
cd
ls
get
mget
put
mput
hash
prompt
ascii
bin
pas
Ação
Muda de diretório
Lista o conteúdo do diretório corrente
Transfere um arquivo da máquina remota para a máquina local
Transfere vários arquivos de uma vez ( deve -se usar o * )
Transfere um arquivo da máquina local para a remota
Transfere vários arquivos da máquina local para a máquina remota
Imprime na tela um # a cada byte transferido
Desliga o modo interativo
Seta o modo de transferência para ascii (arquivos de texto puro)
Seta o modo de transferência para arquivos binários
Seta modo passivo, às vezes, necessário quando o cliente está atráz de
um firewall
61
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
15.
O Ambiente Gráfico
O Sistema X Window é um ambiente gráfico grande e poderoso (alguns podem dizer
que excessivamente grande e complexo) para sistemas UNIX. O código do Sistema X Window
original foi desenvolvido no MIT, e vendedores comerciais desde então tem usado o X como
modelo industrial para as plataformas UNIX. Virtualmente toda a estação de trabalho UNIX no
mundo roda algum derivado do sistema X Window.
Um porte de livre distribuição da versão 11 do Sistema X Window do MIT, versão 6
(X11R6) para sistemas 80386/80486/Pentium foi desenvolvida por uma equipe de
programadores originariamente liderada por David Wexelblat. A versão conhecida como
XFree86 está disponível para o System V/386, 386BSD e outras implementações x86 UNIX,
inclusive Linux. Ele inclui todos os binários necessários, arquivos de suporte, bibliotecas e
ferramentas.
15.1 Reconhecimento do Hardware:
Para instalar o Sistema X Window é necessário conhecer algumas informações sobre o
hardware de vídeo, características como:
 Marca do CHIPSET e quantidade de memória da placa de vídeo;
 Taxa de “refresh” do seu monitor, que são, as freqüências horizontal e vertical do
monitor (essa informação é obtida no manual do monitor);
Você também pode determinar o chipset de placa de vídeo executando o programa
SuperProbe, incluído com a distribuição XFree86, e sua sintaxe é: SuperProbe . Este programa
tentará identificar a sua placa de vídeo à partir da relação de placas que a sua distribuição do
Xfree86 suporta.
15.2 Instalando o XFree86:
O servidor Xfree86 é composto por vários pacotes, que devem ser instalados de acordo
com sua necessidade, a descrição dos pacotes da versão 3.3 está relacionada abaixo:
PACOTE
X338514.tgz
X33AGX.tgz
X33I128.tgz
X33Mach32.tgz
X33Mach64.tgz
X33Mach8.tgz
X33Mono.tgz
X33P9K.tgz
X33S3.tgz
X33S3V.tgz
Descrição do Pacote
Servidor para placas baseadas em 8514.
Servidor para placas baseadas em AGX.
Servidor para a Number Nine Imagine 128.
Servidor para placas baseadas em Mach32.
Servidor para placas baseadas em Mach64.
Servidor para placas baseadas em Mach8.
Servidor para modos de vídeo monocromático.
Servidor para placas baseadas em P9000.
Servidor para placas baseadas em S3.
Servidor para S3 ViRGE e ViRGE/VX (consideradas beta).
X33SVGA.tgz
Servidor para placas baseadas em Super VGA.
X33W32.tgz
Servidor para placas baseadas em ET4000/W32.
Se você não souber qual utilizar, obtenha o servidor VGA16, X33VGA16.tgz.
Pode-se transferi-lo de qualquer maneira, porque ele será necessário para
executar o utilitário de autoconfiguração no próximo passo.
Os seguintes arquivos são necessários:
preinst.sh
Programa de pré-instalação.
postinst.sh
X33bin.tgz
X33cfg.tgz
X33doc.tgz
X33man.tgz
X33fnts.tgz
X33lib.tgz
Programa de pós-instalação
Restante dos binários X11R6
Arquivos config para xdm, xinit e fs.
Documentação.
Páginas do manual.
75dpi, diversos e fontes PEX.
Biblioteca X compartilhada e arquivos de suporte.
62
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
X33set.tgz
X33VG16.tgz
Utilitário XF86Setup.
Servidor para placas baseadas VGA/EGA.
Os seguintes arquivos são opcionais:
X33f100.tgz
X33fcyr.tgz
X33fnon.tgz
X33fscl.tgz
X33fsrv.tgz
X33prog.tgz
X33lkit.tgz
X33lk98.tgz
X33nest.tgz
X33prt.tgz
X33vfb.tgz
X33ps.tgz
X33html.tgz
Fontes 100dpi.
Fontes Cyrillic.
Outras fontes (Chinesa, Japonesa, Coreana, Hebraica).
Fontes escalonáveis (Speedo e Tipo1).
Servidor de Fonte e arquivos de configuração
Arquivos de cabeçalho X, arquivos config e libs para compilação.
Servidor X LinkKit.
PC98 X Servidor LinkKit.
Servidor X aninhado.
Servidor X print.
Servidor Framebuffer.
Versão PostScript da documentação.
Versão HTML da documentação.
É necessário certificar-se que /usr/X11R6/bin está no PATH (variável que indica a rota padrão
de pesquisa de executáveis). Para isso é necessário adicionar este diretório à variável. É
necessário certificar-se também que /usr/X11R6/lib pode ser localizado pelo ld.so, o qual
estabelece ligações em tempo de execução. Para fazer isto, acrescente a linha /usr/X11R6/lib
ao arquivo /etc/ld.so.conf e execute /sbin/ldconfig, como superusuário.
15.3 Ferramentas para configurar o XFree86:
Para configurar o XFree86 pode-se utilizar duas ferramentas de configuração, e os
comandos são os seguites: XF86Setup e xf86config.
O XF86Setup é uma ferramenta de configuração gráfica (necessita o servidor XVGA16)
possui uma interface amigável que configura o mouse, o teclado, o monitor e a placa de vídeo.
A outra ferramenta disponível é executada à partir do comando xf86config, esta
ferramenta é executada no prompt de comando e com ela é possível configurar também o
mouse, teclado, monitor e placa de vídeo.
Estas duas ferramentas editarão o arquivo /etc/XF86Config, que é o arquivo de
configuração do servidor X.
15.4 Inicializando o Ambiente Gráfico:
Depois de configurar o Xfree86 é necessário agora escolher um Gerenciador de
Janelas que se adapte às suas necessidades. Um dos critérios de escolha para o Gerenciador
de Janelas que irá utilizar é a capacidade de processamento e memória de sua máquina,
porque alguns gerenciadores como o KDE (www.kde.org), o ENLIGHTENMENT
(www.enlightenment.org), o GNOME (www.gnome.org) e o WINDOW MAKER
(www.windowmaker.org) são pesados e exigem máquinas com maior capacidade pois
necessitam biblitecas específicas: GTKlib para o GNOME, ENLIGHTENMENT e WINDOW
MAKER e QTlib para o KDE. Para máquinas com capacidade menor é recomendável interfaces
como o BLACKBOX (blackbox.alug.org), o AFTERSTEP (www.afterstep.org) ou FVWM
(www.fvwm.org) que para funcionarem necessitam apenas das bibliotecas do X11.
O comando que inicia o XFree86 é: startx
Esta é a uma interface para o programa xinit (no caso de se estar acostumado a usar
xinit em outros sistemas UNIX). Este comando iniciará o Servidor X e executará os comandos
encontrados no arquivo .xinitrc no seu diretório pessoal. O .xinitrc é apenas um programa
contendo os clientes X a serem executados. Caso este arquivo não exista, o padrão do sistema
/usr/X11R6/lib/X11/xinit/xinitrc será usado, isto para o root, os outros usuários do sistema
deverão ter o arquivo .xinitrc no seu diretório pessoal (home).
15.5 Configurando o XFree86 à partir do arquivo XF86Config:
63
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Para um funcionamento otimizado do ambiente gráfico é necessário editar algumas
linhas do arquivo /etc/XF86Config como descrito abaixo:
Linha Section "Files"
...
1
2
3
4
5
6
7
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
"/usr/X11R6/lib/X11/fonts/misc/"
"/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
"/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
"/usr/X11R6/lib/X11/fonts/Type1/"
"/usr/X11R6/lib/X11/fonts/Speedo/"
"/usr/X11R6/lib/X11/fonts/100dpi/"
"/usr/X11R6/lib/X11/fonts/75dpi/"
Nesta sessão pode-se inverter a ordem das linhas 2 e 3 e 6 e 7 na ordem como
descrito acima as fontes utilizadas serão as de 100 dpi que são maiores que as de 75 dpi.
Linha Pointer section
1 Section "Pointer"
2
Protocol "PS/2"
3
Device
"/dev/mouse"
Nesta sessão pode-se alterar na linha 2 substituir “PS/2” por “auto” assim você pode
utilizar mouse PS/2 ou Serial sem se preocupar em editar esta linha.
Monitor section
# 640x400 @ 70 Hz, 31.5 kHz hsync
#Modeline "640x400" 25.175 640 664 760 800
# 640x480 @ 60 Hz, 31.5 kHz hsync
#Modeline "640x480" 25.175 640 664 760 800
# 801x600 @ 56 Hz, 35.15 kHz hsync
#ModeLine "800x600" 36 800 824 896 1024
# 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync
Modeline "1024x768" 44.9 1024 1048 1208 1264
...
400 409 411 450
480 491 493 525
600 601 603 625
768 776 784 817 Interlace
Nesta sessão deve-se comentar2 todas linhas que começam com Modeline, deixando
descomentada apenas a linha compatível com seu monitor. Esta linha deve ser escolhida de
acordo com a resolução que deseja usar (por exemplo: 1024x768 se o monitor e a placa de
vídeo suportam esta resolução), freqüência vertical do seu monitor (por exemplo: @ 87 Hz
interlaced é para monitores que suportam até 87 Hz de freqüência vertical intrelaçada) e
freqüência horizontal (por exemplo: 31.5 kHz hsync é para monitores que suportam até 35.5
kHz de freqüência horizontal).
Screen sections
COMENTAR – Inserir uma cerquilha (#) no início da linha
64
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
# The Colour SVGA server
#Section "Screen"
# Driver
"svga"
# Device
"Generic VGA"
# #Device
"S3"
# Monitor "Digital"
# Subsection "Display"
#
Depth
8
#
#Modes
"640x480" "800x600" "1024x768"
#
ViewPort 0 0
#
Virtual 320 200
#
#Virtual 1024 768
# EndSubsection
#EndSection
# The 16-color VGA server
#Section "Screen"
# Driver
"vga16"
# Device
"Generic VGA"
# Monitor "Digital"
# Subsection "Display"
#
Modes
"640x480" "800x600"
#
ViewPort 0 0
#
Virtual 800 600
# EndSubsection
#EndSection
# The Mono server
#Section "Screen"
# Driver
"vga2"
# Device
"Generic VGA"
# Monitor "Digital"
# Subsection "Display"
#
Modes
"640x480" "800x600"
#
ViewPort 0 0
#
Virtual 800 600
# EndSubsection
#EndSection
# The accelerated servers (S3, Mach32, Mach8, 8514, P9000, AGX, W32, Mach64)
Section "Screen"
Driver
"accel"
Device
"S3"
Monitor "Digital"
# Subsection "Display"
#
Depth
8
#
Modes
"640x480" "800x600" "1024x768"
#
ViewPort 0 0
# EndSubsection
Subsection "Display"
Depth
16
Modes
"1024x768"
ViewPort 0 0
EndSubsection
# Subsection "Display"
#
Depth
24
#
Modes
"640x480"
65
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
#
ViewPort 0 0
# EndSubsection
# Subsection "Display"
#
Depth
32
#
Modes
"640x400"
#
ViewPort 0 0
# EndSubsection
EndSection
Nesta sessão deve-se comentar todas linhas exceto a “Section Screen” que se refere à
sua placa de vídeo, e nesta “Section Screen” deve-se deixar apenas a Subsection "Display" que
descreve a profundidade de cores (Depth) que deseja utilizar e na linha Modes deve-se deixar
apenas a resolução que utilizará por exemplo:
Depth
16
indica uso de 16 milhões de cores
Modes
"1024x768" indica o uso de resolução 1024x768
66
Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001
Bibliografia
1 - Kirch, Olaf - Guia do Administrador de Redes Linux;
Título original: Linux System Administrator's Guide
(Versão traduzida por: Conectiva Informática.)
2 - Wirzenius, Lars - Guia do Administrador de Sistemas Linux;
Título original: The Linux Network Administrator's Guide.
(Versão traduzida por: Conectiva Informática.)
3 - Guia do Usuário do Conectiva Linux (versão 2.0 ) ;
Copyright © 1998, 1999 - Conectiva Informática Ltda.
4 - Eric S. Raymond - The Linux Installation HOWTO ;
5 - Guia de Instalação do Linux;
Copyright © 1995, 1996, 1997, 1998, 1999, 2000 - Conectiva Informática Ltda.
6 - Matt Welsh - Linux Installation and Getting Started
7 - Goiamy Póvoa Filho - Apostila de curso ;
7 - Páginas de Manuais diversas do sistema;
8 - Sites diversos sobre Linux:
(Alguns deles)
http://www.linux.org
http://www.conectiva.com.br
http://www.linux.usp.br
http://www.linux.unicamp.br
http://www.linux.goias.net
http://www.revistadolinux.com.br
http://ldp-br.conectiva.com.br
http://www.linuxdoc.org
http://www.slackware.com
http://www.linux.trix.net
http://linux.unleashed.com.br
9 - Lista de discussão:
Dicas-L - Para informações: http://www.Dicas-L.unicamp.br/FAQ.html.
67
Download