You are on page 1of 227

Global Sul Informática

Administração, Redes e Serviços

Adilson R. Bonan <arbonan.linux@gmail.com> - LPI Trainee Certified


Esse Material pode ser copiado e distribuído livremente.

1
Treinamento Linux – Administração, Redes e Serviços

2
Global Sul Informática

Introdução.......................................................................................................................................................7
Introdução ao sistema operacional Linux.........................................................................................................7
O anúncio....................................................................................................................................................8
História do mascote Tux..............................................................................................................................8
O que é o Linux?.........................................................................................................................................9
Características do sistema Linux.................................................................................................................9
O que é uma distribuição Linux?...............................................................................................................11
As principais distribuições Linux..............................................................................................................12
Será que Linux é bom para você?..............................................................................................................14

Capítulo 1......................................................................................................................................................17
Semelhanças do Windows com o Linux.........................................................................................................17
Arquivos de lote........................................................................................................................................19
Equivalência de arquivos de configuração................................................................................................19
Equivalência nas portas de comunicação...................................................................................................20
Equivalência de comandos........................................................................................................................21
Equivalência de redirecionamentos...........................................................................................................21
Particularidades do sistema Linux.............................................................................................................23
Como pedir ajuda no mundo Linux?.........................................................................................................25
Semelhanças do Windows com o Linux....................................................................................................31
Os gerenciadores de janelas do Linux.......................................................................................................33
Semelhanças de aplicativos nativos...........................................................................................................35
Atalhos links simbólicos............................................................................................................................36
Processos e serviços em segundo plano.....................................................................................................36

Capítulo 2......................................................................................................................................................41
Filosofia Linux...............................................................................................................................................41
Criando disquetes de inicialização............................................................................................................41
Gerando discos sob MS-DOS....................................................................................................................41
Gerando discos sob o Windows.................................................................................................................41
Gerando discos a partir do Linux..............................................................................................................41
Entrando no sistema Linux........................................................................................................................42
Os arquivos...........................................................................................................................................42
Meta caracteres ou coringas.................................................................................................................43
Os diretórios.........................................................................................................................................44
O que são diretórios raiz do sistema Linux?.........................................................................................45
Nomenclatura dos discos, partições e portas.............................................................................................46
Estrutura de particionamento do sistema Linux.........................................................................................47
O Interpretador de comandos.....................................................................................................................47
Atalhos de teclado para o bash..................................................................................................................48
Os arquivos de inicialização da máquina...................................................................................................49
Terminais virtuais em modo console.........................................................................................................50
Linux modo console, o poder do shell.......................................................................................................51
Comandos de ajuda do sistema..................................................................................................................51

3
Treinamento Linux – Administração, Redes e Serviços

Comandos de informações do sistema.......................................................................................................53


Comandos para manipulação de diretórios................................................................................................55
Comandos para manipulação de arquivos..................................................................................................55
Comandos de controle de acessos a arquivos e diretórios.........................................................................57
Comandos de ligação de arquivos e diretórios..........................................................................................57
Comandos para gerenciamento de impressão............................................................................................58
Comandos mensagens no sistema..............................................................................................................59
Comandos de controle de execução de processos .....................................................................................59
Comandos de manipulação de mídias........................................................................................................60
Comandos de processamento em rede (interno e externo).........................................................................62
Comandos para manipulação de usuários e grupos....................................................................................63
Comandos de som no sistema....................................................................................................................64
Comandos de empacotamento e compressão de arquivos..........................................................................66
Comandos de verificação de logs /var.......................................................................................................66
Comandos diversos....................................................................................................................................66
Comandos genéricos do ambiente gráfico Gnome ....................................................................................69
Comandos genéricos do ambiente gráfico KDE .......................................................................................70

Capítulo 3......................................................................................................................................................75
Gerenciamento de usuários e grupos..............................................................................................................75
Gerenciamento de usuários e grupos.........................................................................................................75
Arquivos de configuração e personalização de usuários............................................................................80

Capítulo 4......................................................................................................................................................89
Gerenciamento de mídias...............................................................................................................................89
Os comandos mount e umount...................................................................................................................89
O acesso a unidade de disquete.................................................................................................................90
Formatando disquetes no Linux................................................................................................................90
Formatação via modo texto..................................................................................................................91
O acesso a unidade de CD-ROM..........................................................................................................91
O acesso a unidade de zip-drive...........................................................................................................92
O acesso a partição do Windows local.................................................................................................93
Verificação dos pontos de montagem...................................................................................................93
O espaço disponível..............................................................................................................................94
Os arquivos /etc/fstab e /etc/mtab.........................................................................................................94
Reconhecendo as partições...................................................................................................................96

Capítulo 5......................................................................................................................................................99
Gerenciamento de permissões........................................................................................................................99
Acesso a um arquivo ou diretório..............................................................................................................99
Controlando donos, grupos e outros usuários .........................................................................................100
Atribuindo permissões: comando chmod.................................................................................................102
Alterando permissões pelo modo literal..................................................................................................102
Alterando permissões pelo modo numérico (octal).................................................................................103
Alterando permissões pelo modo absoluto..............................................................................................104

Capítulo 6....................................................................................................................................................107
Empacotamento e compressão de arquivos...................................................................................................107
Empacotando arquivos com o comando tar.............................................................................................108
Usando o compress e uncompress...........................................................................................................109
Usando o bzip2 e bunzip2.......................................................................................................................110
Usando o gzip, gunzip e zcat...................................................................................................................111
Usando o znew........................................................................................................................................112
Quebrando arquivos grandes...................................................................................................................112

4
Global Sul Informática

Capítulo 7....................................................................................................................................................115
Gerenciamento de pacotes com RPM...........................................................................................................115
RPM em pacotes não instalados..............................................................................................................116
RPM em pacotes instalados.....................................................................................................................118
RPM em desinstalação de pacotes...........................................................................................................119
RPM em instalação e atualização de pacotes...........................................................................................119
Dependências não resolvidas...................................................................................................................121
RPM em verificação do sistema .............................................................................................................121
RPM instalando pacotes via ftp...............................................................................................................121
Convertendo um pacote...........................................................................................................................122
Gerenciamento de pacotes com YUM..........................................................................................................122
Compilação de programas............................................................................................................................124
Gerenciamento de pacotes com Apt/Synaptic...............................................................................................127
Usando o comando apt............................................................................................................................127
Adicionando um CD................................................................................................................................128
Instalando novos pacotes.........................................................................................................................131
Removendo pacotes instalados................................................................................................................131
Atualizando sua distribuição...................................................................................................................131
Procurando por pacotes...........................................................................................................................131
Usando o Synaptic...................................................................................................................................132
Convertendo formatos de pacotes com o Alien............................................................................................134

Capítulo 8....................................................................................................................................................137
Configurações básicas..................................................................................................................................137
Configurando datas e horários.................................................................................................................137
Configurando o teclado...........................................................................................................................139
Configurando o mouse.............................................................................................................................140
Configurando a placa de som..................................................................................................................140
Configurando o modem...........................................................................................................................141
Usando o KPP para conectar à Internet...................................................................................................142
Serviço básico de ADSL..........................................................................................................................142
Configurando a impressora......................................................................................................................143
Filtros de impressão............................................................................................................................145
Servidor de impressão CUPS e KDE.......................................................................................................147
Configurando o CUPS pelo arquivo...................................................................................................148
Configurando o CUPS pelo cups-config.............................................................................................150
Configurando a impressora pelo KDE.....................................................................................................151
Configurando o vídeo..............................................................................................................................152

Capítulo 9....................................................................................................................................................157
Configuração básica da interface de rede ....................................................................................................157
O modelo base OSI..................................................................................................................................157
Informações sobre camadas.....................................................................................................................159
TCP/IP um pouco de teoria......................................................................................................................159
IP – Internet Protocol...............................................................................................................................160
Classes de rede IP....................................................................................................................................160
A camada TCP/IP....................................................................................................................................162
Resumo das três classes de números IP:..................................................................................................163
ICMP – Internet Control Message Protocol.............................................................................................163
Topologia de redes..................................................................................................................................164
Topologia em Estrela...............................................................................................................................164
Topologia em Barra.................................................................................................................................165
Topologia em Anel..................................................................................................................................165
Sistema Linux, a configuração................................................................................................................166
A interface de rede.............................................................................................................................166
A interface loopback..........................................................................................................................167

5
Treinamento Linux – Administração, Redes e Serviços

Os principais arquivos.............................................................................................................................168
Os módulos da interface de rede.........................................................................................................173
Configurando no braço............................................................................................................................175
Monitoramente de rede............................................................................................................................178

Capítulo 10..................................................................................................................................................181
NFS - Cliente e Servidor...............................................................................................................................181
Como configurar clientes e servidores NFS............................................................................................181
Configurando um servidor NFS...............................................................................................................181
Criando os locais para montagem NFS...............................................................................................182
O portmapper......................................................................................................................................183
Mountd e nfsd.....................................................................................................................................184
Configurando o cliente NFS....................................................................................................................187
Opções de montagem..........................................................................................................................188
Otimizando o NFS..............................................................................................................................188
NFS e segurança......................................................................................................................................189
Segurança no cliente...........................................................................................................................189
Segurança no servidor: nfsd...............................................................................................................189
Segurança no servidor portmapper.....................................................................................................190
NFS e firewalls........................................................................................................................................191

Capítulo 11..................................................................................................................................................193
SAMBA – Cliente e Servidor.......................................................................................................................193
Características do servidor......................................................................................................................194
Arquivos de configuração do Samba.......................................................................................................194
Principais arquivos do servidor samba....................................................................................................195
Executando os servidores........................................................................................................................199
Configurando o Samba............................................................................................................................201
Configurando pelo modo texto...........................................................................................................201
Autenticação de usuários — modalidade de segurança......................................................................202
Pontos de montagem com Samba............................................................................................................211
Configurando o samba através do Swat no Linux...................................................................................213

Capítulo 12..................................................................................................................................................215
Conexões remotas.........................................................................................................................................215
Usando o Telnet......................................................................................................................................215
Habilitando telnet entre máquinas......................................................................................................215
Usando o SSH.........................................................................................................................................217
Clientes SSH para Windows e Linux.................................................................................................217
Preparando o servidor.........................................................................................................................218
Execução de comandos no servidor....................................................................................................219
Usando o FTP..........................................................................................................................................221
Comandos básicos para ftp.................................................................................................................222
Fazendo ftp via modo texto................................................................................................................223
Fazendo ftp via modo gráfico.............................................................................................................223
Arquivo de configuração do servidor ftp............................................................................................224

6
Global Sul Informática

Introdução

Introdução ao sistema operacional Linux


Muitas coisas interessantes ocorreram desde que Linus Torvalds1 iniciou o seu trabalho em um
sistema operacional para PCs similares ao Unix. O Linux evoluiu de um “passatempo de micreiros” para um
sério competidor de outros sistemas operacionais.

:: Linus Torvalds, mentor do sistema Operacional Linux.

Eu que tenho acompanhado algumas distribuições Linux desde seu princípio, tenho percebido
como o sistema tem evoluído e melhorado cada vez mais para os usuários e profissionais da área que
trabalham com o sistema Linux como é o caso da Red Hat, Debian, Mandriva, Suse, Slackware, Kurumin e a
nova distribuição Ubuntu que tem feio o maior sucesso no mundo Linux.
Experimente pegar o CD-ROM dessas distribuições de cinco anos atrás e você saberá do que eu
estou falando. Por muitos anos, o Unix teve um estigma de algo extremamente complexo. Suas licenças eram
comercializadas em valores inatingíveis para a grande maioria dos usuários pessoais ou corporativos, criando
um distanciamento entre este estável e robusto sistema operacional e o grande público. Porém, algo estava
para acontecer e aconteceu.
Isso perdurou até que o Linux fosse disponibilizado em embalagens com valores inferiores a R$
100,00 (cem), em conjunto com centenas de aplicativos adicionais em formatos sem limites de instalações,
usuários ou quaisquer restrições, tornando-se acessível a praticamente todo e qualquer usuário com
disposição de conhecer um mundo novo de soluções, cooperação e criatividade.
Não há uma alternativa mais econômica que um “X Terminal”, pois um antigo e barato 586 pode
conter o Linux para executar esta tarefa. O Linux tem ainda excelentes funcionalidades de interação em rede
e em especial com outros sistemas operacionais, podendo atuar como servidor e cliente em redes
heterogêneas, atuando em conjunto com máquina Windows, Unixes, Macintosh, terminais burros etc.

DICA: Hoje se você quiser montar um cyber-café, básico, por exemplo além de ser simples não
precisará das ultimas tecnologias de ponta pois com alguns pentiuns você poderá montar terminais de
conexões a Internet para pesquisa e fins acadêmicos. Isso é muito fácil de ser feito pois o sistema
Linux tem as ferramentas básicas se fazer e não precisa comprar nenhuma licença.

7
Treinamento Linux – Administração, Redes e Serviços

Uma das grandes vantagens do Linux reside na disponibilidade do código-fonte. Além do fato de
ser possível modificar o sistema para atendimento de alguma necessidade específica, permite ainda a
correção de eventuais problemas, ou seja, em vez de aplicar a filosofia de infelizmente temos que conviver
com isto, teremos uma nova filosofia resumida em “temos que mudar isto”. Essa filosofia é que faz o
desenvolvimento do Linux tão rápido e surpreendentemente estável. Viva o Linux.

O anúncio
“Olá para todos que estão usando o Minix – estou fazendo um sistema (livre) operacional (como
um passatempo, pois não será grande e profissional como o GNU) para 386 e 486 AT clones.”
PS.: Linus Torvalds.

“Foi com essa mensagem que tudo começou, no dia 3 de julho de 1991, Linux Torvalds,
estudante de Ciência da Computação da Universidade de Helsinque comunicava oficialmente à comunidade
de desenvolvedores do newsgroup comp.os.minix que estava trabalhando em um projeto em Minix. Naquela
ocasião, Linus buscava a indicação de um documento das regras POSIX mais recentes. O que não significa,
necessariamente, que o Linux nasceu naquele dia.
Há uma outra data, 25 de agosto de 1991, em que Linus divulga no mesmo news-group, que está
fazendo um sistema operacional propriamente dito. E o mais importante de tudo: livre. Assim ficou mais
explícito para o público a intenção dele em tornar sua obra disponível para todos que estivessem
interessados.

História do mascote Tux


O simpático pingüim que se tornou ícone do Linux foi criado por Larry Ewing em meados de
1996, depois de um concurso de logotipos para o sistema operacional. A simpática criaturinha criada por
Ewing venceu quase por aclamação de toda a comunidade.
A idéia do pingüim foi casualmente sugerida pelo próprio Linus Torvalds, depois de mencionar
publicamente que os achava engraçadinhos. Quando o concurso estava em andamento, Linus havia sugerido
que o pingüim deveria ser gordinho e com um ar de satisfação depois de empanturrar-se com peixes.

:: Tux – O mascote do Linux.

Para Linus, um pingüim como logotipo daria mais liberdade às pessoas que quisessem usar
materiais relacionados ao sistema operacional. Outra razão que Linus salientou é que, usando algo parecido
com o pingüim dá às pessoas a oportunidade de fazer modificações. Exatamente como acontece hoje, quando
encontramos diferentes variantes do pingüim em boxes das distribuições espalhadas por todo o mundo. O
nome “Tux” é uma variante de “tuxedo”, mais conhecido entre nós como “smoking”.
E, para quem não sabe, há um Tux, em carne e osso, no Zoológico de Bristol, na Inglaterra.”
Fonte: Revista Do Linux, número 20. Para maiores detalhes e estudos acesse a página
www.revistadolinux.com.br/ed/020/assinantes/capa.php3.
E hoje o sistema operacional GNU/Linux é o que você, prezado leitor/usuário, sabe ou vai
aprender sobre esse maravilhoso sistema operacional.

8
Global Sul Informática

No decorrer desse material você aprenderá como é que isso cresceu, deixou de ser um
passatempo, tornou-se um sistema altamente profissional usado inclusive por bancos do mundo todo e até
mesmo pelo pentágono e pela NASA, é mole?
Projetos no mundo inteiro estão dando muito mais credibilidade aos sistema Linux, países estão
trocando sua base governamental de sistema Windows para sistema Linux, e isso não é por querer brigar com
Micro$oft ou com o Sr. Bill Gates, mas sim por ECONOMIA, pois o mundo está tomando consciência de que
o dinheiro é finito e a economia como um todo precisa ser controlada não somente aqui no Brasil como no
restante do mundo.

O que é o Linux?
O Linux é um sistema operacional criado em 1991 por Linus Torvalds na universidade de
Helsinque na Finlândia. É um sistema operacional de código aberto distribuído gratuitamente pela Internet,
então praticamente todo mundo pode ter em mãos os códigos-fontes do sistema operacional Linux. Seu
código-fonte é liberado como Free Software3 – Software Livre –, o aviso de Copyright© do Kernel – núcleo
do sistema– feito por Linus descreve detalhadamente isto e mesmo ele está proibido de fazer a
comercialização do sistema.
Isso quer dizer que você não precisa pagar nada para usar o Linux. Que bom isso, não? E não é
crime fazer cópias para instalar em outros computadores , que jóia isso, não? Nós inclusive incentivamos você
a fazer isto. Ser um sistema de código aberto pode explicar a performance, estabilidade e velocidade em que
novos recursos são adicionados ao sistema.
Para rodar o sistema Linux é preciso, no mínimo, um computador 386 SX com 2 MB de
memória e 40 MB disponíveis em seu disco rígido para uma instalação básica e funcional; é verdade mesmo,
com o tempo você descobrirá como isso é maravilhoso. Podemos recuperar máquinas que praticamente
estavam fadadas ao ferro velho. Agora tente instalar o “outro” em máquinas com essas condições.

DICA: Se você for bem radical mesmo, poderá usar o sistema Linux em um ou dois disquetes e nem
vai precisar de disco rígido, pois poderá fazer todo o seu trabalho via rede e em modo gráfico.
Acredite, isso é apenas um pedaço do paraíso.

Características do sistema Linux


Uma das grandes vantagens do sistema Linux: — NÃO EXISTEM VÍRUS NO LINUX! Em mais
de 15 (quinze) anos de existência, nunca foi registrado NENHUM tipo de vírus para este sistema. Isso tudo
devido à grande segurança oferecida pelas permissões de acesso do sistema que funcionam inclusive durante
a execução de programas. O que tem aparecido por aí ultimamente são “worms”, ou seja, pequenos “scripts”
ou programas que precisam de um certo privilégio para funcionar e que depois de ter esse privilégio
apresentam um comportamento geralmente semelhante ao de um vírus. Mas isso não impede que um bom
administrador de redes se encarregue de anular esse tipo de situação;
A pilha TCP/IP mais rápida que no Windows e tem sua pilha constantemente melhorada. O
Linux tem suporte nativo a redes TCP/IP e não depende de uma camada intermediária como o Winsock. Em
acessos via modem à Internet, a velocidade de transmissão é 10 por cento a 20 por cento (em alguns casos)
maior, e sem contar que roda aplicações Windows através do WINE e também através do CrossOver;
Veja outras características:
• Convive sem nenhum tipo de conflito com outros sistemas operacionais (como MS-DOS,
Windows, OS/2, Mac etc) no mesmo computador;
• É multitarefa real e multiusuário e tem Suporte a nomes extensos de arquivos e
diretórios (255 caracteres);
• Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc,
Alpha, PowerPc, ARM, Unix, Windows, DOS etc;
• Proteção de programas executados na memória RAM;
• Tem suporte para terminais virtuais – consoles –, o que é importantíssimo para os
diversos tipos de conectividade que o Linux oferece e oferece modularização. O sistema
Linux somente carrega para a memória o que é usado durante o processamento,
liberando totalmente a memória assim que o programa/dispositivo é finalizado. E se por
ventura algum programa “travar” é possível tirá-lo do ar sem nenhum esforço ou sem ter
que reinicializar a máquina novamente;

9
Treinamento Linux – Administração, Redes e Serviços

• Devido à modularização, os drivers dos periféricos e recursos do sistema podem ser


carregados e removidos completamente da memória RAM a qualquer momento. Os
drivers (módulos) ocupam pouco espaço quando carregados na memória RAM (cerca de
6 kb para a Placa de rede NE 2000, por exemplo);
• Não precisa de um processador potente para funcionar. O sistema roda bem em
computadores 386 SX de 25 mhz com 4 mb de memória RAM (sem rodar o sistema
gráfico X, que é recomendado 8MB de RAM). Já pensou no seu desempenho em um 486
ou Pentium ou então em um AMD de 1,5 ghz?
• O crescimento e novas versões do sistema não provocam lentidão; pelo contrário, a cada
nova versão os desenvolvedores procuram buscar maior compatibilidade, acrescentar
recursos úteis e melhor desempenho do sistema (como o que aconteceu na passagem do
kernel 2.0.x para 2.2.x, e assim sucessivamente);
• Não é requerida uma licença para seu uso. O Linux é licenciado de acordo com os
termos da GNU e acessa sem problemas discos formatados pelo DOS, Windows, Novell,
OS/2, NTFS, SunOS, Amiga, Atari, Mac etc.;
• Utiliza permissões de acesso a arquivos, diretórios e programas em execução na
memória RAM;
• Suporte a dispositivos infravermelho; suporte a rede via rádio amador; suporte a
dispositivos plug-and-play; suporte a dispositivos USB etc.

Calma lá, isso ainda não é tudo. O sistema de arquivos usado pelo Linux (ext2, ext3 ou reiserfs)
organiza os arquivos de forma inteligente, evitando a fragmentação e fazendo-o um poderoso sistema para
aplicações multiusuários exigentes e gravações intensivas.
Ele também permite a montagem de um servidor Web, e-mail, News etc com um baixo custo e
alta performance. O melhor servidor Web do mercado, o Apache2, é distribuído gratuitamente com o Linux.
O mesmo acontece com o Sendmail. Por ser um sistema operacional de código aberto, é possível ver o
código-fonte (o que foi digitado pelo programador) faz e adaptá-lo às suas necessidades ou de sua empresa.
Essa característica é uma segurança a mais para empresas sérias e outros que não querem ter seus dados
roubados (você não sabe o que um sistema sem código-fonte faz na realidade enquanto esta processando o
programa).
Ainda apresenta suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os
novos como obsoletos, e pode ser executado em dez arquiteturas diferentes (Intel, Macintosh, Alpha, Arm
etc). Há consultores técnicos especializados no suporte ao sistema espalhados por todo o mundo e entre
muitas outras características que você descobrirá durante o uso do sistema. O sistema segue o padrão POSIX,
que é o mesmo usado por sistemas UNIX e suas variantes.
Assim, aprendendo o Linux você não encontrará muita dificuldade em operar um sistema do
tipo UNIX, FreeBSD, HPUX, SunOS etc., bastando apenas aprender alguns detalhes encontrados em cada
sistema.
O código-fonte aberto permite que qualquer pessoa veja como o sistema funciona (útil para
aprendizado), corrija algum problema ou faça alguma sugestão sobre sua melhoria; esse é um dos motivos de
seu crecimento rápido, do aumento da compatibilidade de periféricos (como novas placas sendo suportadas
logo após seu lançamento) e de sua estabilidade.
Outro ponto em que o sistema Linux se destaca é o suporte que oferece a placas, CD-ROM, CD-
RW ect e outros tipos de dispositivos de última geração e mais antigos (a maioria deles já ultrapassados e
sendo completamente suportados pelo sistema operacional). Esse é um ponto forte para empresas que
desejam manter seus micros em funcionamento e pretendem investir em avanços tecnológicos com as
máquinas que possui.
Hoje o Linux é desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo
sua contribuição ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em seu
desenvolvimento e também ajuda na coordenação entre os desenvolvedores.
Resumidamente, encontramos no Linux surpresas agradáveis, sendo um sistema com
características de suporte multitarefa, multiusuário, multiprocessamento, multiplataforma, execução em
modo protegido, aderente ao POSIX e aos padrões Unix e, em especial, com um formato de desenvolvimento
comunitário de código aberto.
Cabe salientar que o que comumente se define como Linux é algo que ultrapassa o kernel, pois
uma distribuição normalmente compreende centenas de programas adicionais, variando de compiladores a
bancos de dados, passando por servidores de correio e firewall.

10
Global Sul Informática

O que é uma distribuição Linux?


Só o sistema operacional Linux não é necessário para ter uma sistema funcional, mas é o
principal. Existem grupos de pessoas, empresas e organizações que decidem distribuir o Linux com outros
programas essenciais como por exemplo editores gráficos, planilhas, bancos de dados, ambientes de
programação, formatação de documentos, firewalls etc.
Este é o significado básico de uma distribuição. Cada distribuição tem sua característica própria,
como o sistema de instalação, o objetivo, a localização de programas, nomes de arquivos de configuração etc.
A escolha de uma distribuição é pessoal e depende da necessidade de cada um de nós. Algumas distribuições
bastante conhecidas são: Red Hat, Debian, Mandriva, Suse, Slackware, Kurumin e Ubuntu, por exemplo.
Acompanhe esse Time Line das principais distribuições Linux no mundo e veja sua evolução:

:: Time Line das principais distribuições Linux no mundo.

11
Treinamento Linux – Administração, Redes e Serviços

Todas essa distribuições usam o sistema Linux como kernel principal , porém a Debian é uma
distribuição independente de kernel e pode ser executada sob outros kernels, como o GNU/hurd. A escolha
de sua distribuição deve ser feita com muita atenção, não adianta muita coisa perguntar em canais de IRC
sobre qual é a melhor distribuição, ser levado pelas propagandas, pelo vizinho etc.
O melhor caminho para a escolha da distribuição, acredito eu, seria perguntar as características
de cada uma e por que essa pessoa gosta dela, em vez de perguntar qual é a melhor, porque quem lhe
responder isso estará usando uma distribuição que se encaixa de acordo com suas necessidade, e esta mesma
distribuição pode não ser a melhor para atendê-lo.

As principais distribuições Linux


Tem alguns “humoristas” que dizem que você encontra Linux até em caixas de biscoitos. Eles
falam isso no sentido pejorativos, mas eu também falo a mesma coisa só que no sentido de lutar contra toda e
qualquer forma de monopólio extremo. Sabe porquê? Porque você tem o direito de escolha, de opinar, de
mudar se não tiver contente.
Acredite, muitas das coisas do que vemos hoje em dia só melhorou porque em algum momento,
alguém percebeu quem manda na verdade somos nós os usuários e de uma certa forma consumidores,
começamos a mudar algo que não nos deixava mais satisfeitos. Então, fabricantes foram obrigados a
melhorar a qualidade de seus produtos. O mesmo acontece com o sistema Linux que tem inúmeras
distribuições, mais de uma duas centenas.
Eu mesmo, tenho 20 (vinte) tipos de distribuições e tudo isso serve para você testar, aprender,
opinar e recomendar devido minhas experiências. Mas longe de afirmar qual é a melhor distribuição, pois a
melhor é aquela de melhor lhe atende, veremos aqui algumas distribuições e suas características mais
importantes.
Debian Linux
Distribuição desenvolvida e atualizada através do esforço de voluntários espalhados ao redor do
mundo, seguindo o estilo de desenvolvimento GNU/Linux. Por este motivo, foi adotada como a distribuição
oficial do projeto GNU. Possui suporte a língua Portuguesa, é a única que tem suporte a 10 arquiteturas
diferentes (i386, Alpha, Sparc, PowerPc, Macintosh, Arm, etc.) e aproximadamente 15 sub-arquiteturas. A
instalação da distribuição pode ser feita tanto através de Disquetes, CD-ROM, Tftp, Ftp, NFS ou através da
combinação de vários destes em cada etapa de instalação.
Acompanha mais de 4.350 programas distribuídos em forma de pacotes divididos em 4 (quatro)
CDs binários e 2 (dois) de código fonte (ocupa 2.1 GB em meu disco rígido), cada um destes programas são
mantidos e testados pela pessoa responsável por seu empacotamento. Os pacotes são divididos em diretórios
de acordo com sua categoria e gerenciados através de um avançado sistema de gerenciamento de pacotes (o
dpkg) facilitando a instalação e atualização de pacotes. Possui tanto ferramentas para administração de redes
e servidores quanto para desktops, estações multimídia, jogos, desenvolvimento, web, etc.
A atualização da distribuição ou de pacotes individuais pode ser feita facilmente através de 2
comandos, não requerendo adquirir um novo CD para usar a última versão da distribuição. É a única
distribuição não comercial onde todos podem contribuir com seu conhecimento para o seu desenvolvimento.
Para gerenciar os voluntários, conta com centenas de listas de discussão envolvendo determinados
desenvolvedores das mais diversas partes do mundo.
Kurumin Linux
O Kurumin é uma distribuição Linux destinada a desktops baseada no Debian. Ele mantém o
mesmo sistema de detecção de hardware, mas é muito menor, apenas um CD Live que nem precisa ser
instalado, fazendo com que o download seja rápido. O Kurumin é uma tentativa de desenvolver um Linux
voltado para o uso em desktops, que seja fácil de usar, fácil de instalar e resolva problemas clássicos como a
falta de suporte a softmodems e a multimídia. O Kurumin já inclui drivers para vários softmodems, suporte a
vários formatos de vídeo, incluindo Divx e uma ferramenta para instalar suporte a Flash. Tudo isso é
organizado de uma forma intuitiva.
Mandriva
Distribuição muito boa e funcional e veio da união ente Conectiva (Brasil) e Mandrake (França)
a qual também apresenta boa parte de seus pacotes já traduzido para o nosso idioma. Esse distribuição
caracterizou-se facilidade em detectar o hardware e implementação de algumas filosofia de trabalhos.
Também apresenta um visual melhorado, bonito e muito intuitivo para o usuário final. Apresenta também
suporte melhorada para o modens WinModens.
Red Hat
Principal distribuição americana que até um tempo atrás era ela quem ditava as regras. Mas as
coisas mudaram e os ventos sopram em outras direções, no entanto é uma das principais distribuições

12
Global Sul Informática

americanas e apresenta bom suporte para nosso idioma. A distribuição Red Hat era uma das primeiras
distribuições a ser apresentadas em cursos de sistema operacional Linux por apresentar-se rápida, confiável e
altamente configurável. Agora a Red Hat apresenta um outro Linux, o Fedora Core Linux, que traz várias
inovações.
Slackware Linux
Distribuição desenvolvida por Patrick Volkerding, desenvolvida para alcançar facilidade de uso e
estabilidade como prioridades principais. Foi a primeira distribuição a ser lançada no mundo e costuma
trazer o que há de mais novo enquanto mantém uma certa tradição, provendo simplicidade, facilidade de uso
e com isso flexibilidade e poder.
Desde a primeira versão lançada em Abril de 1993, o Projeto Slackware Linux tem buscado
produzir a distribuição Linux mais UNIX-like, ou seja, mais parecida com UNIX. O Slackware segue os
padrões Linux como o Linux Standard File System, que é um padrão de organização de diretórios e arquivos
para as distribuições. Enquanto as pessoas diziam que a Red Hat era a melhor distribuição para o usuário
iniciante, o Slackware é o melhor para o usuário mais “velho”, ou seja programadores, administradores, etc.
SuSE Linux
Distribuição comercial Alemã com a coordenação sendo feita através dos processos
administrativos dos desenvolvedores e de seu braço norte-americano. O foco da Suse é o usuário com
conhecimento técnico no Linux (programador, administrador de rede, etc.) e não o usuário iniciante no
Linux.
A distribuição possui suporte ao idioma e teclado Português, mas não inclui (até a versão 6.2) a
documentação em Português. Possui suporte as arquiteturas Intel x86 e Alpha. Sua instalação pode ser feita
via CD-ROM ou CD-DVD (é a primeira distribuição com instalação através de DVD).
Uma média de mais de 2.000 programas acompanham a versão 8 distribuídos em 6 CD-ROMs.
O sistema de gerenciamento de pacotes é o RPM padronizado. A seleção de pacotes durante a instalação pode
ser feita através da seleção do perfil de máquina (developer, estação kde, gráficos, estação gnome, servidor de
rede, etc.) ou através da seleção individual de pacotes.
Fedora Core 7 (Red Hat)
O Linux Fedora 7 traz como interface gráfica padrão, o KDE 3.5, que conta com novos recursos
que aumentam a integração entre os aplicativos disponíveis e facilitam sua utilização. O sistema ainda possui
amplo suporte a funcionalidades de Internet, permitindo ao usuário a utilização dos principais serviços
disponíveis na Web. Com excelentes navegadores, clientes de e-mail, programas de chat, mensagens
instantâneas, oferecendo um pacote completo para acesso à Internet.
É uma excelente plataforma para o acesso e gravação de múltiplos formatos de áudio, vídeo e
outros recursos multimídia. Ele suporta os principais periféricos e uma vasta gama de softwares de jogos e
produtos para comunicação audiovisual. Na parte de segurança, o Fedora 7 está preparado para
comunicação segura, via e-mail, contendo assinatura digital, e com sites que possuem certificados digitais,
emitidos pela ICP-Brasil ou autoridades certificadoras autorizadas.
Há o OpenOffice em português do Brasil que é uma das mais completas suites de escritório
disponíveis no mercado, possui ferramentas para edição de textos, planilha de cálculos, desenhos vetoriais e
apresentações, além de ser compatível com o MSOffice. A distribuição apresente centenas de outras
aplicações de uso totalmente livre .
Bom, nem só de trabalho vive o homem, prova disso é o sucesso dos games dos mais variados
gêneros que existem por aí. Mas porquê tanto sucesso? Por que as produtoras resolveram investir em
tecnologia, enredo e design de games, tudo isso para cativar nós pobres mortais usuários. O sistema Linux
traz excelentes jogos consigo, claro, vamos concordar que são “simples” mas mesmo assim já dá para gastar
um tempinho na frente do micro, porém nós temos hoje uma outra realidade: LAN House, Cyber Cafés etc
estão usando o sistema Linux em seus servidores pelo simples fato de ser mais confiável, rápido e seguro e
também não precisar pagar R$ 5.000 (cinco mil) por um servidor dedicado em ambiente Windows.
Isso sem contar que os melhores servidores para esse tipo de jogo com toda certeza é o Linux.
Basta que você pergunte em uma LAN House que servidor eles usam. E se você quiser saber como é que se
monta um servidor de Counter Strike por exemplo é só fazer uma pesquisa no google que você vai encontrar
vários tutoriais ensinado com fazer isso de modo correto. Bom entretenimento.
E a maioria dos melhores jogos ja estão sendo portados para o sistema Linux faz tempo, como
por exemplo Herectic, Doom, Sim City, Quake (1,2,3 e 4), Half Life, Unreal e Unreal Tournament e até mesmo
o Counter Strike um dos mais jogados jogos das LAN Houses hoje em dia e a qualidade é tão boa quanto em
ambiente Windows pois hoje o Linux conta com um bom suporte com relação às placas 3D do mercado. Isso
sem contar com os emuladores de vídeo games e computadores.

13
Treinamento Linux – Administração, Redes e Serviços

:: Counter Strike para Linux.

O Linux já conta com todos eles, se você chegou a conhecer o MSX e quiser relembrar daquele
tempoo Linux tem o emulador desse maravilhoso computador daquele época. Tem emulador de Atari, TK
2000, Apple, Amiga, NeoGeo, Snes, Game Boy, Play Station, Xbox (quem disse que não?), Dream Cast e por
aí vai. Realmente o sistema Linux é um verdadeiro laboratório onde você não precisa “pagar” para construir
um bomba e ela explodir na sua mão. Com esse sistema você tem oportunidade de aprendizado e de fazer as
coisas acontecerem.

Será que Linux é bom para você?


O Linux é um bom sistema, você está migrando para ele do MS-DOS? Bom, será que você
gostará dele como seu sistema? Alguns provedores adoram o Linux por ser um sistema operacional ótimo
para a Internet/intranet. Mas e se você usa o Linux em um computador caseiro?
Realmente, o Linux para quem está migrando do Windows é um sistema operacional difícil.
Mas para quem quer se aventurar realmente nesse mundo, o Linux é uma boa idéia para você. Se você for
uma pessoa que só quer as coisas prontas, recomendo não usar o Linux, pois você não usará o sistema
realmente. Se você pretende ou já usa Linux, mesmo que seja a pouco tempo, prepare-se para se tornar um
hacker, não um hacker mal, que que atrapalha a vida dos administradores de sistemas, mas sim, um hacker
que possui conhecimento.
Sistema Linux instalado com sucesso... e agora?
Você acaba de instalar o Linux, com os pacotes desejados, programas legais, coisas
interessantes, criou um usuário pra você (se ainda não, você deverá criar imediatamente) se logou (entrou no
sistema) como esse usuário, informou a senha e agora está no prompt (caso seu Linux entre direto em modo
texto) olhando para a tela neste exato momento, se perguntando: — O que faço agora?
Calma, vamos agora fazer um warm up (aquecimento), como fazer tarefas que você faria no MS-
DOS. Vamos comparar os dois sistemas, começar vendo o básico de tudo. Lembre-se de que o próximo
capítulo é um apanhamento geral do resto da livro. Você pode encontrar coisas que não encontrará em outras
seções. Aqui você vai encontrar o básico de tudo. Se quiser mais detalhes, veja também as outras seções do
manual do Linux.
É possível personalizar as telas de login para que elas fique do seu jeito, como por exemplo, o
papel de parede oficial de sua empresa, a tipologia de letras, cores, ícones e mais algumas outra
configurações.
Após ter entrado no sistema, a filosofia é a mesma do ambiente Windows, ou seja, arrastar,
copiar, mover, apagar, maximizar, minimizar e mais algumas particularidades que apenas o Linux possui,
mas que você aprenderá rapidamente. Eu lhe aconselho a esquecer (se você puder, é claro) pelo menos por
um mês o ambiente Windows, tente fazer tudo o que você faz no Windows em Linux, pelo menos a parte
básica para começar. Claro que se você usar um aplicativo que só tem para Windows você não conseguirá
fazer isso pelo menos por hora. Se você fizer isso, pode acreditar você vai descobrir que realmente existe um
sistema operacional de verdade.

14
Global Sul Informática

:: Tela padrão de login em modo texto do sistema Linux

Exemplos de login em modo texto e em modo gráfico.

:: Tela padrão de login gráfico usando o GDM (GNOME).

15
Treinamento Linux – Administração, Redes e Serviços

Anotações:

16
Global Sul Informática

Capítulo 1

Semelhanças do Windows com o Linux


Para quem já está acostumando com o MS-DOS (linha de comando) do Windows, o que nos dias
de hoje é meio raro, usar o sistema Linux em modo texto em princípio pode parecer meio confuso. E daí vem
aquela perguntinha: — “OK! Para que o modo texto se eu tenho o modo gráfico e lá eu faço tudo?”
Calma não entre em detalhes nesse caso, o próprio decorrer do aprendizado do sistema Linux
mostra que em ambos os modos, texto e gráfico, você consegue respostas... Alguns usuários preferem o modo
gráficos pois suas tarefas requer esse ambiente, outros usuários usam o modo texto pois é nesse modo que
eles encontram agilidade e produção.
No entanto, para aquelas pessoas que já conhecem informática há um bom tempo, o sistema
Linux é muito mais fácil de aprender, pois o usuário já está acostumando com a linha de comando. No
ambiente Linux nós temos os comandos do pacote mtools que são semelhantes (não iguais) com alguns
comandos do MS-DOS. Para saber quais são basta digitar:

# mtools
mattrib, mcat, mcd, mcopy, mdel, mdeltree, mdir, mdu, mformat,,minfo, mlabel, mmd,
mmount, mmove, mpartition, mrd, mren, mtype, mtoolstest, mshowfat, mbadblocks, mzip,
mkmanifest, mcheck

Para o usuário que somente conhece o Windows e nunca viu sequer uma linha de comandos em
MS-DOS, o sistema Linux já é um pouco mais “difícil”, mas se falarmos de ambiente gráfico esse usuário
praticamente não terá dificuldades nenhuma com o modo gráfico do Linux, pois a mesma filosofia do “arrasta
e solta” também está presente aqui no ambiente do Linux.

:: Tela padrão de prompt de comando do MS-DOS no Windows.

O terminal (prompt) do Linux é, sem exageros, ‘mil’ vezes mais poderoso do que o do Windows
para quem souber usá-lo. Além do mais, o terminal que o usuário vê na máquina local na verdade pode estar
em outra máquina chamando outro procedimento e atividade para poder trabalhar de um modo mais seguro
e rápido. Isso o Windows não faz. Então a nossa conclusão é que se o usuário tiver um pouco de força de
vontade, ele vai aprender o Linux sem muito esforço.

17
Treinamento Linux – Administração, Redes e Serviços

:: Tela personalizada de prompt de comando do Linux.

Mas é bom lembrar-se de que isso é questão de tempo, não dá para aprender o Linux da noite
para o dia, é preciso que tenhamos uma disciplina, que também entenda-se o propósito deste sistema
operacional e que a cada dia ele muda suas características para que seja possível um amadurecimento.
A nossa primeira conclusão é de que o modo prompt do Linux, além de muito mais bonito, é
mais poderoso. Dentro de um mesmo ‘terminal’, é possível chamar em paralelo outro ‘terminal’, e, além do
mais, é possível transparência, imagens de fundo, cores de fundo, tipologia de letras e controle cache de
linhas; também é possível arrastar ícones do modo gráfico para dentro de um terminal, pois
automaticamente será criado o caminho para que o usuário possa copiar o arquivo.
Resumo dos comando mtools
Embora você não vai usar agora esses comando pois eles serão usados a medida que você for
adquirindo conhecimento, eu resolvi disponibilizá-los aqui:

mattrib: Mostra e modifica os atributos de arquivos.


mcat: Exibe informações da unidade de disquete em formato RAW.
mcd: Igual ao cd normao, entra e sai de diretórios .
mcopy: Faz cópias de arquivos.
mdel: Exclui arquivos
mdeltree: Apaga arquivos, diretórios e também sub-diretórios.
mdir: Lista arquivos e diretórios da unidade de disquete.
mdu: Mostra o espaço ocupado pelo diretório do MS-DOS.
mformat: Grava uma fat no disquete.
minfo: Mostra informações sobre a unidade de disquetes.
mlabel: Cria um volume (label) para unidades DOS.
mmd: Cria diretórios.
mmount: Monta discos MS-DOS.
mmove: Move ou renomeia arquivos/subdiretórios.
mpartition: Particiona um disco para ser usado no DOS.
mrd: Apaga um diretório e mren: Renomeia arquivos.
mtype: Mostra o conteúdo de arquivos, parecido com o cat.
mtoolstest: Exibe a configuração atual do pacote mtools.
mshowfat: Mostra a FAT da unidade.
mbadblocks: Procura por setores defeituosos na unidade.
mzip: Ejeta discos em unidades ZIP.
mcheck: Verifica arquivos na unidade.

Vamos aprender aqui alguns comandos que encontram semelhança aos comandos do MS-DOS1.
Vale lembrar que esses comandos são semelhantes, NÃO iguais. Isso quer dizer que se assemelham na sintaxe
mas não são iguais, pois no sistema Linux os comandos são muito mais poderosos que os do ambiente MS-
DOS.

18
Global Sul Informática

Arquivos de lote
Se você é do tempo do MS-DOS deve lembrar que muitas vezes para automatizarmos nossas
tarefas, a gente criava os famosos arquivos de lotes, que eram arquivos com uma seqüência de comandos e ser
executados pelo computador. Desse jeito ficava mais fácil, pois simplesmente digitávamos o nome do arquivo
e ele executa os comandos dentro dele. Esse arquivo deveria ter a extensão .BAT.
Mas no sistema Linux não temos esse tipo de extensão e é feito de outro jeito. Caso você queira
criar seu arquivo de lote o qual a partir de hoje vamos chamar simplesmente de script, é simples.
Crie um arquivo normalmente com a seqüência de comandos, esse arquivo pode ter ou não uma
extensão, mas atentando para o seguinte detalhe de no início do arquivo ter a seguinte instrução #!/bin/bash
ou #!/bin/sh ou #!/bin/csh etc. Isso aí informa ao Linux que será usado um desses interpretadores.
Agora para executar o seu script você pode usar o comando source script-teste.sh, por exemplo.
Você poderá também usar o comando chmod +rwx script-teste.sh. E para executá-lo use o comando ./script-
teste.sh caso você esteja no mesmo diretório do seu script. Se você não estiver, copie-o para o diretório /bin
assim não precisa usar o ./ e nem o source, basta simplesmente digitar o nome do seu script.

Equivalência de arquivos de configuração


No sistema Windows nos temos os arquivos “config.sys” e “autoexec.bat” que arquivo de
configuração desse ambiente. Nos tempos áureos do MS-DOS qualquer usuário com um pouco mais de
experiencia já sabia mexer nesses arquivo e meio que fazer um afinação no sistema. Mas nos dias de hoje tem
gente que nem sabe que isso existe.
Já no sistema Linux a filosofia é diferente, além de não ser apenas dois, mas sim vários arquivos
de configuração onde alguns, a gente mexe, outros a gente estraga :-), e alguns o próprio sistema Linux cuida
disso. Esses encontram-se a grande maioria deles no diretório /etc que é o diretório onde ficam quase todos
os arquivos de configuração do sistema Linux, somente para citar temos o “inittab” que cuida entre outras
coisas dos terminais de conexão e inicialização em modo texto e em modo gráfico do sistema, temos também
o arquivo “fstab” que vai cuidar dos pontos de montagem do sistema Linux e únúmeros outros arquivo de
configuração.
Listagem do arquivo /etc/inittab (inicialização)

...
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS
# (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

su:S:wait:/sbin/sulogin
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.


#ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed,


# assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”

19
Treinamento Linux – Administração, Redes e Serviços

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”

# Run gettys in standard runlevels


1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
#7:2345:respawn:/sbin/mingetty tty7
#8:2345:respawn:/sbin/mingetty tty8
#9:2345:respawn:/sbin/mingetty tty9
#10:2345:respawn:/sbin/mingetty tty10
#11:2345:respawn:/sbin/mingetty tty11
#12:2345:respawn:/sbin/mingetty tty12
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:once:/etc/X11/prefdm -nodaemon

Listagem do arquivo /etc/fstab (pontos de montagem)

/dev/hda5 / ext3 defaults 0 0


/dev/hda6 swap swap defaults 0 0
/dev/hda7 /home ext3 defaults 0 0
/dev/hda8 /usr ext3 defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0
/dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda1 /mnt/winxp vfat user,owner,exec,dev,suid,rw 1 1

DICA: No sistema Linux a maioria dos arquivos de configuração de programas/aplicações costuma


terminar com “rc” e criam diretórios que começam com “.”, que são arquivos invisíveis no sistema
Linux. Outra macete, tudo no sistema Linux é tratado como arquivo até mesmo os dispositivos de
hardware.

Equivalência nas portas de comunicação


Alguns usuários mais técnicos que estão acostumados com as portas COM do MS-DOS acham
estranho a nomenclatura usado no sistema Linux, mas é isso mesmo cada um tem a sua particularidade. Veja
o quadro seguinte a qual nos mostra os dispositivos e portas de comunicação do Linux.

MS-DOS WINDOWS LINUX DESCRIÇÃO

A: /dev/fd0 Unidade de disquete.


B: /dev/fd1 Unidade de disquete.

C: /dev/hda1 Somente uma das partições do disco rígido.

D: /dev/hdc ou /dev/cdrom Unidade de CD-ROM.

E: /dev/sda4 ou /dev/zip Unidade de zip drive.

LPT1 /dev/lp0 Impressora.


LPT2 /dev/lp1 Impressora.

LPT3 /dev/lp2 Impressora.

COM 1 /dev/cua0 ou /dev/ttyS0 Porta de comunicação 1.

COM 2 /dev/cua1 ou /dev/ttyS1 Porta de comunicação 2.


COM 3 /dev/cua2 ou /dev/ttyS2 Porta de comunicação 3.

COM 4 /dev/cua3 ou /dev/ttyS3 Porta de comunicação 4.

20
Global Sul Informática

Você percebeu aqui é diferente mas não é difícil. Por exemplo o comando dir a: lista os arquivos
do disquete em um ambiente MS-DOS/Windows e no sistema Linux poderá ser feito assim, supondo-se que o
disquete está montado: ls -ls /dev/fd0. Calma que com o decorrer da leitura do livro você vai aprender tudo
direitinho.

Equivalência de comandos
Alguns comandos do Linux são semelhantes aos do MS-DOS. Esses comandos fazem também,
coisas semelhantes, como você já sabe tem os comandos do pacote mtools e agora temos também os
comandos comuns. Mas eu já vou lhe avisando, use os comandos do Linux pois são muito mais práticos e
poderosos.
Com os comandos do sistema Linux você poderá montar shell scripts poderosos que poderão lhe
ajudar no dia-a-dia. Isso do jeito que o Linux faz o MS-DOS nunca fez e nem vai fazer e no sistema Windows
você vai ter que ter um programinha para cada coisa, ou seja vai entupir seu Windows de shareware e coisas
desse tipo e depois não vá dizer que eu não avisei. Veja no quadro seguinte alguns comandos semelhantes do
MS-DOS com Linux.

MS-DOS LINUX DESCRIÇÃO

backup tar -Mcvf Faz cópias de segurnança.

cd cd Entra e sai de diretórios.


Faz cópias de arquivos, também faz em modo
copy cp
recursivo.
del rm Apaga arquivos.

deltree rm -R Apaga arquivos em modo recursivo.

dir ls, dir, vdir ou echo Lista diretórios.

edit vi Executar um pequeno editor de arquivo texto.


fdformat, mformat, kfloppy ou
format Formatação de disquetes.
gfloppy
help man Executa a ajuda para um determinado cmando.

md mkdir Cria diretórios.

move mv Move arquivos ou renomeia arquivos (Linux).

nul null Redirecionamento nulo.


prn lpr Manda para a impressao.

rd rmdir Apagar diretórios vazios.

ren mv Renomeia arquivos (Linux).

restore tar -Mxpvf Faz restauração das cópias de segurança.

type less, more ou gless Permite ver conteudo de arquivo texto.

win starx, kde, gnome ou xdm Executa o modo gráfico do sistema.

Equivalência de redirecionamentos
Assim como no MS-DOS, o sistema Linux também permite que você mande alguma coisa para
algum lugar e isso pode ser um arquivo que poderá ser mandado para uma impressora, ou uma listagem do
comando ls que irá para um arquivos de log etc, entendeu? O Linux trata o funcionamento dos recursos de
direcionamento de entrada e saída do sistema de forma mais eficaz que o sistema MS-DOS e tem até mais
recursos.
O direcionador >
Ele simplesmente redireciona a saída de um programa, comando ou script para algum
dispositivo ou arquivo, em vez do dispositivo de saída padrão que é o seu monitor. Quando é usado com
arquivos, esse redirecionamento cria ou substitui o conteúdo do arquivo.

21
Treinamento Linux – Administração, Redes e Serviços

Vejamos um exemplo:

ls -laF /etc/rc.d/ > scriptsLocais.txt

A saída do comando ls -laF será enviada para o arquivo scriptsLocais.txt, e quando usar o
comando cat scriptsLocais.txt, verá (nesse exemplo):

total 56
drwxr-xr-x 11 root root 4096 Set 10 12:03 ./
drwxr-xr-x 60 root root 4096 Set 29 11:16 ../
drwxr-xr-x 2 root root 4096 Set 11 00:35 init.d/
-rwxr-xr-x 1 root root 2875 Fev 6 2003 rc*
-rwxr-xr-x 1 root root 785 Fev 6 2003 rc.local*
-rwxr-xr-x 1 root root 1493 Mar 26 2003 rc.sysinit*
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc0.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc1.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc2.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc3.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc4.d/
drwxr-xr-x 2 root root 4096 Set 20 21:18 rc5.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc6.d/
drwxr-xr-x 2 root root 4096 Set 10 12:03 rcS.d/

O mesmo comando pode ser redirecionado para uma segunda console, ou seja, um terminal
virtual, por exemplo /dev/tty5, assim ls -laF /etc/rc.d/ > /dev/tty5, então o resultado do comando ls -laF será
mostrado no /dev/tty5. Agora, combine CONTROL+ALT +F5 e você verá o conteúdo lá. Mas lembre-se esse
terminal deverá aceitar entradas nele.

O direcionador >>
Esse redirecionador faz a mesma coisa que o anterior, só que ele não apaga o conteúdo do
arquivo, caso esse arquivo já exista; o que ele faz é adicionar o resultado na saída do arquivo. Vejamos um
exemplo:

ls /etc/rc.d/ >> scriptsLocais.txt

A saída do comando ls será adicionada ao final do arquivo scriptsLocais.txt e quando você usar o
comando cat scriptsLocais.txt, verá (nesse exemplo):

total 56
drwxr-xr-x 11 root root 4096 Set 10 12:03 ./
drwxr-xr-x 60 root root 4096 Set 29 11:16 ../
drwxr-xr-x 2 root root 4096 Set 11 00:35 init.d/
-rwxr-xr-x 1 root root 2875 Fev 6 2003 rc*
-rwxr-xr-x 1 root root 785 Fev 6 2003 rc.local*
-rwxr-xr-x 1 root root 1493 Mar 26 2003 rc.sysinit*
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc0.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc1.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc2.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc3.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc4.d/
drwxr-xr-x 2 root root 4096 Set 20 21:18 rc5.d/
drwxr-xr-x 2 root root 4096 Set 11 00:35 rc6.d/
drwxr-xr-x 2 root root 4096 Set 10 12:03 rcS.d/
init.d
rc
rc.local
rc.sysinit
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rcS.d

22
Global Sul Informática

O direcionador <
Esse redirecionador direciona a entrada padrão de arquivo/dispositivo para um comando. Esse
comando faz o contrário do anterior, ele envia dados ao comando. Vejamos um exemplo (o resultado será o
mesmo de que cat scriptsLocais.txt):

cat < scriptsLocais.txt

O direcionador |
O pipe “|”, pronuncia-se “paipe”, também é chamado de duto, simplesmente envia a saída de um
comando para a entrada do próximo comando para continuidade do processamento. Os dados enviados são
processados pelo próximo comando, que mostrará o resultado do processamento. Vejamos uns exemplos:

locate html | more ou locate html | less


locate ‘find | grep bin/|more’

Você poderá usar mais de um comando de redirecionamento “<, >, |” em um mesmo comando
para atingir um melhor resultado.

Qual é a diferença entre o | e o > ?


É muito simples, a diferença entre o “|” e o “>” é que o pipe envolve processamento entre
comandos, pois comandos trabalham juntos para atingir um resultado, ou seja, a saída de um comando é
enviado a entrada do próximo, e o “>” redireciona a saída de um comando para um arquivo e/ou dispositivo.

O comando tee
Outro exemplo de direcionamento, o comando tee é muito interessante pois enquanto você vê o
resultado no monitor, ele já vai gerando o arquivo com a saída vista no monitor, e o comando teve deve ser
usado com o pipe “|”. Vejamos alguns exemplos:

locate html | tee todos_html.txt


tar -zxpvf teste-1.0.i386.tar.gz| tee install_teste.log

Exemplo de uso o redirecionadores


O modo mais usado de redirecionamento é quando vamos criar um log do resultado da saída de
um programa ou quando vamos imprimir um arquivo via linha de comando. Acompanhe alguns exemplos:

cat musica.mp3 >/dev/sound, cat arquivo1.txt > /dev/lp0


cat < arquivo1.doc > /dev/lp0
cat arquivo1.txt | tee /dev/lp0
car arquivo1.doc | lpr, make | tee make.log
dmesg | lpr, cat /etc/passwd | gless

Particularidades do sistema Linux


O sistema Linux é um sistema multiusuário mesmo que ele esteja instalado em um único
computador. Depois de instalado poderá ser configurado para ter mais de um IP, você poderá fazer login
várias vezes no sistema, poderá fazer ftp e telnet em você mesmo, poderá aprender a fazer invasão em você
mesmo treinando assim suas aptidões para hacker etc.
Podemos executá-lo remotamente onde o processo pesado é feito pelo servidor e é nos enviado
apenas a tela do sistema, isso é útil quando usamos micros “fracos” e servidores “parrudos”. Podemos até
mesmo imprimir remotamente pela Internet em qualquer lugar do mundo e também podemos fazer ripagem
de CD´s via Internet a partir de qualquer lugar do mundo.
Depois que você instalou o Linux e a máquina for reinicializada, você deverá escolher um
sistema operacional, acho que no seu caso você terá o Windows (95/me/xp/2000) e o Linux. Que permite
que você escolha esse sistema operacional ou é o LILO – Linux Loader ou o GRUB – Grand Unified Boot
Loader que são responsáveis pelo carregamento dos sistemas operacionais.

23
Treinamento Linux – Administração, Redes e Serviços

:: GRUB – Permite a escolha do sistema operacional.

:: LILO – Um dos mais populares, também permite a escolha do sistema.

Se você não escolher um sistema operacional que vai usar o GRUB/LILO automaticamente
poderá carregar o Linux ou o Windows dependendo de como você o configurou. Antes de você entrar no
sistema, acho que você já percebeu que aparece uma serie de informações sobre o que o Linux está fazendo.
Algumas coisas dão OK, outra PASSOU e outras FALHOU, não se preocupe com isso, pois é apenas o
reconhecimento de hardware que ele está fazendo em seu computador. Por exemplo se sua placa de rede
estiver funcionado e você configurou para ser “levantada” junto com a inicialização, o Linux testa isso e
poderá aparecer OK ou FALHOU. Se você quiser dar uma olhada nessas informações mais tarde use o
comando dmesg.

DICA: Em algumas distribuições existe um mecanismo de segurança que te alerta sobre eventuais
tentativas de entrada no sistema por intrusos usando seu login, faça um teste: entre com seu login e
digite a senha errada, na segunda vez entre com a senha correta no sistema. Na penúltima linha das
mensagens aparece uma mensagem "1 failure since last login", o que quer dizer "1 falha desde o
último login". Isto significa que alguém tentou entrar 1 vez com seu nome e senha no sistema, sem
sucesso.

Diretórios
No sistema Linux os diretório são identificados por uma “/” e não por uma “\” como acontece no
MS-DOS. Para entrar no diretório /adilson do diretório home digite o comando cd /home/adilson. Os
comandos são case-sensitive, letras maiúsculas são diferentes de letras minúsculas minúsculas. Como o
sistema Linux oferece recursos multiusuário pois ele nasceu sobre o TCP/IP, como a Internet, então você
poderá “logar” no seu sistema de qualquer parte do mundo, desde é claro que isso esteja configurado.

24
Global Sul Informática

Terminais Virtuais
Os Terminais Virtuais simulam “outro” computador, com login e tudo para isso use a
combinação de tecla CONTROL+ALT+Fn, onde n é uma das 12 teclas de função. Caso você já tenha aberto
vários terminais poderá fazer assim ATL+ð e ATL+ï para mudar rapidamente de um para outro.
Reinicializações
Para reiniciar o computador, você pode pressionar CTRL+ALT+DEL (como usuário root) ou
digitar o comando shutdown -r now. Porém é possível combinar essa combinação para fazer outras ações no
sistema Linux.
Para sair do modo gráfico e voltar ao modo texto ou voltar ao login do modo gráfico você poderá
combinar CONTROL+ALT+ BACKSPACE. Porém se você tiver uma torre ATX dessas modernas, seu
computador será desligado sem dó em menos de 1 segundo. Ou então usar a seqüência normal para desligar o
computador pelo modo gráfico ou digitar shutdown -h now e esperar o aparecimento da mensagem “Power
Down” agora mete o dedo no botão desligar do seu computador.

Como pedir ajuda no mundo Linux?


Bom, há 4 (quatro) maneiras de se pedir ajuda. Quer saber?
1. A primeira é você mesmo... faça as perguntas e se vire, corra atrás, RTFM, ou seja, leia as
páginas de manual.
2. A segunda é perguntar para seu amigo do lado ou o vizinho. :)
3. A terceira é a Internet com suas listas, chats, forums, how-to´s e minis, receitas de bolo etc.
4. A quarta é a que eu lhe aconselho pois você está lendo esse livro que foi feito pensando em
você (posso te bajular um pouquinho né?) é pedir ajuda ao sistema.
Nesse ponto o sistema Linux é bem nosso amigo sabia? É, tem ajuda para tudo, para comandos,
para configuração, para modo texto e modo gráfico, tem tutoriais e mais um monte de coisas legais que você
poderá usar. Porém, é claro, você somente terá isso se você instalar esses recursos, com páginas de manuais,
tutoriais, how-to´s etc.

Páginas de manual (man pages)


No sistema Linux, quase todos os comando tem sua página de manual, o que é um averdadeira
mão na roda pois é muito rápido o aprendizado. Também é possível redirecionar a sáida da ajuda de um
comando para um determinado arquivo, para que mais tarde possamos ler com mais calma ou quem sabe
fazer o nosso próprio resumo de comandos.
Exemplo: man cat | colcrt > cat.txt, criamos o arquivo formato texto chamado cat.txt; mais
tarde, poderemos formatá-lo do nosso jeito. Esse arquivo texto conté a saída do comando man cat, é útil se
nós estivermos fazendo uma apostila ou coisa parecida. Exemplo de ajuda com o comando man cp.

CP(1)
NOME
cp - copia arquivos e diretórios

SINOPSE
cp [opções] arquivo caminho
cp [opções] arquivo... diretório
Opções POSIX: [-fipRr]
Opções GNU (forma reduzida): [-abdfilprsuvxPR] [-S SUFFIX] [-V {num-bered,
existing,simple}][—sparse=WHEN] [—help] [—Version]
DESCRIÇÃO
cp copia arquivos (ou, opcionalmente diretórios). Você pode copiar uma arquivo
para um destino fornecido, ou copiar arbitrariamente muitos arquivos para um
diretório destino.
Se o último argumento de nome é um diretório existente, cp copia cada arquivo
origem para aquele diretório (com o mesmo nome). De outraforma, se somente dois
arquivos são fornecidos, ele copia o primeiro para o segundo. É um erro se o último
argumento não for um diretório e mais que dois argumentos serem fornecidos.
...

Para que você entenda melhor essa idéia do comando man você poderá observar que o
diretório /usr/man é diretório com a documentação do sistema (normalmente em inglês) e a documentação
de praticamente todas as distribuições está organizada dessa forma, em subdiretórios da seguinte forma:

25
Treinamento Linux – Administração, Redes e Serviços

man1: Comandos de usuário


man2: Chamadas do sistema
man3: Chamadas de bibliotecas
man4: Dispositivos
man5: Formatos de arquivo
man6: Jogos
man7: Diversos
man8: Comandos do sistema
man9: Chamadas internas do kernel
manl: Comandos SQL
mann: Comandos Tcl/Tk

Para visualizar o conteúdo da documentação pode-se usar os comandos man como nós já vimos
ou o comando groff. Por exemplo, para obter informações sobre o comando ls, usamos o comando man ls ou
então o comando groff -Tascii -man /usr/man/man1/ls.1 | less.

Outros lugares onde você encontra os arquivos de ajuda do sistema é:

/usr/man/pt_BR: É o diretório com a documentação em português do Brasil.


/usr/man/es: É o Diretório com a documentação em espanhol.
/usr/man/fr_FR: É o Diretório com a documentação em francês.

Páginas de informação (info pages)


Esse método é semelhante ao das páginas de manual, mas é usada navegação entre as páginas de
informações. Use ENTER sobre uma palavra em destaque, para que a info page carregará a ajuda necessária.
A info page é útil quando sabemos o nome do comando e queremos saber para o que ele serve.
Ajuda on-line do sistema
No sistema Linux, quando nós precisamos de ajuda para um determinado comando, fazemos
mais ou menos com no MS-DOS, ou seja, digitamos o comando com um parâmetro para ajuda, como
exemplo cat --help ou cat -h, isso vai trazer a ajuda do comando cat. Mas fique atento pois nem todos os
comandos lhe fornecerão ajuda através desse método. Você só vai saber quais são no decorrer do uso do
sistema.
Documentos HOWTO’s do sistema
Os documentos how-to´s são os documentos em formato texto, html, etc, que tem salvado muita
gente de dores de cabeça porque que nos ensinam como fazer determinada tarefa ou como um programa
funciona. Eles fornecem explicações detalhadas desde como usar o o interpretador de comandos até sobre
como funciona o modem winmodem (o que ultimamente tem sido muito procurado) ou como montar um
servidor Internet/Intranet completo.
Os HOWTO´s podem ser encontrados no diretório do projeto de documentação do GNU/Linux
(LDP) em ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/ ou traduzidos para o Português pelo LDP-BR
em http://ldp-br.conectiva.com.br//comofazer. Caso tenha optado por instalar o pacote de HOWTO's de sua
distribuição Linux – o que já vem na instalçao quando você os marca – podem ser encontrados em:
/usr/doc/how-to.
Documentação dos programas
A documetação de programas, eu acho que nem seria necessário lembrar, né gente? São os
manuais em formato .txt, .doc, .rtf, .htm e .pdf os quais ninguém lê e depois ficam que nem uns loucos (no
bom sentido, é claro) perguntando para meio mundo como que faz isso, como é que faz aquilo etc.
FAQ´s do sistema
A FAQ – são as perguntas e respostas mais freqüentes – e que são fáceis de serem entendidas. É
uma boa idéia sempre que você puder dar uma olha nas FAQ´s (desde que você as tenha instalado). Por
exemplo: — Como faço para formatar um disquete? Isso seria uma FAQ ou seria um How-to? Bom, quem
perguntou primeiro fui, então se vire? :-)
Ajuda pela internet
Agora vem o lado mais maravilhoso, ou o que uma amiga minha que também é fera em Linux
costuma falar: — “O lado sugão da força!”.
Bom, opiniões a parte, na Internet, se você quiser disciplinas e coisa séria para aprender tem um
monte de gente disposta a lhe ensinar e de “grátis”. Você tem os chats, lista de discussão, news group, enfim
um monte de lugar. Experimente usar o www.google.com.br, e digite ali uma pequena dúvida e você verá
centenas de links sobre aquele assunto. Não tem como não aprender. Também com mais de 10.000 (dez) mil

26
Global Sul Informática

servidores espalhados pelo mundo até eu. Quer algumas listas? OK! linux-br@unicamp.br, dicas-
l@unicamp.br etc .
Vá com calma na hora de assinar uma lista senão você vai boa parte de seu dia lendo a lista ao
invés de usá-la de um modo mais eficiente. Você também encontrará vasto material para pesquisa e estudos
em:

– Antispam www.antispam.org.br
– BSD LinuxIT http://bsd.linuxit.com.br
– Bytes e Artes www.byteseartes.com.br
– CIPSGA www.cipsga.org.br
– ComLinux www.comlinux.com.br
– Comunidade Linux www.comunidadelinux.com.br
– DBTH http://dbth.net
– Debian-CE www.debian-ce.org
– Dicas-L www.dicas-l.unicamp.br
– DicasLinux www.dicaslinux.com.br
– Elevador www.elevador.org
– ForumNordeste www.forumnordeste.com.br
– FreeCode BR http://freecode.linuxsecurity.com.br
– Freshmeat http://freshmeat.net
– GentooBr www.gentoobr.org
– Gildot http://gildot.org
– GuaraLinux www.guaralinux.com.br
– Guia fo hardware www.guiadohardware.net.br
– GULSAP www.gulsap.kit.net
– IGLU www.linuxiglu.cjb.net
– Linux na Rede www.linuxnarede.org
– Linux Single http://linux.novatrento.net
– Linux Today http://linuxtoday.com
– Linux Weekly News http://lwn.net
– Linux World http://linuxworld.com
– LinuxAyuda www.linuxayuda.org
– LinuxBH www.linuxbh.org
– LinuxBSD www.linuxbsd.com.br
– LinuxClube www.linuxclube.com
– LinuxDicas www.linuxdicas.com.br
– LinuxFacil www.linuxfacil.hpg.com.br
– LinuxHard http://linuxhard.webcindario.com
– LinuxInfo www.linuxinfo.com.br
– LinuxPlace www.linuxplace.com.br
– LinuxRapido www.linuxrapido.linuxdicas.com.br
– LinuxSecurity www.linuxsecurity.com.br
– OLinux www.olinux.com.br
– OpenCode www.opencode.com.br
– PontoBR http://pontobr.org
– Portal do Linux www.portaldolinux.org
– Slashdot http://slashdot.org
– UnderLinux www.underlinux.com.br
– VivaOLinux www.vivaolinux.com.br

DICA: OK! Agora você não pode falar que eu não lhe ajudei, né? Você também poderá consultar o
“The Linux Manual” de autoria do Hugo Cisneiros e o “Guia Foca GNU/Linux” de autoria do Gleydson
Mazioli da Silva em www.cipsga.org.br e também poderá acessar o rau-tu da Unicamp em www.rau-
tu.unicamp.br/linux/, aqui também você aprenderá um monte de coisas sobre o sistema Linux e por
último eu lhe indico www.guiadohardware.net do Carlos morimoto, lá você encontrará inúmeras dicas
para sair fera no sistema Linux.

Como pedir ajuda pelo modo gráfico?


Do mesmo modo que você faz pelo modo texto também poderá fazer pelo modo gráfico basta
abrir um terminal e digitar os comandos lá dentro ou então se você precisar ler um manual em pdf ou
postscript poderá usar o xpdf para ler nesse formato ou o konqueror que ao mesmo tempo é navegador de
disco, é navegador de Intermet, e é também leitor de arquivos postcript e pdf.
Dependendo de sua distribuição você poderá encontrar um pequeno utilitário chamado xman,
que nada mais é do que um leitor de man pages – páginas de manual no modo gráfico. Também pela Internet
você poderá encontrar outros utilitários feitos para esse fim, mas aí você vai ter que procurar. Caso você
encontre um legal, mande-me um email, ou então divulgue-o nas listas ou fóruns.

27
Treinamento Linux – Administração, Redes e Serviços

O método clássico de pedir ajuda do sistema Windows através do pressionamento da tecla [F1]
também existe aqui no Linux, porém não são todos os programas que têm ajuda lembre-se disso. No
ambiente KDE quando você pressiona a tecla [F1] ele abrirá uma tela padrão de ajuda, é por ela que você
pedirá ajuda para todo o sistema.
O konqueror do ambiente KDE tem mil e uma utilidades permite abrir uma série de formatos de
arquivos e tem suporte parea vários tipos de plug-ins.
O KDE possui um ótimo sistema de ajuda, semelhante ao do Windows, mas para usá-lo por
completo você precisará instalar a documentçaõ dos programas, as páginas de manual etc. Pois o que ele faz é
ler tudo isso para dentro do sistema de ajuda dele. Experimente abri um aplicativo do KDE e depois pressiona
F1 ou use o menu para pedir ajuda.
Você vai perceber que ele não está todo em português por o sistema de ajuda de alguns
programas está en Inglês, entendeu?
O Konqueror é o principal gerenciador de arquivos do Linux ele pode ainda ser usado como
leitor de man-pages e páginas info. Para isso basta digitar na barra de localização do Konqueror a palavra-
chave man: seguida do nome da página de manual que você quer buscar. O Konqueror irá mostrando as
opções disponíveis à medida que você for digitando o nome. De maneira semelhante você pode visualizar
páginas info dentro do Konqueror. Apenas troque a palavra-chave por info: e informe a página info que
deseja.
A vantagem de utilizar o Konqueror para visualizar essas páginas é que ele apresenta as páginas
em cores e facilita a navegação entre elas.
O konqueror também poderá fazer busca para você usando mecanismos de ferramentas de busca
na Internet. As principais palavras-chave que já vêm junto com o Konqueror são:

1. av: Para o AltaVista


2. gg / google: Para o Google
3. dj / deja: Para o Deja
4. lycos / ly: Para o Lycos
5. seek: Para o Go.com

Para isso basta digitar por exemplo: av:linux tutoriais quando você estiver conectado a Internet
que será feita uma busca por “linux tutoriais” usando o mecanismo do AltaVista.

Criação de um banco de dados para obter ajuda do sistema


Como já estamos sabendo, o sistema Linux é bastante versátil quando quer nos ajudar, mas nós
também precisamos fazer a nossa parte, e isso quer dizer que, para alguns casos, deveremos criar um banco
de dados para que o sistema Linux faça pesquisa nesse banco de dados a fim de nos fornecer as informações
de que precisamos. O primeiro comando que deveremos usar depois que nossa instalação de um sistema
Linux está instalado é o comando updatedb. Esse comando atualiza um banco de dados que contém o local e
o nome de todos os arquivos em seu sistema.
Esse comando ainda poderá criar o banco de dados dos seus arquivos locais e/ou remotos,
porém tome cuidado se você for usá-lo em rede com compartilhamentos, pois o seu banco de dados poderá
ficar gigantesco e nem sempre (é raro) você precisará ter esse gigantesco banco de dados. Lembre-se também
de que a sua partição Windows local também não é interessante estar cadastrada em seu banco de dados, pois
raramente você precisará via Linux encontrar um arquivo na partição do seus Windows local.
Caso isso venha a ocorrer, nada melhor que o bom e velho comando find para ajudá-lo.
Você deverá usar o comando df para saber quais são os pontos de montagem ativos no sistema e
saber qual deverá entrar ou não em seu banco de dados. Uso do comando df sem argumentos e com os
pontos de montagem:

# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 1510032 441328 991996 31% /
/dev/hda7 248895 37763 198282 16% /home
/dev/hda8 7495052 1522064 5592252 22% /usr
/dev/hda1 20472816 4957632 15515184 25% /mnt/winxp

O que percebemos aqui é que os pontos de montagem: /mnt/floppy, /mnt/cdrom, /mnt/winxp


etc, pela lógica, não devem ser incluídos nesse banco de dados. Então, como é que poderemos evitar isso?
Simples, use assim:

28
Global Sul Informática

# updatedb --prunepaths=“/mnt/floppy,/mnt/cdrom”

Mas isso é se esses pontos de montagem estão montados, caso contrário não será preciso. O
argumento “--prunepaths” é usado para os diretórios que não deverão ser incluídos. O padrão é /tmp,
/usr/tmp, /var/tmp. Já o argumento “--netpaths” é usado para os diretórios de rede (NFS, AFS, RFS etc) que
deverão ser incluídos. E, por final, o argumento “ --output=dbfile” refere-se ao arquivo de base de dados que
você quer construir como arquivo alternativo. O padrão usado é /usr/local/var/locatedb.
Caso você queira personalizar um pouco esse método de pesquisa poderá alterar o arquivo /etc/
updatedb.conf que é responsável por algumas configyrações. Veja a listagem do conteúdo desse arquivo:

# Onde começar a base de dados.


FROM="/"

# Quais diretórios serão excluidos.


# O /home e /root são automaticamente exluidos.
PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt"

# Nivel de segurança:
# 0 Checagem de segurança desativado,
# assim a pesquisa é mais rápioda.
# 1 Checagem de segurança ativado. Esse é o padrão.
SECURITY="1"

# Modo verbose ativado (YES) ou desativado (NO).


VERBOSE="YES"

# Local que será gavado o banco de dados.


DATABASE="/var/lib/slocate/slocate.db"
# Quais sistemas de arquivos serão escluidos da pesquisa?
PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount,
vfat,iso9660,udf,usbdevfs,devfs"

Bom, depois de tudo isso, agora você poderá usar o comando: locate para encontrar os arquivos
sobre os quais deseja obter informações (caminho, documentos, manuais e compartilhamento). Veja o
exemplo de localização da ocorrência do comando locate:

# locate locate
/usr/bin/locate
/usr/bin/slocate
/usr/share/doc/HTML/en/kcontrol/kcmlocate.docbook
/usr/share/man/pt_BR/man1/locate.1.gz
/usr/share/man/pt_BR/man1/slocate.1.gz
/usr/share/man/man1/locate.1.gz
/usr/share/man/man1/slocate.1.gz
/usr/share/man/man5/relocated.5.gz
/usr/share/man/es/man5/locatedb.5.gz
/usr/share/gnome/help/gsearchtool/C/figures/locate.png
/usr/share/gnome/help/gsearchtool/C/locate.html
/usr/share/gnome/help/gsearchtool/es/figures/locate.png
/usr/share/gnome/help/gsearchtool/es/locate.html
/usr/share/gnome/help/gsearchtool/it/figures/locate.png
/usr/share/gnome/help/gsearchtool/it/locate.html
/etc/cron.daily/slocate
/etc/postfix/relocated
/var/lib/slocate
/var/lib/slocate/slocate.db
/var/lib/slocate/slocate.db.tmp
/var/www/default/manual/mod/mod_php4/function.imagecolorallocate.html
/var/www/default/manual/mod/mod_php4/function.imagecolordeallocate.html

A grande vantagem é que a pesquisa não é feita em seu disco rígido, e sim no arquivo de base de
dados, o que é extremamente veloz.
Ok! No entanto, isso não é tudo. Nós já sabemos que o comando man permite acessar ao
manuais do sistema, acabamos de aprender a importância da dupla updatedb e locate, porém se não
soubermos o nome certo de um comando para pedirmos ajuda estaremos com problemas.

29
Treinamento Linux – Administração, Redes e Serviços

Então, para isso vamos aprender mais três comandos:

1. makewhatis: Cria um arquivo de dado para ser usado pelo whatis.


2. apropos: Pesquisa base de dados por descrição de função.
3. whatis: Pesquisa base de dados.

Suponhamos a seguinte situação, na qual você quer saber quais são os comando/programas que
executam a tarefa de compilação em seu sistema. Proceda então da seguinte maneira:

# makewhatis
# apropos compiler
cccp (1) - The GNU C-Compatible Compiler Preprocessor
cccp [cpp] (1) - The GNU C-Compatible Compiler Preprocessor
compile_et (1) - error table compiler
cpp (1) - The GNU C-Compatible Compiler Preprocessor
cpp [cccp] (1) - The GNU C-Compatible Compiler Preprocessor
g++ [gcc] (1) - GNU project C and C++ Compiler (gcc - 2.95)
gcc (1) - GNU project C and C++ Compiler (gcc - 2.95)
tic (1m) - the terminfo entry-description compiler

Analizando o resultado acima: o comando makewhatis criou a base de dados (semelhante ao


comando man -k) e depois usamos o comando apropos compiler para saber quais são, então os
comandos/programas que executam a tarefa de compilação. Veja outro exemplo:

# apropos tcl
catclose [catopen] (3)- open/close a message catalog
setclock (8)- sets the hardware clock from the system clock
tclsh (1)- Simple shell containing Tcl interpreter

Experimente agora usar o comando: apropos copy e você receberá uma lista com vários
comandos/programas que trabalham com cópias em seu sistema; compare com o comando whatis cp. O
primeiro comando exibe uma lista enorme, e o segundo simplesmente o informará o que faz o comando cp.
Compare também o resultado dos comandos: apropos gimp e whatis gimp.
Se preferir, crie dois arquivos textos (“gimp-apropos.txt” e “gimp-whatis.txt”) e depois rode o
comando diff sobre eles (diff gimp-apropos.txt gimp-whatis.txt) para comparar quais são as diferenças entre
esses arquivos. Para finalizar, vamos aprender mais dois comandos muito úteis:

1. whereis: Encontra arquivos binários, fonte e man page de um comando.


2. file: Informa o tipo de um arquivo.

Vejamos os seguintes exemplo:

# whereis cp
cp: /bin/cp /usr/share/man/man1/cp.1.gz

# file /bin/cp
/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
(uses shared libs), stripped

No primeiro exemplo com o comando whereis cp, nós encontramos o executável (binário) cp e
os arquivos de páginas de manual (man page). No segundo exemplo com comando: file /bin/cp, descobrimos
que ele é um ELF (executável padrão Linux) e outras informações.
Veja mais um exemplo:

# file /var/www/icons/world2.png
/var/www/icons/world2.png: PNG image data, 20 x 22, 4-bit colormap, non-interlaced

Aqui descobrimos que o arquivo “world2.png” é uma imagem .png verdadeira, em tamanho de
20 x 22 pixels que usa 4 bit de cor. Bom, agora você não tem mais desculpas, meu querido amigo leitor; deixe
essa timidez de lado e saia pelo sistema afora (ou seria adentro?) pedindo ajuda para aprender mais.

30
Global Sul Informática

Semelhanças do Windows com o Linux


Para aqueles usuários que estão acostumados com o ambiente Windows e sempre vêem a
mesma cara desse ambiente e quando, no máximo, colocam alguns temas para melhorar a aparência do seu
desktop, vão se sentir em casa quando estiverem usando o modo gráfico do Linux com “um milhão” de
vantagens. Imagine se o prompt (modo console) do Linux é muito mais poderoso, quem diria do ambiente
gráfico, que na verdade existem vários ambientes para todos os tipos e gostos de usuários e também para
micros menos potentes e micros parrudos.
Ele tem interface gráfica que roda até em AT-386 com 4 mb de RAM, é mole? Mas há interfaces
que você vai precisar de um computador com bastante memória.

:: A Área de trabalho do Windows.

:: A Área de trabalho do Linux (Gnome)

31
Treinamento Linux – Administração, Redes e Serviços

Acreditem ou não, meu computador tem 1 GB de RAM e algumas vezes aparece uma mensagem
no Windows informado que meu sistema não tem mais recursos e está sem memória, é mole? Em contra
partida meu outro micro é um modesto K6II com 64 mb de RAM nunca faltou memória no Linux com ele e
eu uso um monte de coisas, é telnet daqui, é ftp dali, é mp3 acolá e o “micrinho” vai que vai.
Mas o que importa é que a partir de um 386, você poderá ter o sistema Linux com modo gráfico
e tudo; agora diga-me se é possível instalar o Windows 98 em um 386 com 4 mb de RAM? Então, agora você
que começou a ler este livro já deve estar pensando como deve ser poderoso e gostoso de usar um sistema
operacional que nos dá tantas possibilidades desse jeito.
E isso ainda não é tudo. É possível usar o sistema Linux em micros sem disco rígido. Como
assim? Há distribuições que cabem em apenas alguns disquetes ou em apenas um disquete e isso, só para
começar, vem até com modo gráfico. Mas calma lá, é claro que o modo gráfico não é um presente, porém é
um modo gráfico simples que vai servir para que o usuário possa trabalhar e executar programas simples que
estão no disquete.
Logo, se o usuário precisar de programas complexos, essas mini distribuições também garantem
suporte a rede e o usuário terá todo o poder que um micro com o sistema Linux completo pode fazer.
Por exemplo, vamos supor que um usuário qualquer precise executar o programa gimp
(semelhante ao Adobe PhotoShop, só que é gratuito e vem no CD-ROM do sistema) para trabalhar com
imagens mas não tem o gimp no disquete, ele poderá perfeitamente compartilhar o programa com uma outra
máquina conectada em rede e então executar o gimp.
Bom, entre os dois sistemas há muitas semelhanças úteis mas quando as vantagens começam a
aparecer o Linux leva vantagem pois nós já sabemos que ele e seus inúmeros aplicativos são desenvolvidos
para resolver as necessidades dos usuários e não como mais um produto numa prateleira de livraria,
entendeu?
Quer um bom começo para saber do que eu estou lhe falando? Você que usa o ambiente
Windows, toda hora está usando o Windows Explorer, o qual também sabemos que mudou muito e está bem
melhor o seu uso.

:: Windows Explorer, gerenciador de arquivos do Windows.

No entanto a partir do momento que você começar a usar o Linux em modo gráfico com a
interface KDE pode exemplo, vai perceber que a filosofia básica de se trabalhar com janelas é a mesma,
porém o Linux apresenta algumas vantagens como por exemplo um simples papel parede ele não precisa
obrigatoriamente se copiado para seu computador, você pode usar um papel de parede remoto o qual pode
estar localizado na sua rede ou na Internet.
O gerenciador de arquivos tem 1001 (mil e uma) utilidades. Com ele podemos gerenciar arquivos
locais e remotos, podemos fazer ftp, podemos ler arquivos html e XML, navegar na Internet, ouvir músicas,
assistir filmes e copiar até CD´s e DVD´s.
Com o Konqueror podemos trabalhar com nossas pastas com a filosofia de abas, o que torna-se
muito mais produtivos quando precisamos navegar por várias pastas para consultas de arquivos. Temos
também um mini shell nele onde podemos digitar nossos comandos tendo como acompanhamento a
visualização das pastas acima. E ainda no caso do KDE podemo configurá-lo para trabalhar como a filosofia
do Mac OS com a “mutante” de menu no topo da tela.

32
Global Sul Informática

:: Konqueror (KDE), um dos melhores utilitários do sistema.

Os gerenciadores de janelas do Linux


A ambiente gráfico no sistema Linux, é chamado de “X” ou “X11”, e/ou X Window. Pelo amor de
Deus, esse “Window” aí é porque trabalha-se com janelas, viu? Não vá me falar: — “Ah! Então é igual ao
Windows”. Por favor não ofenda o Linux de jeito, ele não lhe fez nada, aliá ele poderá fazer tudo para você.
Então o que é esse tal de X Window? Simples, ele é um sistema gráfico de janelas que roda em
uma grande faixa de computadores, máquinas gráficas e diferentes tipos de máquinas e plataformas Unix e
entenda aqui, Linux. Ele pode tanto ser executado em máquinas locais como remotas através de conexão em
rede.
Uma coisa muito interessante de ser feita e que fica muito legal é que também você poderá
impressionar os seus amigos é a seguinte: Executar o modo gráfico usando dois monitores simultaneamente,
assim o seu Firefox poderá ficar no monitor direito e os seus trabalhos ficarão no monitor esquerdo, e você
passa de um para o outro simplesmente arrastando o mouse para o canto da tela. O Windows não faz isso,
pois ele é um gerenciador local de janelas e nem mesmo é servidor de modo gráfico, já começa por aí. Até o
modo gráfico do Linux já nasceu como servidor.
AfterStep
Baseado no FVWM, o Afterstep junta características de vários gerenciadores, como, por
exemplo, a área dock do Window Maker, e é totalmente configurável e possui excelentes temas que você
poderá baixar livremente da Internet para a sua estação de trabalho.
Como o GNOME, possui um monte de temas que, bem escolhidos, podem deixá-lo com um
visual muito bonito. Caso você queira a criar temas para o AfterStep veja em www.themes.org e procure por
script do AfterStep Também é um gerenciador muito leve e rápido. O gerenciador de janelas Wiundow Maker
teve seu inicio inspirado no Aftaer Step e depois tomou outro rumo para ter sua própria filosofia de
gerenciamento.
BlackBox
A grande preocupação dos desenvolvedores dessa interface é a minimização do uso dos recursos
da máquina, fornecendo assim uma interface simples e rápida, que suporta também aplicativos do KDE. Por
incrível que pareça, ela gasta menos de 1 mb de memória. É extremamente veloz e todos os programas têm
um ganho de performance incrível com esta interface.
O Black Box é ideal para você usar em redes com micros não muito potentes, pois como ele é
leve, todas as aplicações serão carregadas e execuradas mais rapidamente, além do mais existem temas muito
bonitos para ele que você pode baixar da Internet e depois é só configurar as máquinas e tudo ficará lindo e
maravilhoso.
Enlightenment
Compatível com o GNOME e com o KDE, este gerenciador possui muitas funcionalidades que
agradam aos usuários em geral: configuração de teclas de atalho e de área de trabalho, ferramenta de dicas,
suporte a temas, enfim, ele pode ser totalmente configurável. O Enlightenment em sua última versão tem se
mostrado mais ágil e mais rápido em seu carregamento além de inúmeros “epplets”, semelhantes a
aplicativos que são executados como ícones e que devolve informações na tela quando clicados.
O Enlightenment é o gerenciador de janelas mais bonito que existe para o sistema Linux, quando
bem escolhido um tema, é claro. A criação de temas para o Enlightenment é considerada difícil ou trabalhosa

33
Treinamento Linux – Administração, Redes e Serviços

por quem cria temas no Window Maker, pois com o Enlightenment você pode definir tudo e todos os
compenente de uma janelas e não o que é padrão.
Gnome
GNOME é a sigla de "GNU Network Object Model Environment" (em português, Ambiente GNU
de Modelos de Objeto de Rede). O Gnome é um sistema compatível com muitos gerenciadores de janelas,
muito favorável para os usuários que já se sentem à vontade com interfaces gráficas.
O ambiente possui painéis, barra de tarefas e menus que ajudam o usuário a entrar no mundo
Linux. Atualmente, o Gnome é uma interface que está em grande desenvolvimento. Existe um grande número
de pessoas trabalhando com ele, construindo novas aplicações e deixando o seu ambiente cada vez melhor.
Além disso, muitas empresas estão apostando nele por ser de livre distribuição, estável e possuir uma estética
muito boa.
Bom, como podemos ver, é muito fácil chegarmos à conclusão de que com tantas opções de
ambientes gráficos e para todos os tipos de máquinas e usuários o Linux tem uma enorme vantagem sobre o
Windows; questão agora é apenas de tempo para que ocorra uma migração em massa para a plataforma
Linux.
Window Maker
O Window Maker é um gerenciador de janelas leve e versátil, com muitas funcionalidades que
fazem dele um ambiente de trabalho muito prático. Sua interface é única, diferente das outras que serão
mostradas, mas nem por isso deixa de ser interessante.
Por ser um ambiente menos carregado e sem muitos detalhes gráficos, existe a possibilidade de
que um hardware com menos recursos possa executá-lo sem problemas. Foi desenvolvido por Alfredo
Kojima, um brasileiro. É o gerenciador de janelas o qual é o mais fácil de criar temas, pois é tudo feito pelo
modo gráfico onde você informa quais são as imagens, cores, texturas, fontes etc. Se você for criativo, fará
temas maravilhosos.
KDE
O gerenciador de janelas KDE (K Desktop Environment) é muito poderoso, intuitivo, fácil de
utilizar e possui inúmeros recursos gráficos, funcionalidades e facilidades para o usuário, além de uma gama
de aplicativos escritos para ele.
Agora, a tendência é que cresça mais ainda essa gama de aplicativos que está sendo desenvolvida
para ele, além da distribuição do KDE, pelo simples motivo de que a biblioteca na qual se baseia o KDE foi
liberada sob a licença GPL, o que permite a livre divulgação do código-fonte. O KDE tabém é maravilhoso
quando falamos de temas, existem temas espetaculares para ele, verdadeiras obras de arte. Alguns temas
deixam o KDE semelhante a um Mac OS X ou Windows XP (argh!!!).
Criar temas para o KDE não é tão simples e fácil como para o Window Maker, mas se você
procurar com calma, poderá encontrar na Internet uns How-to´s que ensinam como criar temas e você
também poderá encontrar aplicativos para esse fim.
Ultimamente o ambiente KDE junto com o Gnome é um dos que mais tem adicionado
funcionalidades ao asistema, e a tendência que ele fique cada vez mais poderoro e fácil de ser usado em
desktops. A cada versão nova dele, ele nos supreende cada vez mais. Exeprimente usar o konqueror para
navegar localmente e também na Internet e você vai descobrir umas funcionalidades e acho que você não vai
querer usar outro navegador.
XFCE
Projetada tanto para sistemas Linux como para sistemas UNIX, esta interface é baseada em
GTK, uma ferramenta de programação que é muito utilizada atualmente e adotada em várias aplicações. O
XFCE possui várias ferramentas para a configuração do sistema, como, por exemplo, o XFMouse para a
configuração do mouse e o XFGNOME, que consiste no módulo para a configuração da interação com o
GNOME.
O XFCE em principio é simples pois ele implementa uma barra de tarefas bem semelhante ao
sistema OS/2 da IBM de uns anos atrás e essa barra também pode ser chamada de dentro de outro
gerenciador de janelas. Mas além de ser uma simples barra de tarefas, se você souber usar vai descobri que
essa barrá é muito interessante e mais ainda quando você descobrir que o XFCE pode também ser um
gerenciador de janelas super leve e rápido que pode substituir os outros gerenciadores os quais são também
leves mas não apresentam um visual agradável ao nossos olhos. Essa idéia você poderá usar quando estiver
trabalhando com VNC, ao invés de usar o fvwm ou mwm que tal usar o XFCE.
Outros gerenciadores
Se você fizer uma pesquisa na Internet vai perceber que existe muito mais gerenciadores de
janelas para o sistema Linux e a cada dia alguém desenvolve mais mesmo que apenas para projetos
acadêmicos. Se você instalar todos os gerenciadores que vem no repositório do Fedora vai encontrar uns dez.

34
Global Sul Informática

Existem outros como o MacWM que é bem semelhante ao System 7.5 da Apples e tem atmbém o MacOS que
é semelhante e muito bonito pois se parece como Jaguar, sistema dos Mac novos da Apple.
Tem também um gerenciador que se parece com o gerenciador de janelas dos micros Amiga.
Entre os demais nós temos: fvwm 1, 2 e fvwm95, mwm, qvwm, flubox, blackbox, lite step, amigawm, etc.
Lembre-se que alguns gerenciadores estão no formato rpm mas outros você precisará compilar e também ter
suas bibliotecas atualizadas.
Gerenciadores abertos simultaneamente
É possível abrir duas interfaces gráficas diferentes ao mesmo tempo, apenas combine
CONTROL+ALT+F2 e completando com o usuário e a senha requeridos. Depois disso, basta digitar o
seguinte na linha de comando:

<nome_da_interface> -- :1

Onde <nome_da_interface> é a linha de inicialização do ambiente gráfico e “-- :1” é um display


livre que poderá ser usado.
Por exemplo, vamos supor que você já esteja com o ambiente KDE aberto e deseja inicializar o
Window Maker. Basta, então, digitar: startx -- :1, que irá abrir o Window Maker como segundo ambiente.
Lembre-se de que o KDE continua aberto e para acessá-lo basta combinar CONTROL+ALT+F7.
Exemplo:

# kde -- :1 --> Carrega o ambiente KDE no Display 1.


# gnome -- :2 --> Carrega o ambiente Gnome no Display 2.
# startx -- :1 --> Carrega a interface gráfica que estiver em .xinitrc.

DICA: Dentro do arquivo .xinitrc, antes do carregamento do ambiente gráfico, um comando por linha
seguido de “&” fará com que o comando/programa abrá automaticamente dentro do ambiente gráfico
na hora do carregamento.

Então, se você quer abrir um terminal e depois o gimp, observe o exemplo abaixo:

# Arquivo .xinitrc
#(depois é só digitar startx para carregar o WindowMaker)
exec xterm &
exec gimp &
exec wmaker

O que nós chamamos de servidor X é o programa que controla a exibição dos gráficos na tela,
mouse e teclado. Ele se comunica com os programas cliente através de diversos métodos de comunicação. E o
gerenciador de Janelas – Window Manager – é o programa que controla a aparência da aplicação. Os
gerenciadores de janelas são programas que atuam entre o servidor X e a aplicação. Você pode alternar de um
gerenciador para outro sem fechar seus aplicativos.

Semelhanças de aplicativos nativos


Assim como o Windows tem o seus programas o Linux também tem os seus programas, veja a
relação deles aqui, começando pelo Windows:

Windows Linux
Agente de sistema cron, kron
Bate-papo kopete, gaim, kicq, gicq
Bloco de nota kwrite, kate, kedit, gedit
Calculadora kcal, xcalc, gnome-calculator
Internet Explorer konqueror, firefox, galeon
Mixer aumix, kmix, gmix

35
Treinamento Linux – Administração, Redes e Serviços

Outlook kmail, mutt, qmail, exim, pine


Painel de controle gnome-controlcenter, kcontrol
Paint kpaint, kvio, gpaint
Telnet, ftp ktelnet, telnet, ftp, tftp, wget
Windows Explorer konqueror, gmc, mc, nautilus
Windows Media Player xine, mplayer, xmmsx, kaffeine
MS Office StarOffice, OpenOffice, KOffice, GnomeOffice
PhotoShop gimp

Atalhos links simbólicos


Nos sistemas Unixes/Linux, existe um tipo de arquivo que não existe no MS-DOS, o link
simbólico. Ele pode funcionar como um redirecionador para um arquivo ou um diretório e pode ser usado em
arquivos ou diretórios também. É similar aos atalhos do Windows. Exemplo de links simbólicos: /usr/X11,
que redireciona para /usr/X11R6; /dev/modem, que redireciona para /dev/cua0 ou /dev/cua1 ou /dev/ttyS1
ou /dev/ttyS2.
Para criarmos um link simbólico, também conhecido como soft link, usaremos o comando ln, o
que permite a criação de ligações entre arquivos: hard links e soft links. Um Exemplo para criar um link entre
a porta serial e o modem seria o comando ln -s /dev/ttyS1 /dev/modem.

Exemplo para criar um link chamado TEMA que o levará no diretório de temas do Window
Maker quando você usar o comando cd TEMA.

# ln -s /root/GNUstep/Library/Windomaker/Themes /bin/TEMA

Os links simbólicos são importantes principalmente na hora de compilar o kernel do sistema,


isso você vai aprender quando estiver o capítulo de compilação do kernel.

Processos e serviços em segundo plano


Quando você executa um comando ou aplicativo qualquer, ele é executados em alguma parte da
memória que no momento não nos interessa. O que importa aqui é que o sistema Linux cria um identificador
para aquele comando ou programa que está em execução e sendo assim cada comando ou programa tem um
identificador único e a vantagem disso é que o kernel do sistema precisa disso para executá-lo no seu
processador.
Outra vantagem é que, sabendo qual é o identificador do processo de um comando ou programa,
caso esse venha a ficar instável e/ou travar, sim alguns programas travam no sistema Linux MAS não o
sistema Linux, entendeu?
Então se um programa travar, nós poderemos matá-lo (quanta violência, não?) se soubermos
qual o é o seu processo (daemon) através do comando kill -9 <PID_do_programa>, onde o PID – Process
Identifier, ou seja, o código numérico que identifica um processo qualquer.
No Windows NT, 2000 e XP podemos acessar nossos processos com a combinação
CONTROL+ALT+DEL e vê-los na aba Processos.
O que é segundo plano?
No sistema Linux existe o conceito de que podemos colocar um processo demorado executando
em segundo plano e continuar nosso trabalho sem ter que ficar esperando que o processo termine. Que tal
uma enorme fila de impressão, hein?
Como colocar o processo em segundo e primeiro planos?
Colocar o processo em segundo plano significa que o kernel irá executar esse processo sem que
haja a intervenção direta do usuário; por exemplo, uma compactação demorada pode ser colocada em
segundo plano para finalizar sem ficar ocupando um terminal. O processo da compactação é desvinculado do
terminal, deixando-o livre para executar outros comandos. Isso é muito útil quando estamos usando apenas
uma tty (modo console) ou apenas um terminal.
Ao final da compactação, a mensagem de término de processo é exibida no terminal, indicando
que o processo terminou. Veja um pequeno exemplo:

36
Global Sul Informática

# updatedb &
[1] 5852

# jobs
[1]+ Running updatedb &

# jobs
[1]+ Done updatedb

No exemplo anterior, o comando updatedb & foi executado, mas ele está rodando em segundo
plano o qual nós podemos constatar isso com o comando jobs, que informa quantos processos estão sendo
executado (Running) em segundo plano e qual é o seu PID, depois de um certo tempo, o comando jobs foi
executado e podemos perceber o processo terminou (Done). Você percebeu que para colocar um processo em
segundo plano basta acrescentar o símbolo “&” ao final da linha do comando que deseja executar em segundo
plano.
Caso você queira uma relação dos processo em sua máquina, use o comando ps que fornece uma
imagem dos processos atuais. Caso se deseje uma atualização repetitiva da situação, deve-se usar o comando
top. Esta página de manual documenta a versão baseada no sistema de arquivos /proc do comando ps. Veja
um pequeno exemplo:

# ps a
PID TTY STAT TIME COMMAND
5832 pts/2 S 0:00 -bash
5847 pts/2 S 0:00 su
5848 pts/2 S 0:00 bash
5977 pts/2 R 0:00 ps a

A combinação CONTROL+Z leva um processo para o segundo plano e a combinação


CONTROL+C, de dentro de um terminal mata um processo. Experimente abrir um terminal e executar o
Gimp, você vai perceber que não é mais possível usar o terminal pois o Gimp foi executado a partir dele,
agora faça um CONTROL+C e o Gimp será encerrado; viu nada de CONTROL+ ALT+ DELETE, certo?

DICA: Você poderá visualizar melhor os processos em sua máquina com os comandos ps, pstree, top,
ktop, gtop, kpm, gnome-system-monitor e outros que você poderá adquirir pela Internet. A vantagem
de você visualisar um processo pelo modo gráfico é que é muito mais simples você interagir como os
processos como: parar, elevar e até mesmo matar. Em algumas distribuições, existe um pequeno
utilitário chamado de xkill que nada mais é do um programa que quando você o executa e depois clica
sobre a janela de um outro programa, ele simplesmente mata o programa sem dó.

Outros comandos relacionados aos processos são fg (ForeGround) – primeiro plano, que eleva
um processo para o primeiro plano, e o bg (BackGround) – segundo plano, que leva um processo para o
segundo plano. Exemplos:

# fg gimp
# bg gimp

Uma outra coisa interessante que o shell nos permite é a pausa em um comando através da tecla
SCROLL LOCK. Experimente usar o comando ls / -R, o qual irá listar recursivamente todos os arquivos de
seu sistema; assim que você o fizer, pressione a tecla SCROLL LOCK e automaticamente o shell interromperá
(pausa) temporariamente o comando. Para voltar, pressione novamente a tecla.
Como automatizar processos?
Para automatizar processos é muito simples você poderá adicioná-los no seu arquivo
/etc/rc.d/rc ou /etc/rc.d/rc.local ou /etc/rc.d/rc.sysinit onde cada um servirá para um proposito. O mais
comum é o primeiro que “levanta” os processos/scripts na inicialização. O segundo tem a finalidade de
mostrar o logotipo em modo texto do pingüim do Linux. O terceiro contem io caminho e funções para
processos/scripts do sistema.
Os processos de níveis de execução você poderá controlar usando o ksysv. É possível definir
processos para todos os 6 (seis) níveis (runlevel).
Você também poderá usar o utilitário ntsysv para informar qual processo (daemon) quer que
seja inicializado com o sistema na próxima vez. Exemplo: gpm (mouse), samba (Servidor samba), httpd

37
Treinamento Linux – Administração, Redes e Serviços

(Servidor web) etc. Também poderá usar o ksysv conforme já vimos, que é do ambiente KDE que é muito
interessante pois podemos habilitar/desabilitar ois processos que queremos para cada nivel de execução
(runlevel) do sistema.
Para saber em qual runlevel você está trabalhando digite o comando runlevel e para gerenciar
poderemos usar o comando chkconfig.

38
Global Sul Informática

Anotações:

39
Treinamento Linux – Administração, Redes e Serviços

Anotações:

40
Global Sul Informática

Capítulo 2

Filosofia Linux
Bom meu querido leitor, acredito que até aqui você já tenha absorvido uma gama enorme de
conhecimentos. Então agora, nós vamos começar a entender um como é que funciona o sistema Linux, vamos
começar aprendendo algumas coisa pelo modo texto e daí nós vamos avançado e então falaremos do modo
gráfico. Porém, com um pouco mais de paciência, vamos fazer as configurações iniciais. As configurações
iniciais servirão para criarmos discos de inicialização quando assim, for necessário.
Antes de começarmos a trabalhar com os mais diversos tipos de configurações, vamos aprender
com o que se faz para criar disquetes de inicialização1, podemos criar pelo Windows e também pelo Linux.
Ambos os procedimentos são muito fáceis de aprender.

Criando disquetes de inicialização


Quando nós vamos ter o primeiro contato com o Linux, é necessário algumas vezes criar ou
recriar o disquete de inicialização ou o suplementar, a partir de um arquivo imagem. Como o nome indica,
um arquivo imagem é aquele que contém uma cópia exata (ou imagem) do conteúdo do disquete.
Como o disquete contém informações do sistema de arquivos, além dos dados contidos nos
arquivos, o arquivo de imagem não é útil até que seja gravado em um disquete. Para criar os discos de
instalação e inicialização e suplementar, são necessários (ou não) dois discos vazios, formatados, de alta
densidade (1.44 Mb), 31/2” polegadas.
As imagens dos discos estão localizadas no diretório /imagens no CD de sua distribuição Linux
ou no site FTP de onde a instalação esteja ocorrendo.

Gerando discos sob MS-DOS


Para gerar os discos sob o MS-DOS, pode-se executar o utilitário rawrite incluído no CD da
maioria das distribuições Linux, no diretório dosutils. Inicialmente nomeie um disco formatado com o nome
de “disco de inicialização” ou algo similar e insira na unidade. Em seguida, execute os seguintes comandos
(presumindo que o seu CD seja o drive d:):

rawwrite <enter> /images/boot.img <enter> A: <enter>

O utilitário inicialmente solicitará o nome do arquivo do disco imagem, onde deverá ser
informado boot.img (o nome pode variar). Em seguida, solicitará o dispositivo de gravação, onde deverá ser
informado A: <ENTER>. Agora é só esperar um pouco que o disco de inicialização estará pronto para ser
usado em qualquer micro que não suporte o boot direto pelo CD-ROM, geralmente BIOS mais antigas.

Gerando discos sob o Windows


Algumas distribuições trazem o rawwritewin, que é muito mais prático para a geração de discos
de inicialização no sistema Linux.
Nesse caso você deverá informar qual é o arquivo de imagem para escrita (write), esse arquivo
geralmente está em d:\images\, mas pode ter alguma variação dependendo de sua distribuição. Você percebe
que tem vários outros tipos de arquivos imagem, o bootnet.img é para você efetuar uma instalação via rede.

Gerando discos a partir do Linux


Para gerar os discos a partir do Linux, é necessário que se tenha permissão de gravação no
dispositivo /dev/fd0 (a unidade de disco flexível). Inicialmente, nomeie um disco formatado de 31/2” com o
nome de “disco de inicialização” ou algo similar e insira na unidade (não é necessário montar a unidade de

41
Treinamento Linux – Administração, Redes e Serviços

disquete). Se for necessário, monte o CD de sua distribuição e vá para o diretório /images ou algo semelhante
e execute o seguinte comando:

# dd if=boot.img of=/dev/fd0 bs=1440k

DICA: O “#” significa que você está no prompt do Linux logado com usuário root (Administrador). O
“$” significa que você está no prompt do Linux logado com usuário comum.

Se for necessário, em algumas distribuições, para gerar o disco suplementar (o nome do arquivo
para disco suplementar poderá variar, e varia de acordo com sua distribuição); se for necessário, etiquete um
segundo disco com a inscrição disco suplementar, insira na unidade de disco flexível e execute o seguinte
comando:

# dd if=supp.img of=/dev/fd0 bs=1440k

Pronto, isso já o suficiente para que você possa iniciar uma instalação do sistema Linux, mas não
se esqueça de configurar a BIOS para dar o boot pela unidade de disquete, ok? Outro modo interessante de
gerar disco de boot Linux é por meio do comando mkbootdisk, para onde precisamos passar alguns
parâmetros a fim de que seja criado automaticamente o referido disco.

# mkbootdisk —device /dev/fd0 2.4.28872cl


Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press <Enter> to continue or ^C to abort:
Warning: lvm support disabled
Warning: ReiserFS support disabled

A numeração 2.4.28872cl é a versão do Kernel que estamos usando. Para saber basta usar o
comando uname -r, e se precisar de mais informações, basta usar o comando uname -a. Pronto, agora
também você já tem um disquete de inicialização.

Entrando no sistema Linux


Bom, nós já sabemos quando entramos no sistema Linux, através do GRUB ou do LILO, nós
temos a opção de escolher com qual sistema operacional vamos trabalhar. Então depois de passarmos, por
exemplo, pelo GRUB ou nós paramos na tela de login modo texto (init 3), a qual você já viu no capítulo
anterior.
No entanto, você pode ter optado pelo modo gráfico (init 5), logo você verá como padrão o KDM
– KDE Desktop Manager – ou seja, com ele você poderá escolher qual interface gráfica usar.
Nós temos o kdm (KDE), o gdm (Gnome) e o xdm (padrão Unix) para decidir qual interface
gráfica usar. O kdm é o mais usado e permite várias configurações, assim como o gdm. O xdm não nos
fornece tantas configurações, mas dá para fazer umas coisas legais com ele.
Antes de efetuar o login no sistema o usuário poderá escolher, o idioma que vai trabalhar (tem
até chinês) e que tipo de interface que usar. Também por aqui é possíve l desligar ou reinicializar o sistema.

Os arquivos
No sistema Linux tudo é considerado arquivo, algumas coisas são iguas ao Windows, outras
mudam e tem filosofia diferente, os arquivos de imagens são iguais salvo os arquivos de algum programa
gráfico do Linux como o gimp. Já sabemos também que o Linux aceita até 255 caracteres para nomes de
arquivo, e que ele case sensitive, ou seja, letras maiúsculas e letras minúsculas são tratadas de forma
diferente pelo sistema. Exemplo o arquivo GabrielBonan.txt é diferente de GABRIEBONAN.TXT.
Os arquivo ocultos no sistema Linux começam com um “.” na frente de seu nome. Então se voce
quiser deixar um arquivo invisível é só renomeá-lo com “.” antes. A listagem normal com o comando ls não
vai mostrar esses arquivos, você terá que usar o comando ls -a.
No Sistema Linux, nós temos os arquivos de link, ou seja, é um arquivo que aponta para um
outro arquivo ou outro local, semelhante ao atalhos do Windows. A listagem de arquivo é colorida e quando
identificamos vários arquivos através de suas cores, por exemplo: branco normal = arquivo comum, verde
com asterisco = arquivo executável (não existe .exe e .com), rosa = arquivos temporários, amarelo = arquivos

42
Global Sul Informática

que representam dispositivos, ciano = arquivo de links simbólicos etc. Resumindo, nós temos dois tipos de
arquivos e mais suas particularidades. Os dois tipos são:
1. Arquivo texto: Seu conteúdo é compreendido e pode ser visto com o comando cat, less, more
etc. Um arquivo texto pode ser uma carta, um script, um programa de computador escrito pelo programador,
arquivo de configuração, etc.
2. Arquivo binário: Seu conteúdo somente pode ser entendido pelo computador. Não é possível
ver seu conteúdo pelo método convencional. Um arquivo binário é gerado através um processo chamado de
compilação. Compilação é basicamente a conversão de um programa em linguagem humana para a
linguagem de máquina.
Alguns arquivos binários podem ser entendidos pelos humanos através do comando od.
Experimente os dois comandos:

# cat /sbin/ifconfig Entendeu alguma coisa ?


# od /sbin/ifconfig Entendeu alguma coisa ?

Pois é... esse comando somente os hackers conseguem identificar o seu conteúdo. Mas quem
sabe um dia você chega lá. Então, vamos analisar mais um exemplo:

# cat .cshrc
if ( $?prompt ) then
set autoexpand
set autolist
set cdpath = ( ~ )
set pushdtohome
if ( -e ~/.alias ) then
source ~/.alias
endif
endif

# od .cshrc
0000000 063151 024040 022040 070077 067562 070155 020164 020051
0000020 064164 067145 020012 071440 072145 060440 072165 062557
0000040 070170 067141 005144 020040 062563 020164 072541 067564
0000060 064554 072163 020012 071440 072145 061440 070144 072141
0000100 020150 020075 020050 020176 005051 020040 062563 020164
0000120 072560 064163 072144 064157 066557 005145 020012 064440
0000140 020146 020050 062455 077040 027057 066141 060551 020163
0000160 020051 064164 067145 020012 020040 071440 072557 061562
0000200 020145 027576 060456 064554 071541 020012 062440 062156
0000220 063151 005012 067145 064544 005146
0000232

Como podemos verificar nos exemplos anteriores, o comando cat nos mostra, quando possível, o
conteúdo de um arquivo qualquer, mas quando isso não for mais possível, poderemos usar o comando od que
nos mostra a conteúdo desse arquivo em formato octal ou em outros formatos, coisa de hacker, certo?

Meta caracteres ou coringas


Todos nós usuários já sabemos o que são coringas (ou referência global). Trata-se de um recurso
usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. No sistema Linux, temos
os meta caracteres que nada mais são do que curingas com mais poder, vamos dizer assim. Esse é um recurso
que permite que você faça a filtragem do que será listado, copiado, apagado etc. São usados três tipos de
curingas no Linux, o “*” o “?” e o modo padrão.

*: Faz referência a um nome completo/restante de um arquivo/diretório.


?: Faz referência a uma letra naquela posição.
[padrão]: Faz referência a um padrão que pode ser:
[a-z][1-0]: Faz referência a caracteres de a até z ou de 1 até 10.
[a,z][1,0]: Faz referência aos caracteres a e z ou 1 e 10 naquela posição.
[a-z,1,0]: Faz referência aos caracteres de a até z e 1 e 10 naquela posição.

Vale lembrar também que a procura de caracteres é case sensitive. Assim se você deseja que
sejam localizados todos os caracteres alfabéticos, deve usar [a-z,A-Z]. Caso a expressão seja seguida de um ^,
é feita uma referência a qualquer caractere exceto o da expressão. Por exemplo [^abc] faz referência a

43
Treinamento Linux – Administração, Redes e Serviços

qualquer caractere exceto a, b e c. Lembrando que os três tipos de coringas (*, ? e [ ]) podem ser usados ao
mesmo tempo. Vamos ver alguns exemplos de uso de meta caracteres:

ls *.new: Lista todos os arquivos que terminam com .new.


ls teste?.new: Lista todos os arquivos que começam com teste que contenham qualquer
caractere na posição do curinga ? e terminem com .new.
ls teste[4,5].*: Lista todos os arquivos que começam com teste que contenham números de
4 e 5 naquela posição e terminem com qualquer extensão.

Vimos aqui que o uso de meta caracteres é muito útil e interessante, mas deve ser feito com
muito cuidado pois olhe só esse exemplo matador rm -fr / * &. Sabe o que isso faz? Apaga tudo e todos do
seu sistema Linux e ainda é executado em segundo plano. Você sabia que o comando echo * também expande
os nomes de arquivos de diretórios?
A seguir, você tem um arquivo script, ou seja, um arquivo que tem a mesma função do um
arquivo “.bat” ou de lote do MS-DOS. Esse script servirá para ligar a numlock na inicialização do sistema. Se
você quer que o numlock seja ligado na inicialização, adicione o seguinte no seu script de
inicialização/etc/rc.d/rc.local):

# /bin/bash
# liganunlock.sh
echo -n "Ligando os LEDs NumLock: "
for tty in /dev/tty[1-6] /dev/tty1[2]; do
setleds -D +num < $tty &
done
echo "Ok, já terminei. "

Esse procedimento irá ligar os numlocks nos terminais tty1 até tty6 e nos terminais tty11 e tty12.
Perceba o uso de metacaracteres na linha “for tty in /dev/tty[1-6] /dev/tty1[2]; do”.
Lembre-se de que você deve ter instalado o pacote console-tools para que isso funcione. Se você
quiser encontrar todos os arquivos que correspondam a um padrão qualquer, que nesse caso é “old”, e os
apagar pedindo sua confirmação antes, use o comando find / -name "*.old" -ok rm {} \;

Os diretórios
Os diretórios do sistema Linux seguem a mesma idéia do Widnows, poré quando você estiver em
modo texto usará as barras contrárias. Exemplo cd c:\windows\system no Windows e cd /usr/local/ no
Linux. Quando você usar o comando ls -laF em um terminal ou em uma console, os diretórios serão aqueles
com a cor azul, e uma barra “/” no final e na primeira coluna são os diretórios que começam do a letra “d”. A
estrutura de diretórios do Linux é similar ao do MS-DOS, mas existem algumas diferenças entre o do MS-
DOS e o do Linux. Agora vou mostrar um exemplo de diferença:

MS-DOS: C:\DOCS\LINUX\manual_gimp.doc
Linux:/home/adilson/docs/manual_linux.pdf

Uma particularidade é o “~” para referenciar diretórios, por exemplo para entrar no diretório
/home/adilson eu posso digitar assim cd ~adilson que também funciona.
O comando pwd mostra qual o caminho e diretório que você esta no momento. E o comando cd
– volta um nível na hierarquia.
A hierarquia de diretórios
No sistema Linux, você já percebeu, cada diretório tem a sua função. Vou mostrar a estrutura
básica de diretórios, mas ela é muito maior do que a aqui apresentada:

/bin: Contém arquivos e programas que são usados pelos usuários.

/root: Diretório do usuário root.

/sbin: Diretório de programas usados pelo superusuário (root) para administração e


controle do funcionamento do sistema.

/boot: Contém arquivos necessários para a inicialização do sistema.

/boot/grub: Contém arquivos necessários para a inicialização do sistema com Grub.

44
Global Sul Informática

/mnt/cdrom: Ponto de montagem da unidade de CD-ROM.

/mnt/floppy: Ponto de montagem de unidade de disquetes.

/mnt/windows: Ponto de montagem do Windows local.

/dev: Contém arquivos usados para acessar dispositivos (periféricos) locais.

/etc: Arquivos de configuração de seu computador local.

/home: Diretórios com os arquivos dos usuários.

/lib: Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.

/lost+found: Local para a gravação de arquivos/diretórios recuperados pelo utilitário


fsck.ext2. Cada partição possui seu próprio diretório lost+found.

/mnt: Ponto de montagem temporário.

/opt: Alguns softwares de terceiros são desenhados para serem instalados sob o diretório
/opt. A menos que a partição /opt seja criada, o software tentará instalar-se sob /opt e
o fará na partição raiz, a qual pode eventualmente não ter o espaço necessário. Claro
que existem outras opções de resolução do problema, tais como criar uma ligação
simbólica entre /opt e outra partição com mais espaço como /usr por exemplo.

/proc: Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele
é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura,
verificam configurações do sistema ou modificar o funcionamento de dispositivos do
sistema através da alteração em seus arquivos.

/tmp: Diretório para armazenamento de arquivos temporários criados por programas, aqui
deve-se apagar os arquivos ‘lixo’ que não serão mais usados pelo sistema.

/usr: Contém maior parte de seus programas.

/usr/src: Destinada ao armazenamento de grandes quantidades de códigos- fonte incluída


no Linux, tais como: fontes do núcleo do Linux (kernel), os fontes completos do Linux
são armazenados aqui, assim como os novos núcleos são construídos aqui. No momento o seu
tamanho é de aproximadamente 50 (cinquenta) MB compactados e descompactados tem mais de
350 (trezentos e cinquenta) MB. Lembre-se de manter espaço adicional para a construção
de novos núcleos, pois pode-se desejar manter mais de uma cópia do núcleo
simultaneamente.

DICA: Fontes de pacotes baseados em formato rpm, caso um pacote de fontes (também conhecido
como SRPM) seja instalado, os arquivos serão gravados aqui. Note que, a menos que seja especificado
o contrário, qualquer pacote irá utilizar um diretório aqui construído.

/usr/local: Destinada ao armazenamento de objetos em separado do restante do Linux, tais


como softwares não disponíveis como um pacote no formato .rpm. O seu tamanho depende da
previsão do volume de dados que usará esta estrutura.

/var: Diretório de logs e configurações.

O que são diretórios raiz do sistema Linux?


No sistema Linux, temos inúmeros diretórios mas temos os também os diretórios que são
chamados de “raiz”, isso quer dizer que ele é importante para o sistema e que dentro dele se encontram coisas
importantes que o usuário precisará ou o sistema usará.
Dentro dele estão todos os diretórios do sistema. O diretório raiz é representado por uma “/”;
assim se você digitar o comando cd /, estará acessando esse diretório.
Nele, estão localizados outros diretórios como: /bin, /sbin, /usr, /usr/local, /mnt, /tmp, /var,
/home etc. Esses são chamados de subdiretórios pois estão dentro do diretório /. A estrutura de diretórios e
subdiretórios pode ser identificada da seguinte maneira:

/ /bin /sbin /usr /usr/local /mnt /tmp /var /home

45
Treinamento Linux – Administração, Redes e Serviços

A estrutura de diretórios também é chamada de “Árvore de Diretórios” porque é parecida com


uma árvore de cabeça para baixo.

DICA: Essa hierarquia aqui é apenas para que você tenha uma noção de como é que o seu sistema
Linux está organizado. É claro que há muito mais diretórios e subdiretórios em seu sistema. Use o
comando mc (modo texto) para navegar por eles ou algum navegador de disco do modo gráfico, tais
como: gmc, nautilus ou o konqueror.

O diretório /root
Esse é um dos principais diretórios do sistema, é aqui que vai ficar todos os arquivos do usuário
administrador do sistema que é o usuário root. Então quando você estiver logado no sistema como root tome
muito cuidado com seus comandos, pois se algo der errado nem sempre você poderá voltar.
O diretório /home
Esse diretório é a “casa” de todos os usuários que você cadastrou no sistema e mais outros que
outros programas acabaram criando e as contas do sistema Linux, no entanto você poderá definir um outro
local para seus usuários (eu acoselho a deixar como está já que esse é o padrão). Esse lugar é o lugar dos
usuários e das contas do sistema. Você consegue perceber a diferença? Usuários são pessoas que usam o
sistema e contas são contas dentro do sistema sem que seja preciso existir um usuário para logar no sistema.
Por exemplo, a conta nobody, é usada pelo servidor Apache, porém não é preciso que exista um
fulano chamado nobody, Entendeu? Mas isso também não significa que dentro do /home tenha um diretório
chamado nobody. Pois quando você cadastra um usuário no sistema, um diretório para ele automaticamente
é criado nesse /home e alguns arquivos iniciais já serão disponibilizados para o usuário.
É aconselhável que esse diretório seja na verdade uma partição exclusiva. Uns 500 MB já está
bom, pois com o tempo você vai precisar disso.
O diretório /var
Esse diretório é o diretório de logs do sistemas e alguns programas o usam também como
diretório de configuração. Contém maior parte dos arquivos que são gravados com freqüência pelos
programas do sistema, e-mails, spool de impressora, cache etc.

Nomenclatura dos discos, partições e portas


No sistema Linux, os dispositivos existentes em seu computador, tais como discos rígidos,
disquetes, tela, portas de impressora, modem, zip-drive, scaner etc, são identificados por um arquivo
referente a esse dispositivo no diretório /dev. A identificação de discos rígidos no Linux é feita da seguinte
forma: /dev/hdaX. Onde:

X: Número que identifica o número da partição no disco rígido.


a: Letra que identifica o disco rígido (a=primeiro, b=segundo, etc).
hd: Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI.
/dev/: Local onde são ficacm os dispositivos existentes o sistema.

A seguir algumas identificações de discos e partições do Linux:

/dev/fd0: Primeira unidade de disquetes.


/dev/fd1: Segunda unidade de disquetes.
/dev/hda: Primeiro disco rígido na primeira controladora IDE.
/dev/hda1: Primeira partição do primeiro disco rígido IDE.
/dev/hdb: Segundo disco rígido na primeira controladora IDE.
/dev/hdb1: Primeira partição do segundo disco rígido IDE.
/dev/sda: Primeiro disco rígido na primeira controladora SCSI.
/dev/sda1: Primeira partição do primeiro disco rígido SCSI.
/dev/sda4: Geralmente usado para unidades de Zip Drive.
/dev/sdb: Segundo disco rígido na primeira controladora SCSI.
/dev/sdb1: Primeira partição do segundo disco rígido SCSI.
/dev/sr0: Primeiro CD-ROM SCSI.
/dev/sr1: Segundo CD-ROM SCSI.

46
Global Sul Informática

É importante entender como os discos e partições são identificados no sistema, pois será
necessário usar os parâmetros corretos para montá-los. Veja agora como é que isso funciona para as portas
de comunicação:

COM1: /dev/cua0 ou /dev/ttyS0


COM2: /dev/cua1 ou /dev/ttyS1
COM3: /dev/cua2 ou /dev/ttyS2
COM4: /dev/cua3 ou /dev/ttyS3

Então o mouse no sistema Linux ficará na /dev/cua0 ou /dev/ttyS0, mas geralmente ele é
definido pelo seu link simbólico /dev/mouse, que é um arquivo que aponta (como se fosse um atalho) para
um dispositivo de hardware e o modem como /dev/modem que poderá ser a porta de comunicação 2
(/dev/ttyS1), 3 (/dev/ttyS2) ou 4 (/dev/ttyS3). Use o comando ls /dev/hd* e veja quantos dispositivo você
poderá ter:

# ls /dev/hd*
/dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf
/dev/hdg /dev/hdh /dev/hda1 /dev/hdb1 /dev/hdc1 /dev/hdd1
/dev/hde1 /dev/hdf1 /dev/hdg1 /dev/hdh1 /dev/hda10 /dev/hdb10
...
...
/dev/hdc10 /dev/hdd10 /dev/hde10 /dev/hdf10 /dev/hdg10 /dev/hdh10
/dev/hda9 /dev/hdb9 /dev/hdc9 /dev/hdd9 /dev/hde9 /dev/hdf9
/dev/hdg9 /dev/hdh9

Estrutura de particionamento do sistema Linux


Conforme o tipo de instalação, podem ser requisitados entre 100 (cem) MB até 4 (quatro) GB de
espaço em disco, o qual é extremamente aconselhado estar separado de áreas que possuam outros sistemas
operacionais como MS-DOS, OS/2, Windows, outras versões de Linux, etc. A forma de separar essas áreas é
dividindo o espaço disponível em áreas distintas chamadas partições. Cada partição pode ser acessada como
se fosse um disco totalmente diferente. Adicionalmente cada partição tem um tipo que indica como os dados
são armazenados naquela partição.
Por exemplo, há três tipos de partições diferentes usadas pelo Linux, OS/2 e MS-DOS. Para
saber os tipos de partições válidas em seu computador, use o comando fdisk -l:

# fdisk -l
Disco /dev/hda: 255 cabeças, 63 setores, 3738 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot Início Fim Blocos Id Sistema
/dev/hda1 * 1 2550 20482843+ c FAT32 Win95 (LBA)
/dev/hda2 2551 3738 9542610 f Estendida Win95 (LBA)
/dev/hda5 2551 2741 1534176 83 Linux
/dev/hda6 2742 2758 136521 82 Linux swap
/dev/hda7 2759 2790 257008+ 83 Linux
/dev/hda8 2791 3738 7614778+ 83 Linux

O Interpretador de comandos
O interpretador de comandos também conhecido como shell ou modo console (modo texto),
com sinônimo. É o programa responsável em interpretar as instruções enviadas pelo usuário e seus
programas ao sistema operacional no caso o kernel. Em sistema Linux, você poderá ter vários interpretadores
de comandos, ao contrário do que acontece no sistema Windows que só tem o tal do command.com.
O interpretador de comandos que executa comandos lidos do dispositivo de entrada padrão, que
é o teclado ou de um arquivo executável é a principal ligação entre o usuário, os programas e o kernel. O
Linux possui diversos tipos de interpretadores de comandos, entre eles posso destacar o bash, ash, csh, tcsh,
sh etc.
Entre eles o mais usado é o bash. Os comandos podem ser enviados de duas maneiras para o
interpretador: a) interativa e b) não-interativa.
a) Interativa: Os comandos são digitados no aviso de comando e passados ao interpretador de
comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa ou o próximo
comando.

47
Treinamento Linux – Administração, Redes e Serviços

b) Não-interativa: São usados arquivos de comandos criados pelo usuário (scripts) para o
computador executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os
comandos do arquivo um por um, e dependendo do término do comando, o script pode checar qual será o
próximo comando que será executado e dar continuidade ao processamento.
Esse sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando ou
para compilar algum programa complexo.
Uma característica interessante do Bash – Bourne Again Shell, é que ele possui a função de
auto-completar os nomes de comandos que foram digitados via entrada padrão (stdin). Isso é feito
pressionando-se a tecla TAB; o comando é completado e acrescentado um espaço.
Isso funciona sem problemas para comandos internos; caso o comando não seja encontrado, o
Bash emite um beep. Por exemplo, estando você em /root digite cd GN (aperte TAB)+L (aperte TAB)+Win
(aperte TAB)+T (aperte TAB) e veja como foi fácil digitar um caminho longo para entrar no local dos temas
da interface do Window Maker: GNUstep/Library/Windowmaker/Themes.

Atalhos de teclado para o bash


Existem alguns atalhos úteis que podem ser utilizados no bash para facilitar o nosso trabalho no
dia-a-dia no sistema Linux:

ATALHO DESCRIÇÃO
Alt+b Move o cursor uma palavra para trás.
Alt+f Move o cursor uma palavra para frente.
Ctrl+a Ir para o início da linha.
Ctrl+c Pára o comando.
Ctrl+d Logout.
Ctrl+e Ir para o final da linha.
Ctrl+k Apagar do cursor até o final da linha.
Ctrl+l Apaga a tela (clear).
Ctrl+r Busca incremental no histórico de comandos.
Ctrl+t Inverte o caracter sob o cursor com o anterior.
Ctrl+u Apagar do cursor até o começo da linha.
Ctrl+w Apagar do cursor até o começo da palavra.
Ctrl+y Re-inserir o último trecho apagado.
Ctrl+z Põe processo em background (Voltar, use o fg).

Bom, agora que você já sabe um monte de combinações poderosas pode sair queimando o seu
teclado no bash. Certo? Mas o bash não pára por aí, sabia? Você pode repetir um comando no bash sem ter
que digitá-lo de novo. Isso é possível porque utilizando o caractere “!” na frente do comando que deseja
repetir o bash vai buscar aquele comando no histórico, e se lá tiver algo parecido o comando será executado.
Veja o seguinte exemplo:

# mount /mnt/cdrom
# ls /mnt/cdrom
# umount /mnt/cdrom
# !mount

O comando !mount irá informar ao shell (bash) para executar o último comando mount
executado, neste exemplo, mount /mnt/cdrom. Que poder, hein? Caso você queira verificar qual a shell que
está em uso, digite o comando: echo $SHELL; para saber as disponíveis use chsh -l, o comando cat
/etc/shells também nos informa.

48
Global Sul Informática

# cat /etc/shells
/bin/sh
/bin/bash
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/bin/zsh

Os arquivos de inicialização da máquina


No ambiente Windows, você tem lá algumas variáveis de ambiente e os arquivos:

autoexec.bat: Carrega variáveis e progranas residentes.


config.sys: Carrega configurações de variáveis.
ms-dos.sys: Carrega o sistema MS-DOS.
io.sys: Carrega informações do sistema da BIOS.
command.com: Carrega o interpretador de comandos.

No entanto, a grande maioria dos usuários hoje não conhece bem o arquivo autoexec.bat. Já no
sistema Linux, os arquivos de inicialização além de serem infinitamente mais poderosos são diversos. Nós
temos arquivos de inicialização da máquina em arquivos de configuração de aplicativos e programas em si
também. Onde eles estão? Esses arquivos estão em /etc/rc.d.

# ls -laF /etc/rc.d
total 84
drwxr-xr-x 10 root root 4096 Out 10 07:34 ./
drwxr-xr-x 54 root root 4096 Dez 5 11:26 ../
drwxr-xr-x 2 root root 4096 Out 10 07:04 init.d/
-rwxr-xr-x 1 root root 4063 Jun 25 07:20 rc*
-rw-r--r-- 1 root root 114 Out 10 07:34 rc.firewall
-rwxr-xr-x 1 root root 1762 Out 10 07:34 rc.local*
-rwxr-xr-x 1 root root 576 Jun 25 07:20 rc.modules*
-rwxr-xr-x 1 root root 2964 Jun 25 00:59 rc.news*
-rwxr-xr-x 1 root root 21437 Jun 25 07:20 rc.sysinit*
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc0.d/
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc1.d/
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc2.d/
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc3.d/
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc4.d/
drwxr-xr-x 2 root root 4096 Ago 1 16:57 rc5.d/
drwxr-xr-x 2 root root 4096 Out 10 07:42 rc6.d/

Vamos entender o que fazem alguns desses arquivos, os scripts de inicialização:


O script rc*: É responsável pelo início e parada de serviços quando houver uma troca de nível de
execução (runlevel); ele também é responsável pela configuração básica de inicialização da máquina com, por
exemplo, o nome da máquina (hostname).
O script rc.local*: É executado após todos os outros scripts tiverem sido processados pelo
sistema e responsável por aquele pinguim, o Tux, que você vê quando o sistema Linux está sendo iniciado;
cuida também da execução do script de configuração do idioma “. /etc/profile.d/lang.sh” que será usado e
suas variáveis. O arquivo do pinguim geralmente está em /etc/issue, e o conteúdo do script rc.local* você
poderá ver a seguir (Distribuição Conectiva Linux):

#!/bin/sh
. /etc/profile.d/lang.sh
if [ -f /etc/conectiva-release ] ; then
R=$(cat /etc/conectiva-release)
echo "$R" > /etc/issue.net
echo "Kernel $(uname -r)" >> /etc/issue.net
echo >> /etc/issue.net
if [ -x /usr/bin/linux_logo ] ; then
clear > /etc/issue
linux_logo -classic >> /etc/issue
echo "$R (\l)" >> /etc/issue
echo >> /etc/issue
else

49
Treinamento Linux – Administração, Redes e Serviços

cat /etc/issue.net > /etc/issue


fi
fi

O script rc.sysinit*: É o script que será roda uma única vez em seu sistema e é ele que vai
controlar praticamente toda a parte de configuração do seu sistema, pois vai ler todos os arquivos de
configuração. Se você usar o comando cat --number /etc/rc.d/rc.sysinit, vai perceber que esse script tem
praticamente umas 800 (oitocentas) linhas, é mole?
O diretório /etc/rc.d/init.d guarda os scripts e processos (daemons) do sistema que precisam ser
derrubados ou levantados, como serviços de rede, NFS, Samba etc. Isso tudo você verá mais tarde e
entedenderá o seu funcionamento.
Como você pode perceber, são muitos os arquivos que servirão de base para a inicialização de
uma máquina Linux. Os diretórios: rc0.d/, rc1.d/ ... rc6.d/ contêm arquivos responsáveis para aquele nível de
execução (runlevel) do Linux. Assim quando você executa o comando shutdown -h now o sistema Linux
processará os arquivos que estão em rc0.d/, e assim por diante. Entendeu?
E isso é interessante porque você poderá personalizar esses arquivos, ou seja, quando a máquina
estiver para ser reinicializada uma mensagem poderá aparecer informando: “PREZADO USUÁRIO, DÁ UM
TEMPO AÍ QUE EU JÁ VOLTO.....:-)”, ou quando a máquina estiver sendo desligada, poderá aparecer uma
imagem informando que ela já pode ser desligada com segurança, semelhante àquela mensagem do
Windows.
Se você quiser fazer suas configurações dos níveis de execução você poderá usar os seguintes
utilitários do Linux:
a) chkconfig: Esse pequeno utilitário pode ser usado pela linha de comando para configurar seus
níveis de incialização.
b) ntsysv (modo text) ou system-config-services (modo gráfico): No ambiente KDE esse utilitário
permite a configuração dos níveis de execução e ativação e desativação de processos individuais do seu
sistema e...

Terminais virtuais em modo console


Uma coisa que sem dúvida é importantíssima para os usuários do sistema Linux e que outros
usuários do ambiente Windows não tem é o conceito de terminais virtuais. É como se fosse um outro
computador que você acessa on the fly ou seja, na hora, e já começa a trabalhar. Um terminal virtual é uma
segunda seção de trabalho completamente independente de outras, que pode ser acessada no computador
local ou remotamente via telnet, rsh, rlogin, ssh, vmware, vnc etc.
Qual é a importância disso? Primeiro, PODER, sim poder para você continuar fazendo suas
tarefas enquanto a máquina faz outras tarefas, como uma compilação do kernel que pode demorar bastante
tempo de máquina, uma compilação de um programa qualquer, uma instalação que vai ser demoarada,
monitoramento local e remoto de uma rede etc, enfim são inúmeras as coisas importantes que com os
terminais virtuais podemos fazer.
No Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e
pressionando F1 a F6 (por padrão). Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o
sétimo é usado por padrão pelo ambiente gráfico X). O Linux possui mais de 63 terminais virtuais, mas
apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM. Porém, isso não o
impede de criar mais terminais ou ficar com apenas dois terminais. Essas configurações você fará editando o
arquivo /etc/inittab.
Veja exemplo a seguir:

# Run gettys in standard runlevels


1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
#7:2345:respawn:/sbin/mingetty tty7
#8:2345:respawn:/sbin/mingetty tty8
#9:2345:respawn:/sbin/mingetty tty9
#10:2345:respawn:/sbin/mingetty tty10
#11:2345:respawn:/sbin/mingetty tty11
#12:2345:respawn:/sbin/mingetty tty12

50
Global Sul Informática

Como podemos ver nesse arquivo, a linha: 1:2345:respawn:/sbin/mingetty tty1 informa que a
combinação CONTROL+ALT+F1 (se estiver usando o modo gráfico) nos levará ao primeiro terminal virtual
(console), e assim por diante, até chegar na combinação CONTROL+ALT+F7, que nos levará de volta ao
modo gráfico. Se quisermos habilitar o terminal 12 basta descomentar e executar o comando init q e depois é
só combinar CONTROL+ALT+F1 ou ALT+F1.
A combinação ALT+F1, ALT+F2 é válida somente se você não estiver usando o modo gráfico.
Você pode perceber também que nessas linhas todas elas apresentam a seqüência “:2345:”; isso que dizer que
aquele terminal virtual aceita esses níveis de execução (runlevel), ou seja, o modo 2 (multiusuário sem NFS),
modo 3 (multiusuário com rede completa), modo 4 (sem uso no momento) e o modo 5 (modo gráfico).
Se você precisar saber quem está usado as consoles (terminais virtuais), use o comando ps -aux |
grep tty.
Em um sistema Linux é possível capturar as ocorrências de atividades em um console ou em um
terminal. Por exemplo, Sabemos que se pressionarmos duas vezes a tecla TAB é possível saber quantos
comandos poderemos usar em um console ou terminal virtual; esses comandos variam de uns 1000 (mil) até
mais de 3500 (três mil e quinhentos). E se você desejar anotar um por um esses comandos em um arquivo
para depois fazer um resumo do que cada um dos comandos faz? Já pensou nisso?
Bom, se você pensou em direcionamentos, está quase certo mas não vai funcionar, pois precisará
da saída de um comando para a entrada de um arquivo. Se você pensou em um xterm aberto no modo gráfico
e depois na ação de pressionar duas vezes o TAB e logo em seguida quis selecionar (copiar) com o mouse e
depois colar em um editor de texto, você está certo.
Porém, em distribuições Linux o xterm vem configurado para segurar somente 1000 (mil) ou
1500 (mil e quinhentas) linhas na tela; se o resultado das teclas TAB der mais do que essas linhas, você
também não conseguirá o que precisa. Então, faça assim:

# script tab-tab.log
Script iniciado, o arquivo é tab-tab.log
#
. Tudo o que você fizer será capturado agora.
.
# exit
Script concluído, o arquivo é tab-tab.log

Como você pode perceber, o comando script gera um arquivo texto de tudo que é impresso na
tela. É útil para quem precisa de uma cópia impressa de uma sessão interativa, pois o script pode ser
impresso mais tarde com comando lpr.
Se o parâmetro nome do arquivo é fornecido, script grava todos os diálogos em um arquivo. Se
nenhum nome de arquivo é fornecido, o script é gravado no arquivo typescript. E para sair, o script termina
quando se encerra o shell (CONTROL+D para sair do bash ou sh, ou pelos comandos exit ou logout).

Linux modo console, o poder do shell


Bom, vamos aprender aqui como poderemos usar o modo texto do sistema Linux, mais
conhecido como modo console e chamado de modo shell por alguns usuários mais experientes.
O grande poder do sistema Linux está sem seu modo texto pois é possível fazer praticamente
tudo o que se faz em modo gráfico, quase todos os arquivos de configuração, são arquivo em formato texto e
qualquer editor serve para fazer as configurações.
Não tem muita lógia executar um editor de texto gráfico, pesado somente para adicionar
algumas linhas no /etc/fstab, por exemplo. Isso pode ser feito pelo modo texto com muito mais flexibilidade e
dependendo do que você quer talvez com um único comando você resolve isso.
Muitos usuários trabalham no modo gráfico mas deixam um terminal aberto para digitação de
comandos, o qual pode ser um xterm, eterm, wterm, gnome-terminal ou konsole do KDE. Esta parte servirá
mais como um guia de comandos, ou seja, você terá o nome do comando e uma breve descrição do que ele faz
no sistema, e em alguns casos alguns exemplos para exercício e memorização; não serão vistos todos porque
são mais de 3000 (três) mil, isso mesmo é muito comando.

Comandos de ajuda do sistema


man
No sistema linux, nós temos o comando man que serve para ajudá-lo quando você não souber o
que um determinado comando faz. O comando man traz uma descrição básica do comando/programa e
detalhes sobre seu funcionamento. Uma página de manual é visualizada na forma de texto único com rolagem

51
Treinamento Linux – Administração, Redes e Serviços

vertical. Também documenta parâmetros usados em alguns arquivos de configuração. A utilização da página
de manual é simples, digite man [seção] [comando/arquivo].
Onde seção: É a seção de manual que será aberta; se omitido, mostra a primeira seção sobre o
comando encontrada (em ordem crescente). E comando/arquivo: É o comando/arquivo que deseja pesquisar.
A navegação dentro das páginas de manual é feita usando-se as teclas:

q: Sai da página de manual.


PageDown ou f: Rola 25 linhas abaixo.
PageUP ou w: Rola 25 linhas acima.
SetaAcima ou k: Rola 1 linha acima.
SetaAbaixo ou e: Rola 1 linha abaixo.
r: Redesenha a tela (refresh).
p ou g: Inicio da página.
h: Ajuda sobre as opções da página de manual.
s: Salva a página de manual em formato texto no arquivo especificado.

Exemplo: man ls, man 5 hosts_access, man ftp, man ssh etc
Alguns comandos não possuem página de manual, e para saber como usá-los basta então
executá-los. Mas pode acontecer que também não tenha ajuda, aí a gente não pode fazer nada se quem criou
o comando não disponibilizou nenhum ajuda.
xman
O comando xman faz a mesma coisa que o comando man, mas esse é voltado para o modo
gráfico. Ele apresenta uma enorme vantagem sobre o man do modo texto, pois permite que você escolha com
o mouse os comando de uma relação apresentada a você.
help
Alguns comandos também aceitam a sintaxe: help <comando>, e então o comando exibirá uma
ajuda sobre ele. Outra maneira é: <comando> --help ou -h.
info
O comando info é semelhante ao comando man para as páginas de manual, a vantagem dele é
que ele usa links para carregar outras partes do documento de ajuda. Se pressionarmos ENTER em cima de
uma palavra destacada, a info pages, como também é conhecido esse comando, nos levará a seção
correspondente. A info pages é útil quando sabemos o nome do comando e queremos saber para o que ele
serve.
Também traz explicações detalhadas sobre uso, opções e comandos. Para usar a info pages,
digite: info [comando/programa].
Se o nome do comando/programa não for digitado, a info pages mostrará a lista de todos os
manuais de comandos/programas disponíveis. A navegação da info pages é feita através de nomes marcados
com um “*” (hipertextos), que se pressionado ENTER, nos levará até a seção correspondente. A info pages
possui algumas teclas de navegação úteis:

q: Sai da info pages.


?: Mostra a tela de ajuda.
n: Avança para a próxima página.
p: Volta uma página.
u: Sobre um nível do conteúdo (até checar ao índice de documentos).
d: Volta ao índice de documentos.
m: Permite usar a localização para encontrar uma página do info.

Se pressionar “ m”, digite o comando e tecle ENTER que será levado automaticamente a página.
Existem muitas outras teclas de navegação úteis na info pages, mas estas são as mais usadas. Para mais
detalhes, entre no programa info e pressione “?”.
makewhatis e apropos
Uma facilidade bastante interessante existente em sistemas Unix/Linux é o comando apropos.
Mas antes de usar o comando apropos, você deverá digitar o comando makewhatis para que seja criado o
banco de dados descritivo de comandos. Esse comando consulta um banco de dados constituído da descrição
do comando. É bastante útil em situações em que se deseja executar determinada tarefa e não se conhece o
nome do comando.

52
Global Sul Informática

Por exemplo, caso eu queira descobrir como obter informação a respeito de compiladores
instalados em meu sistema, eu poderia digitar:

# apropos compiler
cccp, cpp (1) - The GNU C-Compatible Compiler Preprocessor.
g++ (1) - GNU project C++ Compiler
gcc, g++ (1) - GNU project C and C++ Compiler (v2.7)

Uma vez de posse dessa informação eu digitaria então: man gcc para obter informações
específicas sobre o compilador gcc. Todavia, esse banco de dados não é criado automaticamente. O
administrador de sistemas precisa criá-lo através do comando: catman. Esse comando irá varrer todos os
diretórios especificados na variável de ambiente MANPATH e irá construir um arquivo chamado “whatis”, no
qual irá colocar as descrições dos programas. Caso não exista esse arquivo, ao invocar o comando apropos
uma mensagem parecida com a mensagem abaixo será exibida:

# apropos compiler
apropos: file /usr/local/man/whatis not found
Create the whatis database using the catman -w command.

Para construir esse banco de dados emitir o comando: catman -w. Uma vez criado o banco de
dados, o comando apropos (ou man -k) poderá então ser utilizado.
type
O comando type é um é útil porque ele nos informa o que é o arquivo e também mostra a
localização dos arquivos. Mas também mostra se é um comando do shell (modo console). Exemplos:

# type bash
bash is /bin/bash
# type cd
cd is a shell buitin

O primeiro type informa onde está o arquivo bash, e o segundo type informa que cd é um
comando interno para a shell em uso. How-to e /usr/doc, /usr/share/doc: Os documentos conhecidos por
Howto´s são documentos bem detalhados que ensinam ao usuário a desenvolver uma certa atividade no
sistema Linux. Configuração de uma intranet por exemplo.
Existem também os mini Howto´s, que são resumos ou receitas de bolo como são conhecidos. E
dentro do sistema Linux existem locais, diretórios onde é possível realizar uma pesquisa com um navegador
qualquer.

Comandos de informações do sistema


arch
Exibe a arquitetura do computador. O comando arch é equivalente ao comando uname -m. Nos
sistemas Linux atuais, arch mostra algo como i386, i486, i586, alpha, sparc, arm, m68k, mips, ppc.
cal
Mostra um calendário no vídeo. O comando cal irá gerar na tela (stdout) um calendário
referente ao mês solicitado.
Usando o comando sem argumentos, é mostrado o calendário do mês e ano corrente. Para
mostrar o calendário do ano 2004, o comando seria: cal 2004. Para mostrar o mês de 12 (dezembro) de 1999
(ano), o comando correto seria: cal 12 1999.
date
Exibe a data e a hora do sistema e permite alterações. Para configurar seu sistema para
09/01/2001 14:30 use o comando date 0109143001. Outro modo se mudar as configurações é através do
comando date -s “mm/dd/aaaa hh:mm:ss”.
dmesg
Mostra as mensagens de inicialização e reconhecimento do hardware.
free
Mostra como é que está o uso da memória no computador. Outra maneira de obter informação
sobre a memória é com o comando cat /proc/meminfo.

53
Treinamento Linux – Administração, Redes e Serviços

meminfo
Mostra as informações sobre uso da memória de um modo mais elegante; fique atento para
saber como usar o meminfo. O arquivo /proc/kcore, que parece ser grande, apresenta na verdade o tamanho
de sua memória RAM.
last
Mostra uma lista das entradas e saídas dos usuários do sistema. São mostradas as seguintes
informações: a) Nome do usuário. b) Terminal onde ocorreu a conexão/desconexão. c) Hostname (caso a
conexão tenha ocorrido remotamente) ou console (caso tenha ocorrido localmente). d) Data do login/logout e
e) Tempo (hh:mm) que esteve conectado.
lastlog
Informa o último login do usuário que utilizou o terminal. São mostradas as seguintes
informações: a) O nome usado no login. b) O terminal utilizado e c) A hora do último login. Caso o usuário
não tenha feito login, é mostrada a mensagem “** Never logged in **”.
logname
Mostra seu login (username). Exemplo: logname.
hosname
Mostra o nome da máquina. Exemplo: hostname.
id
Mostra ao usuário qual sua atual identificação no sistema, informando o usuário, grupo
primário e outros grupos a qual pertence.
time
O comando time mede o tempo gasto para executar um processo (programa) em seu
computador. Use-o assim: # time [comando]. Onde: comando é o comando/programa que deseja medir o
tempo gasto para ser concluído. Exemplo: time ls, time find / -name crontab.
tty
O comando tty mostra qual é o terminal virtual ou console em que você está.
uptime
Mostra quanto tempo a sua máquina está no ar.
rusers
Se você quiser saber quem está usando as máquinas de sua rede, esse é o comando. O parâmetro
-a mostra informações de todas as máquinas que responderem, mesmo que não haja nenhum usuário
conectado. O parâmetro –l seleciona um formato longo de saída de informações. Se nenhuma máquina tiver
sido especificada na linha de comando, rusers exibirá as informações de todas as máquina da rede local.
rup
Esse comando exibe informações sobre o status de uma máquina operante na rede. É similar ao
comando uptime que exibe infomações sobre a máquina local. Exexemplo: rup <micro_ou_IP>
ruptime
Esse comando é muito interessante, pois com ele é possível saber informações sobre cada
máquina da rede local, assim podemos obter dados sobre os pacotes difundidos pelas máquinas de tempos
em tempos (geralmente por padrão de 1 a 3 minutos).
Uma máquina será considerada inativa (down) quando a mesma não difunde informações sobre
o seu estado a algum tempo (geralmente entre 5 a 11 minutos, dependendo do sistema utilizado).
rwho
Mostra quem está usando as máquinas da rede local e o que estão fazendo. Use o comando rwho
-a para mais informações sobre usuários inativos há mais de uma hora.
traceroute
Você já parou para pensar por onde passam os seus dados em suas viagens pela Internet? Se
você quer saber, existe um comando em sistemas Unix e Windows (95 e NT) que lhe fornece essas
informações. Esse comando chama-se traceroute.
ping
Servem basicamente para testar se uma conexão existe, ou seja, se uma máquina ou dispositivo
(ethernet) está funcionando corretamente, ou ainda, se a conexão entre dois pontos está ativa, sendo esta
última a sua maior utilidade.
uname
Exibe informações do sistema. Exemplo: uname -a, uname -r, uname -rs.

54
Global Sul Informática

Comandos para manipulação de diretórios


l, ls, dir, vdir
Lista o conteúdo de um diretório e hierarquicamente. As opções mais comummente usadas são:
–C: Lista arquivos em colunas, ordenados verticalmente, –R: Lista os diretórios encontrados, ordenados
recursivamente, –a: Inclui os arquivos ocultos (iniciados com “.”) e–l: Exibe as propriedades do arquivo na
listagem. Veja alguns exemplos:

ls -l | grep ‘^-..x’: Lista somente os arquivos executáveis.


ls -l | grep ‘^d’: Listar somente diretórios.
ls / -R *: Listar todos os arquivos do disco rígido.

cd /, cd .. , cd - e cd
Entra ou sai de diretórios. Se usarmos o cd –, o comando cd volta o cd anterior (como se fosse
um desfazer). Se usarmos cd ~adilson, conforme o exemplo, o comando cd entrará em /home/adilson, ou
seja, entra no diretório do usuário. Somente o comando cd sempre voltará à raiz do diretório do usuário (root
ou não).
pwd
Lista o nome do caminho de trabalho atual. Então, para você saber em que nível hierárquico de
diretório está, basta usar o comando pwd para que ele o informe.
mkdir
Cria diretórios. A opção “-m modo, --mode=modo”, seleciona o modo de criação dos diretórios
para modo, que pode ser simbólico como em chmod, e então usa o modo padrão como ponto de partida. A
opção “-p” cria qualquer diretório pai faltante para cada argumento diretório para diretórios pais é fixo pela
umask modificada por u+wx. Para criar diretórios com nomes longos e com espaços, é preciso usar aspas.
rmdir
Remove diretórios vazios, mas se nesses diretórios existirem mais diretórios o e/ou arquivos,
você deverá usar o comando rm -frv <nome_diretório>. Para remover diretórios com nomes longos e com
espaços, é preciso também usar aspas.
cp
O comando cp copia arquivos e/ou opcionalmente diretórios. Você pode copiar um arquivo para
um destino fornecido, ou copiar arbitrariamente muitos arquivos para um diretório de destino. Se o último
argumento de nome é um diretório existente, o comando cp copia cada arquivo origem para aquele diretório
(com o mesmo nome).
De outra forma, se somente dois arquivos são fornecidos, ele copia o primeiro para o segundo.
É um erro se o último argumento não for um diretório e mais que dois argumentos forem fornecidos.
As opções que você poderá usar: –f: Remove os arquivos de destino existentes, e nunca pergunta
antes de fazer isso, –i: Pergunta se será sobrescrito o arquivo regular de destino, –l: Cria ligações fortes ao
invés de cópia de não diretórios –r: Cópia diretórios de forma recursiva como se fossem arquivos regulares.
mv
Movimenta ou renomeia arquivos ou diretórios. Se o último argumento é um nome de um
diretório existente, o comando mv movimenta cada arquivo dado para um arquivo com o mesmo nome
naquele diretório. De outra forma, se somente dois arquivos são dados, ele renomeará o primeiro como o
segundo. É errado se o último argumento não for um diretório e mais de dois arquivos forem fornecidos.
du
Usaremos o comando du quando precisarmos saber as hierarquias, ou seja, algumas
informações sobre um determinado diretório.

Comandos para manipulação de arquivos


basename
Retira o diretório e sufixo do arquivo.
bash
Executa o interpretador de comandos bash.
cat
Concatena arquivo e lista o resultado na saída padrão. O comando cat é muito importante no
dia-a-dia de quem trabalha com Linux, porque ele ele permite a criação de um arquivo texto qualquer com se
fosse o comando copy con:teste.txt lá do MS-DOS.

55
Treinamento Linux – Administração, Redes e Serviços

Veja o exemplo:

# cat > arquivo1.txt


Esta é a primeira linha do arquivo 1
Esta é a segunda linha do arquivo 1
^D

Ok, no final de cada linha você deverá pressionar ENTER; se errou, não tem como subir uma
linha, e no final, depois do ENTER, é só fazer CONTROL+D para que o arquivo seja gravado. Viu como o
comando é semelhante ao copy con:arquivo.txt do MS-DOS? Agora veja o conteúdo do arquivo:

# cat arquivo1.txt
Esta é a primeira linha do arquivo 1
Esta é a Segunda linha do arquivo 1

O comando mostra o que tem dentro do arquivo. Se for um arquivo binário, você verá tudo
bagunçado e não vai entender nada. Faça um CONTROL+C para cancelar. Veja algumas opções que você
poderá usar: –b: Numerar todas as linhas de saída diferentes de espaços que comecem com 1 e –n: Numera
todas as linhas de saída, começando com 1.
dd
O comando dd possui várias outras funções interessantes, além da cópia pura e simples de
arquivos. Uma função que é bastante útil e a conversão de caracteres. Por exemplo, para converter todos as
letras maiúsculas de um documento para letras minúsculas, execute o comando dd if=arquivo1 of=arquivo2
conv=lcase.
Esse comando irá converter todos as letras maiúsculas do arquivo1 em letras minúsculas e gerar
um outro arquivo chamado arquivo2 com o resultado do processamento. Da mesma forma, se quisermos
converter todas as letras do arquivo2 em maiúsculas dd if=arquivo2 of=arquivo3 conv=ucase.
Outra aplicação interessante deste comando seria renomear todos os arquivos em um
determinado diretório com seu nome equivalente em letras minúsculas:

#!/bin/sh
for file in 'ls'
do
mv $file 'echo $file | dd conv=lcase'
done

diff
O comando diff é muito simples: ele compara dois arquivos e gera um terceiro arquivo com o
resultado da diferença entre os outros dois. Seu uso é muito simples # diff arquivo1 arquivo2 > arquivo3
Se você quer saber a diferença sem criar o arquivo, é mais simples ainda, é só não fazer o
redirecionamento, assim: diff -f /etc/passwd.old /etc/passwd.
tac
Faz o mesmo que o comando cat, mas em ordem inversa.
rm, cp e mv
Fazem a mesma ação descrita para comandos de diretórios.
tail
Lista a última parte de arquivos. A opção -f continua indefinidamente tentando ler caracteres ao
final do arquivo, assumindo que o arquivo está crescendo. Ignorado se estiver lendo de um pipe.
Caso mais que um arquivo seja informado, tail imprime um cabeçalho sempre que apresentar a
saída de um arquivo diferente para indicar a qual arquivo a saída se refere. Um exemplo de uso seria “tail -f /
var/log/message”. Outro exemplo, “tail -c5 /etc/passwd”, listará somente as últimas cinco linhas do arquivo.
head
Lista a primeira parte de arquivos. É o inverso do comando tail.
more
É um filtro para paginação de texto em um terminal. Essa versão é bastante limitada, e
comandos como o less disponibilizam opções mais poderosas do que more. Exemplo de uso seria “more /etc/
passwd”. O único detalhe é que o more não volta como o comando less.

56
Global Sul Informática

less
É um filtro para paginação de texto em um terminal semelhante ao comando more, porém mais
poderoso. Exemplo de uso seria “less /etc/passwd”. Se usarmos as teclas acima, abaixo, esquerda e direita
poderemos ajustar nosso texto na tela.
Se você pressionar a letra “v” enquanto estiver fazendo um less no arquivo, esse arquivo será
aberto dentro do “vi” para que você possa fazer suas edições. Depois para sair e voltar ao less, pressione
ESC+:wq!.
wc
O comando wc lista o número de bytes, palavras e linhas nos arquivos. Veja alguns parâmetros
usados: –l: Lista o número de linhas que contém o arquivo, –c: Lista o número total de caractéres do arquivo,
–w: Lista o total de palavras do arquivo, –b: Lista o número de bytes do arquivo.
Veja alguns exemplos:

# wc /etc/passwd --> Mostra a quantidade de linhas, palavras e letras (byte).


# wc -w /etc/passwd --> Mostra a quantidade de palavras.
# wc -l /etc/passwd --> Mostra a quantidade de linhas.
# wc -l -w /etc/passwd --> Mostra a quantidade de linhas e palavras.

grep
O comando grep lista as linhas que combinem com um padrão. O grep pesquisa nos arquivos de
entrada (ou na entrada padrão, caso nenhum arquivo seja informado ou o nome dos arquivos seja igual a “-”)
linhas que contenham o padrão informado. Por padrão, o comando grep lista as linhas coincidentes.
Por exemplo, se você quer informação sobre o processo de inicialização do Linux, o comando
correto seria: ps as | grep init. Então agora ficou mais interessante. por exemplo, se você quer informação
sobre quais são os terminais ativos em sua máquina, é só usar o comando:

# ps as | grep tty
326 2 S 0:00 /sbin/mingetty tty2
327 3 S 0:00 /sbin/mingetty tty3
328 4 S 0:00 /sbin/mingetty tty4
329 5 S 0:00 /sbin/mingetty tty5
330 6 S 0:00 /sbin/mingetty tty6
332 7 S 0:00 /sbin/mingetty tty8
334 8 S 0:00 /sbin/mingetty tty9

Comandos de controle de acessos a arquivos e diretórios


chmod
Muda a permissão de acesso a um arquivo ou diretório. Com esse comando, você pode escolher
se um usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um
arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário (exceto para diretórios
configurados com a permissão de grupo “s”, o qual será visto adiante). Exemplos de permissões de acesso:

# chmod g+r * --> Permite que todos os usuários que pertençam ao grupo dos arquivos (g)
tenham (+) permissões de leitura (r) em todos os arquivos do diretório atual.

# chmod o-r qwerty.txt -- > Retira (-) a permissão de leitura (r) do arquivo teste.txt
para os outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo
qwerty.txt).

# chmod uo+x teste.txt --> Inclui (+) a permissão de execução do arquivo qwerty.txt para
o dono e grupo do arquivo.

# chmod a+x qwerty.txt --> Inclui (+) a permissão de execução do arquivo qwerty.txt para
o dono, grupo e outros usuários.

Comandos de ligação de arquivos e diretórios


No ambiente Linux, existe algo interessante que nós chamaremos de links. Os links são ligações
para arquivos e diretórios, onde essas ligações podem ser do tipo hard e do tipo soft, também chamada de
simbólica. Um exemplo importante de uso seria quando você tivesse a necessidade de editar um arquivo que
estivesse, vamos dizer assim, a uns dez níveis abaixo do diretório “pai” (diretório de nível mais alto).

57
Treinamento Linux – Administração, Redes e Serviços

Você teria que digitar uma linha muito grande para chegar até ele, certo? Com os links isso não é
problema, pois você pode criar um link que com apenas uma letra você faz tudo isso. Legal, né?
Esse tipo de link no sistema Linux é semelhante aos atalhos do ambiente Windows. Mas são
apenas semelhantes, pois eles podem apontar para arquivos e diretórios e o propósito vai muito mais além.
ln (hard link)
A diferença entre um hard link e um soft link é que o soft link precisa do parâmetro “–s”, mas a
filosofia é a mesma. Vamos supor que o arquivo teste-1.0.txt tem 20 MB, e ele é importantíssimo para você,
mas ficar duplicando um arquivo somente para ter uma cópia de segurança e ficar gastando 40 MB do disco
rígido no momento não é muito interessante. Então, nesse caso, você cria um hard link da seguinte maneira:

# ln teste-1.0.txt teste-1.0lnk.txt

Ok! Agora você terá um hard link pronto. Um detalhe é que o Linux está informando que o
arquivo também tem 20 MB, mas isso é só para informar que esses megas são daquele arquivo vinculado. Se
você apagar o arquivo original, poderá usar o arquivo do hard link, porque ele está apontado para o local
onde existiam informações do teste-1.0.txt.
ln (soft link)
Usaremos o soft link para quando quisermos fazer uma referência simples para um caminho
muito longo, poupando assim digitação. Você perceberá que a ligação simbólica entre arquivos e diretórios é
muito utilizada. Um exemplo disso é o comando X para carregar o startx (gerenciador de janela);
encontraremos um link simbólico para a própria compilação do kernel do Linux.
O exemplo seguinte cria uma ligação simbólica (soft link) para o mouse que está como padrão na
porta ttyS0:

# ln -s /dev/ttyS0 /dev/mouse

Agora você pode reportar para /dev/mouse quando quiser dizer que é /dev/ttyS0. Um outro
exemplo de uso do comando ln -s para criar soft links é usando em processo de compilação do kernel:

# ln -s linux-2.6.22 linux

Nesse caso, estamos informando ao Linux que quando nos referirmos ao diretório linux na
verdade estamos nos referindo ao diretório linux-2.6.22.

Comandos para gerenciamento de impressão


lpq
Mostra os trabalhos de impressão atuais.
lprm
Remove um trabalho de impressão. É possível também usar o programa de administração lpc
para gerenciar a fila de impressão.
lpstat
É muito utilizado em ambientes Unix, mas também foi portado para o Linux. Ele oferece muitas
opções, das quais destacam-se: –a: Lista todos os relatórios enviados para as impressoras, –p: Lista o estado
das impressoras, –R: Mostra o número de cada job na fila de impressão, –s: Mostra um sumário do estado
das impressoras.
kups, cups ou qtcups
Executa o novo programa para configuração de impressoras em modo gráfico.

DICA: Você também poderá gerenciar as tarefas que estão sendo impressas, contando com duas
ferramentas: o klpq do KDE e o gulp do GNOME; para acioná-lo abra um terminal X e digite seus
respectivos nomes. Elas mostram propriedades da fila de impressão, tais como nome do documento
que está sendo impresso, remoção da fila de impressão (cancelar impressão) e exibição de quanto
falta para a conclusão da tarefa.

58
Global Sul Informática

Comandos mensagens no sistema


rwall
O comando rwall manda uma mensagem para todos os usuários de uma máquina. Ele é muito
simples. Acompanhe um exemplo de uso comum do comando rwall micro10 arquivo-de-mensagens.txt.
Nesse exemplo, o comando rwall pega um arquivo com mensagens e manda para o micro10 em
questão (a rede deve estar configurada e funcionando). Mas se você vai escrever poucas coisas, o comando
seria assim:

# rwall secretaria <enter>


Atenção secretaria Luciene...
O Sr. Adilson solicita a sua presença em sala
Imediatamente, faça um logout no sistema e venha logo.
^D

Como você pode ver, para mensagens curtas é muito interessante usar o comando rwall como no
caso anterior, e devemos terminá-lo combinando CONTROL+D. Vale lembrar que o usuário deverá ter
permissão do root para fazer esse tipo de coisa, e antes disso deverá estar pronto para receber mensagens em
um terminal.
write
Envia uma mensagem para outro usuário. Write permite que você se comunique com outros
usuários, copiando linhas de seu terminal para os deles. O outro usuário verá a mensagem EOF indicando o
fim da conversação. Você pode evitar que outras pessoas (exceto o superusuário) escrevam para você
utilizando o comando mesg n (desabilita) e mesg y (habilita).
talk
Permite que você converse com um outro usuário na rede e funciona assim: talk usuário [tty].
Exemplo talk adilson@micro05 tty5.
ytalk
Assim como o comando talk, ytalk também permite bate-papo (chat) na rede, mas vários
usuários podem conversar ao mesmo tempo.
ktalk, gtalk
Os comandos gtalk do gnome e ktalk KDE já são para bate-papo na rede via modo gráfico. Para
que você possa receber mensagens e enviar use o comando mesg y, e se você quiser isso de modo permanente,
apenas edite o /home/.bash_profile do usuário e insira o comando mesg y nesse arquivo.
kchat
Esse utilitário é o que mais está sendo usado pois é mais rápido e simples de se trabalhar, até
parece um IRC. Mas funciona perfeitamente em uma Intranet e pode trocar mensagens com micros externos
usando TCP/IP e o endereço da máquina remota.

Comandos de controle de execução de processos


jobs
Exibe todos os processos que estão em segundo plano.
bg (background) e fg (foreground)
Quando você executa algum comando ou programa, não precisa necessariamente ficar olhando,
até porque algumas vezes demora. Você pode minimizar o programa e deixar ele rodando em background.
Para fazer algum programa rodar em background, você deve colocar um “&” depois do comando.
Então ele ficará em background. Mas, se você já está rodando algum programa e quer que ele vá
para background, combine CONTROL+ Z, que ele fica congelado e volta para o modo shell, depois e só digitar
o comando bg, que o comando volta a rodar em background. Após o Ctrl-Z:

[1]+ Stopped ftp ftp://ftp.redhat.com


bg
[1]+ ftp ftp://ftp.conectiva.com.br &

Veja que ele colocou um “&” depois do comando para mostrar que está em background. No caso
que você queira trazer o comando de volta, e só digitar o comando fg de Foreground seguido do número dele,
que nesse caso é “1”, que ele volta à tela.

59
Treinamento Linux – Administração, Redes e Serviços

# fg 1
ftp ftp://ftp.redhat.com
...

kill
Mata um processo. O uso comum dele é kill -9 PID, onde PID é o identificador do processo que
foi conseguido com comando ps -aux | less.
Exemplos de uso: kill -9 1035. Comando kamikaze: kill -9 -1, esse comando faz com que tudo
seja morto e desse jeito a máquina entre em colapso e saia do ar. Atenção, um usuário só tem permissão de
matar os processos que ele rodou, e não os processos de outros usuários; isso só quem pode fazer é o root.
killall
Mata os processos pelo nome, não pelo PID. É muito usado também quando você configurou
algum arquivo de configuração, tipo /etc/inetd, e quer reiniciar o programa; nestes casos, mandamos um
sinal de HUP. Exemplo: killall -HUP inetd. No exemplo acima, ele reinicia os aplicativos de rede lendo
novamente os arquivos de configuração.
top
Abre em modo texto uma tela inteira e mostra todos os processo que estão ativos em seu
computador.
gtop, ktop e kpm
Faz a mesma coisa que o comando top (modo texto), só que em modo gráfico, e oferece muito
mais recursos sobre os processos que estão rodando em seu micro.
nice
Configura a prioridade da execução de um comando/programa. Sua sintaxe é nice [opções]
[comando/programa]. Onde: comando/programa é o comando/programa terá sua prioridade ajustada.
As opção -n [número]: Configura a prioridade que o programa será executado. Se um programa
for executado com maior prioridade, ele usará mais recursos do sistema para seu processamento; caso tenha
uma prioridade baixa, ele permitirá que outros programas tenham preferência. A prioridade de execução de
um programa/comando pode ser ajustada de -19 (a mais alta) até 19 (a mais baixa).
nohup
Permite você saia do sistema com o comando logout sem que todos os seus programas que
foram colocados em background sejam terminados. Exemplo:

# nohup cc program.c &


[1] 9966
# logout

Comandos de manipulação de mídias


badblock
pesquisa por setores ruins em um dispositivo e os informa. Exemplo: badblock /dev/hda1.
cfdisk
Assim como o fdisk, o cfdisk é programa manipulador da tabela de partições de discos baseada
em curses, só é mais fácil de ser compreendido.
fdisk
Manipulador da tabela de partições para o Linux. Discos rígidos podem ser divididos em um
ou mais discos lógicos chamados de partições. Essa divisão é descrita na tabela de partições encontrada no
setor 0 do disco. Use o comando fdisk -l para saber quais são os sistemas de arquivos presentes em seu disco.
Exemplo:

# fdisk -l
Disco /dev/hda: 255 cabeças, 63 setores, 784 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot Início Fim Blocos Id Sistema
/dev/hda1 * 1 392 3148708+ c FAT32 Win95
/dev/hda2 393 784 3148740 5 Estendida
/dev/hda5 393 456 514048+ 83 Linux
/dev/hda6 457 464 64228+ 82 Linux swap
/dev/hda7 465 483 152586 83 Linux
/dev/hda8 484 784 2417751 83 Linux

60
Global Sul Informática

fsck
Permite fazer reparos em LFS (linux file system). Exemplo: fsck /dev/hda5.
mkbootdisk
Cria uma cópia de um sistema funcional para inicialização via disquete. Exemplo mkbootdisk
/dev/fd0 2.4.60-cl.
mount
Monta um sistema de arquivos que pode ser fat, hpfs, dos, umsdos, ext, ext2, ext3, reiserfs, raid,
smb, ntfs etc. Sua sitaxe é: mount [opções] [dispositivo] [ponto-de-montagem]. Onde “–o” é opção de
montagem e “–t” é o tipo de sistema de montagem; dispositivo é unidade de disco; e ponto-de-montagem é o
diretório de acesso a unidade. Veja exemplos:

# umount -t ext3 /dev/fd0 /mnt/floppy --> Montar um disquete ext3.


# umount -t vfat /dev/fd0 /mnt/floppy --> Montar um disquete DOS.
# umount -t vfat /dev/hda1 /mnt/windows --> Montar uma partição Windows.

O parâmetro –t [tipo] é importante que você sai usá-lo, veja aqui os tipos de sistemas de
arquivos usado pelo dispositivo (device). São aceitos os sistemas de arquivos (os mais usados):

ext2: Para partições GNU/Linux usando o Extended File System versão 2 (a mais comum).

ext3: Para partições GNU/Linux usando o Extended File System versão 3, com suporte a
journaling, usado pelo Conectiva Linux 9.

reiserfs: Para partições reiserfs, com suporte a journaling.

vfat: Para partições Windows 95 que utilizam nomes extensos de arquivos e diretórios. É
mais usada, veja o seu arquivo /etc/fstab.

msdos: Para partições DOS normais.

iso9660: Para montar unidades de CD-ROM. É o padrão.

umsdos: Para montar uma partição DOS com recursos de partições EXT2, como permissões de
acesso, links, etc.

udf: Usada para CD´s regraváveis.

smbfs, smb, cifs: Usado pelo servidor Samba.

ntfs: Usado para montar partições de Windows NT.

hpfs: Usado para montar partições do OS/2 da IBM.

Você também poderá montar sua partição como somente leitura ou com permisão de escrita.
Para isso use “–r” para somente leitura (ready only) e “–w” para permitir escrita (wrtite) no dispositivo.
Exemplo:

mount -o remount,rw / -- > Esse comando remontará a partição raíz “/” como somente
leitura.

umount
Desmonta o sistema de arquivos. Deve ser utilizado depois de montar via comando mount um
sistema de arquivos. Você desmonta o ponto de montagem e deve estar fora dele. Exemplos:

# umount /mnt/floppy --> Desmontar um disquete ext3.


# umount /mnt/floppy --> Desmontar um disquete DOS.
# umount /mnt/windows -->Desmontar uma partição Windows.

mformat
Formata um disquete e adiciona um sistema de arquivos MS-DOS a um disquete com
formatação de baixo nível. Exemplo: mformat a:

61
Treinamento Linux – Administração, Redes e Serviços

fdformat
Executa uma formatação de baixo nível em um disquete. O dispositivo é normalmente um dos
seguintes (para dispositivos de disquetes, major=2, e o minor é mostrado somente para propósitos de
informação):

/dev/fd0d360 (minor = 4) /dev/fd0h1200 (minor = 8)


/dev/fd0D360 (minor = 12) /dev/fd0H360 (minor = 12)
/dev/fd0D720 (minor = 16) /dev/fd0H720 (minor = 16)
/dev/fd0h360 (minor = 20) /dev/fd0h720 (minor = 24)
/dev/fd0H1440 (minor = 28) /dev/fd1d360 (minor = 5)
/dev/fd1h1200 (minor = 9) /dev/fd1D360 (minor = 13)
/dev/fd1H360 (minor = 13) /dev/fd1D720 (minor = 17)
/dev/fd1H720 (minor = 17) /dev/fd1h360 (minor = 21)
/dev/fd1h720 (minor = 25) /dev/fd1H1440 (minor = 29)

Exemplo:

fdformat /dev/fd0H1440

Comandos de processamento em rede (interno e externo)


ftp, ncftp, curl, rsync, wget e gftp
Os comandos ftp (modo texto) e o gftp (modo gráfico) permitem que você faça um ftp em
qualquer máquina da rede que tenha autorização, ou então permite fazer ftp da Internet (download e upload).
Vamos supor que você tem autorização na máquina com IP: 192.168.100.1. Então quer entrar na nessa
máquina de rede para poder buscar um arquivo qualquer. O comando correto seria ftp 192.168.100.1.
rcp
O comando rcp copia arquivo de uma outra máquina sem passar por processo de ftp. Mas isso
somente funcionará se a rede estiver configurada bem certinho (rede homogêna, IPs corretos, aliases de
máquinas corretos, permissões ativadas etc). O procedimento abaixo irá copiar todo o diretório arquivoX do
computador chamado ovnis para o diretório corrente. Exemplo rcp -r ovnis:/arquivoX .
Se você usar o parâmetro -r o comando rcp copiará o conteúdo dos subdiretórios abaixo do
diretório corrente.
rsh
O comando rsh executa um comando qualquer no host (micro na rede) que você especificar. Se
for chamado se a especificação de um comando, ele executará uma shell interativa no host remoto. Veja
algumas opções de uso comum: “-l” permite executar a shell como um outro usuário, “-n” lê dados de
/dev/null e “-d” liga a opção de debugging do socket. Exemplo:

# rsh -l adilson outro.host


# rsh micro10

ssh, telnet
Permite abrir um canal de comunicação entre duas máquinas da rede através de um ssh ou
telnet. Se der certo, deveremos informar nome de usuário e a senha. Exemplo: telnet 192.168.200.8. O micro
8 será solicitado para comunicação.
wget, kget
O comando wget é muito interessante, pois podemos fazer via console depois que estivermos
conectados à Internet o espelhamento de uma página da Internet. O espelhamento é a cópia idêntica de uma
página e sua hierarquia de diretórios para o nosso computador. O processo é muito simples:

# wget -R nome.do.site.com.br
# wget -nH -r -l2 http://www.redhat.com

62
Global Sul Informática

Comandos para manipulação de usuários e grupos


useradd
Adiciona um novo usuário no sistema. Por default, quando um novo usuário é adicionado, é
criado um grupo com o mesmo nome do usuário. Será criado também um diretório home com o nome do
usuário por exemplo: /home/adlson, /home/janaina, /home/gabriel etc.

# useradd adilson
# useradd linux

userdel
Remove um usuário do sistema. Se for usado somente o comando userdel seguido do nome o
usuário, apenas o seu login será removido, porém o seu diretório /home/nome_do_usuário ainda estará no
sistema (para um exclusão mais tarde). Mas se você quer eliminar o usuário sem dó e com scom o seu home,
use o comando: userdel -r usuário.

# userdel ricardocd
# userdel henrique

users
Exibe os nomes de usuários que estão usando o sistema no momento. Os nomes de usuários são
mostrados através de espaços sem detalhes adicionais.
chfn
Faz a troca de dados usados pelo comando finger (informações extras de usuários cadastrados
no sistema). Exemplo:

# chfn -f “Adilson Rodrigues Bonanovisky” adilson

id
Exibe a identificação atual do usuário, grupo primário e outros grupos a que pertence. Exemplo:

# id -g -n -u -r

logname
Exibe o seu login, ou seja, o seu nome de usuário conectado ao sistema. Exemplo: logname.
passwd
Serve para adicionar uma senha de acesso a um usuário já cadastrado no sistema. Se você quiser
apenas atualizar a senha desse usuário, use o parâmetro “-u”, que o usuário agora terá uma nova senha.
Exemplo:

# passwd root
Changing password for user root
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully

chpasswd
Permite que a partir de um arquivo lote de texto possamos atualizar as senhas de vários usuários
de uma única vez sem ter que passar pelo transtorno de atualizar ‘no braço’ as senhas de todos os usuários. Se
ao comando for passado o parâmetro “-e”, as senhas estarão em forma criptográfica. Seu uso bem simples,
dentro do arquivo de lote, linha por linha coloque assim:

nome_do_usuário:senha_do_usuário
nome_do_usuário:senha_do_usuário
...

groupadd
Cria um grupo no sistema Linux. Alguns usuários gostam de criar grupos com quatro letras e em
maiúscula, pois assim os grupos se diferenciam dos grupos já existentes no sistema. Exemplo:

63
Treinamento Linux – Administração, Redes e Serviços

# groupadd visitante
# groupadd administracao
# groupadd expedicao
# groupadd hackers

groupdel
Do mesmo modo que você pode eliminar usuário do sistema, poderá eliminar grupos também.
Exemplo:

# groupdel visitante
# groupdel hackers

groups
Mostra os grupos a que o usuário pertence no sistema. Exemplo: # groups.
sg
Executa um comando com outra identificação de grupo. A identificação do grupo de usuário é
modificada somente durante a execução do comando. Exemplo sg root ls -laF /root.
newgrp
Altera a identificação de grupo do usuário. Para retornar à identificação anterior, digite exit e
ENTER. Para executar um comando com outra identificação de grupo de usuário, use o comando sg, como
vimos anteriormente. Exemplo newgrp -HACK.
chgrp
Troca a propriedade de grupo dos arquivos fornecidos para o grupo, o qual pode ser um nome de
grupo ou a sua identificação numérica. A opção “-R” altera recursivamente a propriedade de diretórios e de
seus conteúdos.
chown
Altera o usuário e/ou a propriedade de grupo de cada arquivo fornecido conforme especificado
pelo primeiro argumento sem opção como segue: se somente um nome de usuário (ou número de
identificação do usuário) for fornecido, aquele usuário torna-se o proprietário do arquivo fornecido, aquele
usuário é feito o proprietário dos arquivos, e o grupo dos arquivos não será alterado.
Se um nome de usuário é seguido de dois pontos e um nome de grupo (ou número de
identificação de grupo) sem espaços entre eles, a propriedade de grupo do arquivo é alterada também.
Exemplo :

# chown -R adilson:hack /home/adilson/*.

Comandos de som no sistema


alsconf, sndconfig, system-config-soundcard
Permite configurar o servidor de som ALSA (placa de som).
cdplay e cdp
O cdplay é um programa em modo texto e é interativo com o usuário para controlar e tocar cd de
músicas.
cdparanoia
Presente hoje em várias distribuições Linux é responsável pela extração de música em cd-áudio
para o formato CDDA, que poderá ser gravada em cd-rom e/ou convertida para padrão mp3 em uma outra
hora. Também os formatos salvos poderão ser WAV, AIFF, AIFF-C ou RAW. Esse comando permite várias
personalizações, e para saber todas elas use o comando: man cdparanoia.
Bladeenc
Esse comando é responsável pela conversão de um arquivo de aúdio no formato WAV para o
formato mp3. Ele também permite várias personalizações, e para saber todas elas use o comando: man
bladeenc.
grip
Extrai e cria músicas mp3 com boa taxa de qualidade.
mp3c
Cria CD´s de áudio com pesquisa em freedb.org.

64
Global Sul Informática

mpg123 e mpg321
Toca músicas mp3 em modo texto.
play
Executa um arquivo de som em qualquer disposivo já configurado. O comando rec grava/cria
um arquivo de áudio em qualquer formato.
alien
Converte ou instala pacotes no sistema. Os parâmetros são:

-d, --to-deb: Constroi/converte pacotes para o formato debian (deb).


-r, --to-rpm: Constroi/converte pacotes para o formato rpm.
-t, --to-tgz: Constroi/converte pacotes para o formato tgz.
--to-slp: Constroi/converte pacotes para o formato slp.
-i, --install: Instala automaticamente os pacotes gerados.

Exemplos:

# alien --to-deb package.rpm


# alien --to-rpm package.deb
# alien -i package.rpm
# alien --to-rpm --to-tgz foo.deb bar.rpm baz.tgz

apt-cdrom
Esse comando é usado para adicionar um novo cd-rom ao arquivo de listas de mídias às
pesquisas de pacote para instalação.
apt-get update
Atualiza um ou mais pacotes via apt.
apt-get upgrade
Atualiza um ou mais pacotes via apt.
apt-get install pacote
Instala um ou mais pacotes via apt.
apt-get remove pacote
Remove um ou mais pacotes via apt.
Kpackage
Instalador gráfico de programas do KDE.
./configure
Quando for scripts de instalação com o arquivos-fonte, esse comando faz as configurações
necessárias.
make
Quando for scripts de instalação, esse comando cria os objetos necessários para prosseguir com
a instalação.
make intall
Quando for scripts de instalação, esse comando instala os binários.
rpm -ivh
Instala um pacote no sistema.
rpm -Uvh
Atualiza um pacote do sistema.
rpm -e pacote
Remove o pacote do sistema.
synaptic
Gerenciador de pacotes, muito bom, faz gerenciamento de cd-rom, faz download de arquivos,
busca e instala automaticamente todas as dependências de um pacote, desinstala resolvendo dependências e
atualiza um sistema inteiro.

65
Treinamento Linux – Administração, Redes e Serviços

Comandos de empacotamento e compressão de arquivos


bzip2, bunzip2
Compacta ou expande arquivos. O bgzip2 reduz o tamanho dos arquivos mais do que os outro
compactadores.
compress, uncompress, zcat
Compacta e ou expande arquivos.
gzip, gunzip, zcat
Compacta ou expande arquivos. O gzip reduz o tamanho dos arquivos usando um código
Lempel-Ziv (LZ77). Sempre que possível, cada arquivo é substituído por outro com a extensão .gz, mantendo
o dono, as permissões e as datas de modificação.
tar
Não é um compactador e sim um arquivador, pois ele junta vários arquivos em um só, mas pode
ser usado em conjunto com um compactador como o gzip, bzip2 ou zip para armazená-los compactados. O
comando também é muito usado para cópias de arquivos especiais ou dispositivos do sistema. É comum
encontrar arquivos com a extensão .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z etc.
O primeiro é um arquivo normal gerado pelo tar e todos os outros são arquivos gerados através
do comando tar com um programa de compactação: gzip (.gz), bzip2 (.bz2) e compress (.Z).
zip, zipcloak, zipnote, zipsplit
Empacota e compacta arquivos. O programa é útil para empacotamento de uma série de
arquivos para distribuição, arquivamento e para economizar espaço em disco temporariamente,
compactando arquivos e diretórios sem uso.

Comandos de verificação de logs /var


cat /var/log/boot.log
Mostra informações sobre os dias em que o micro foi ligado.
cat /var/log/cron
Mostra as informações sobre tarefas agendadas no sistema.
cat /var/log/messages
Mostra todas as informações enviadas pelo kernel em processo de inicialização de máquinas.
cat /var/log/secure
Mostra em quais terminais (tty) usuários fizerem login. É possível saber o mês, dia, hora, nome
da máquina (hostname) que fez o login e em qual tty.

# cat /var/log/secure:
Mar 6 14:42:50 adilson login: ROOT LOGIN ON tty1
Mar 8 09:57:29 luzia login: ROOT LOGIN ON tty2
Jun 5 11:58:55 gabriel login: ROOT LOGIN ON tty3
Jun 5 13:23:29 sonizia login: ROOT LOGIN ON tty4
Jun 5 13:28:05 kelly login: ROOT LOGIN ON tty2
Jul 21 08:50:02 anarosa login: ROOT LOGIN ON tty4
Jul 22 17:38:59 adenisia login: ROOT LOGIN ON tty2
Ago 22 17:46:32 marcos login: ROOT LOGIN ON tty5
Ago 22 17:54:32 marlene login: ROOT LOGIN ON tty6
Set 1 08:45:57 adilson login: ROOT LOGIN ON tty6

last e lastlog
Mostra uma lista das entradas e saídas dos usuários do sistema e o comando lastlog Informa o
último login do usuário que utilizou o terminal.

Comandos diversos
alias e unalias
Permite criar temporariamente um ‘atalho’ para um comando ou seqüência de comandos e o
comando unalias permite remover o que foi setado pelo alias.
arch
Exibe a arquitetura do computador.
apropos
Pesquisa a base de dados whatis por expressões.

66
Global Sul Informática

arp
Manipula o cache ARP do sistema.
at, batch, atq, atrm
Agenda, examina ou exclui tarefas para execução posterior. Os comandos at e batch lêem
comandos da entrada padrão ou de um arquivo especificado que devem ser executados em um momento
posterior, usando o shell /bin/sh. O comando at executa os comandos em um determinado momento.
atq
O comando atq lista as tarefas pendentes do usuário, exceto quando o usuário é o superusuário;
neste caso, as tarefas de todos os usuários são listadas.
atrm
O comando exclui tarefas agendadas pelo comado at.
batch
O comando batch executa comandos quanto o nível de uso do sistema permitir; em outras
palavras, quando a carga média de trabalho do processador, lida de /proc/loadavg, cair abaixo de 0.8, ou o
valor especificado na chamada de atrun.
aumix
Ajusta os valores do audio mix.
bzcat
Lista os arquivos compactados.
clear
Limpa a tela.
clock
Retorna o tempo de CPU.
cut
O comando cut extrai as partes selecionadas de cada arquivo na saída padrão (stdout); ele é
usado quando queremos apenas um pedaço de dentro do arquivo, onde, por exemplo, pode começar na
coluna dois e terminar na coluna quatro. Vamos supor que desejamos saber o userid e os usuários locais da
máquina; então, deveremos usar o seguinte comando cut -d: -f1,5 /etc/passwd.
echo
Mostra uma linha de texto.
find
Pesquisa arquivos em um hierarquia de diretórios. Exemplo:

# find /usr/X11R6 -name "*.c" -print


/usr/X11R6/include/X11/Xaw/Template.c
/usr/X11R6/include/Xaw3d/Template.c
/usr/X11R6/include/Xaw3d/Template2.c
/usr/X11R6/include/Xaw3d/Template3.c

grep, egrep, fgrep


Lista as linhas que combinam com um padrão.
jed, joe e jpico
São simples editores de texto em modo texto.
login
O comando login é usado quando se obtém acesso ao sistema. Ele pode ser usado para alterar
de um para outro usuário.
logout
O comando logout encerra o console (modo texto) e volta ao prompt. Se você estiver dentro de
um terminal em modo gráfico, o terminal será fechado.
lsattr
Lista atributos de arquivos do sistema Linux.
mail
Permite mandar e receber emails no computador.

67
Treinamento Linux – Administração, Redes e Serviços

mtools
Utilitários para acessar discos MS-DOS no Unix. O mtools é uma coleção de ferramentas de
domínio público que permite aos sistemas Unix manipular arquivos MS-DOS: leitura, gravação e
movimentação de arquivos em sistemas de arquivos MS-DOS (tipicamente disquetes).
pstree
Exibe uma árvore de processos que estão rodando.
printenv
Exibe as variáveis locais do sistema.
quota
Exibe o espaço em disco e quanto está em uso por um usuário.
quotacheck
Faz uma varredura em um sistema de arquivos procurando por quotas de discos, cria e faz
também reparações em quotas de disco.
quotaon, quotaoff
Liga e desliga o suporte a quotas de disco.
reboot
Executa o nível 6 do sistema Linux reinicializando o sistema.
sleep
Faz com que o micro ‘adormeça’ por um determinado período, muito útil para testar processos
em arquivos. Os parâmetros usados são: s = seconds | m = minutes | h = hours | d = days
setterm
O comando setterm permite você troque as cores na sua console. As cores possíveis são: black,
blue, green, cyan, red, magenta, yellow, white e default.
slogin
Faz conexão com outro micro, semelhante ao ssh.
sort
Ordena linhas de arquivos textos.
split
O comando split é divide um arquivo grande em pequenas partes. Exemplo: split -b 1400k
arquivo_grande.
startx
Executa o carregamento de uma interface gráfica.
sync
Sincroniza o sistema de arquivos quando este não estiver em sintonia. Use sync; sync; reboot
para sintonizar o sistema.
su
Executa um interpretador de comandos com substituição de usuário e grupo. O comando su não
administra /bin/sh ou outros interpretadores de forma especial. Em sistemas que tenham syslog, o comando
su pode ser compilado para reportar falhas e, opcionalmente, comandos su bem-sucedidos.
sudo
Executa um comando como outro usuário.
shutdown
Desliga o sistema após determinado tempo (programável) de uma forma segura. Todos os
usuários que estiverem acessando o sistema serão notificados que o sistema está prestes a ser desligado, e o
programa login será bloqueado. Este comando somente pode ser executado pelo usuário root ou quando é
usada a opção “–a” pelos usuários cadastrados no arquivo /etc/shutdown.allow que estejam logados no
console virtual do sistema.
tee
Lê da entrada padrão e grava na saída padrão.
timeconfig
Interface simples para configurar horário do sistema.
touch
Altera o rótulo de tempo do arquivo ou cria um arquivo vazio.

68
Global Sul Informática

updatedb
Atualiza um banco de dados de nome de arquivos.
uptime
Diz há quanto tempo o sistema está funcionando.
uuname
Mostra o alias do nome da máquina.
wc
Lista o número de bytes, palavras e linhas nos arquivos. Se usarmos o comando wc /etc/passwd
ele mostrará a quantidade de linhas, palavras e letras (bytes) no arquivo /etc/passwd.

Comandos genéricos do ambiente gráfico Gnome


*(depende do que estiver instalado em seu computador)
galeon: Navegador leve e rápido com suporte a Java Script, Java, Flash e vários plug-ins.
gataxx: Jogo Interessante de estratégia de tomar a pedra do outro.
gconf-editor: Editor para o configurado do sistema G-Conf.
gdm: Gerenciador de login gráfico do ambiente Gnome.
gdmconfig: Utilitário configurador do gerecniador de login gdm.
gedit: Editor genérico de textos do gnome.
gfloppy: Formatador de disquetes do Gnome.
ggv: Visualizador de arquivos postscript.
gimp: Ótimo editor de imagens no estilo photoshop para Linux.
gman: Visualizador de páginas de manual.
gmplayer: Tocador de músicas.
gnibbles: Jogo da cobrinha faminta.
gnobots2: Joguinho de robos.
gnome: Ambiente gráfico gnome.
gnome-background-properties: Para trocar o papel de parede.
gnome-cd: Tocador de CD do gnome.
gnome-cd-properties: Configurador autorun para CD e DVD do Gnome, mas que serve também
para outros gerenciadores.
gnome-character-map: Mapa de caracteres.
gnome-control-center: Centro de controle do Gnome.
gnome-default-applications-properties: Configurador de lançamento de aplicções.
gnome-file-types-properties: Configurador de tipo de arquivo e aplicações executáveis.
gnome-font-install, gnome-font-properties: Instalador de visualizador de fontes.
gnome-help: Sistema de ajuda do Gnome.
gnome-keybinding-properties: Configurador de atalhos de teclado.
gnome-keyboard-properties: Configurador de propriedades de teclado.
gnome-mouse-properties: Configurador de propriedades de mouse.
gnome-network-preferences: Configurador de proxy de rede.
gnome-panel: Carrega o painel do Gnome.
gnome-search-tool: Localizador de arquivos.
gnome-session: Gerenciador de janelas Gnome.
gnome-session-properties: Configrador de propriedades.
gnome-sound-properties: Propriedades de som do Gnome.
gnome-sound-recorder: Gravador de som do Gnome.
gnome-stones: Joguinho interessante de caça ao diamante.
gnome-terminal: Terminal Gnome.
gnome-text-editor: Editor de textos genéricos do Gnome.
gnome-theme-manager: Gerenciador de temas do Gnome.
gnome-volume-control: Configurador de volumes do Gnome.

69
Treinamento Linux – Administração, Redes e Serviços

gnome-window-properties: Configurador de propriedades de janelas no desktop.


gnome-wm: Gerenciador de janelas Gnome.
gnometris: Jogo do tetris.
gnomine: Jogo do campo minado.
gnucash: Ótimo aplicativo para controlar melhor suas contas e seu dinheiro.
gvim: Editor vi em modo gráfico.
gwenview: Ótimo navegador visualizador de imagens.

Comandos genéricos do ambiente gráfico KDE


*(depende do que estiver instalado em seu computador)
k3b: Ótimo programa para gravação de de CD.
k3bsetup: Configurador do k3b.
kaboodle: Reprodutor de vários tipos de arquivos de mídia.
kaddprinterwizard: Assistente de configuração de impressora.
kaddressbook: Excelente catalogador e agenda de endereços.
kalarm: Agente pessao de alarmes e mensagens.
kalarmd: Daemon do kalarm.
kalzium: Pequeno e importante utilitário da tabela periódica.
kappfinder: Ótimo utilitário que encontra aplicativos para incluir no menu do KDE.
karm: Pequena ferramenta para controle de tempo no KDE.
kasteroids: Jogo de asteroides. Muito bom e divertido. Ótimo para tirar o stress.
kate: Ótimo editor de texto do KDE.
katomic: Excelente jogo para montar fórmulas químicas.
kaudiocreator: Utilitário para gravação de CD's.
kbackgammon: Jogo de gamão.
kblackbox: Jogo de combinação de cores.
kbounce: Jogo de prender bolinhas.
kcalc: Calculadora do KDE.
kcharselect: Ótimo mapa de caracteres. Semelhante ao do Windows e ao menu Inserir ->
Símbolo... do MS Word.
kchat: Ótimo utilitário para trocas de mensagens internas.
kcolorchooser: Selecionador de cores para aplicações.
kcoloredit: Semelhante ao kcolorchooser.
kcontrol: Centro de controle do KDE.
kcron: Editor de tarefas do sistema, muito simples de usar.
kdat: Ótimo e rápido utilitário para se fazer backup em fitas.
kde: Executa o gerenciado KDE.
kdeautorun: Utiliário de autorun em CD's.
kdedesktopcd: Utilitário criador do ícone do CD-ROM no desktop.
kdeeject: Ejeta um mídia montada em um ponto de montagem.
kdepasswd: Utilitário para troca de senhas.
kdeprintfax: Utilitário para se trabalhar com faxes no KDE.
kdesktop: Carrega o desktop padrão do KDE.
kdessh: Efetuar conexões SSH dentro do ambiente KDE.
kdf: Utilitário kdiskfree que mostra informações sobre as partições do sistema.
kdm: Gerenciador de login gráfico do KDE.
kdm_config: Configurador do kdm.
kdvi: Leitor de arquivos .kdvi do sistema.
kedit: Editor de propósito genérico do KDE.
keditbookmarks: Editor e geenciador dos "Favoritos" do Konqueror.
keduca: Criador de testes/exames de perguntas e respostas baseados em formula'rios.

70
Global Sul Informática

kenolaba: Jogo de mover bolinhas coloridas. Jogo de estratégia.


kernelversion: Comando para mostrar a versao do kernel.
kfax: Outro utilitário para se trabalhar com faxes no Linux.
kfind: Ferramente para se fazer busca em arquivo pelo sistema. Semelhante ao Localizar do
ambiente Windows.
kfloppy: Formatador de disquetes do KDE.
kfouleggs: Jogo estiulo tetris com colinhas coloridas.
kgeo: Utilitáriod de geometria interativa.
kget: Semelhante ao GetRight do ambeinte Windows.
kghostview: Utilitário para leitura de arquivos postscript.k
khangman: Jogo da forca.
khelpcenter: Manual eletrônico do KDE.
khexedit: Editor hexadecimal do KDE.
kiconedit: Editor de ícones do KDE.
kinfocenter: Utilitário para exibir informações sobre o sistema.
kjobviewer: Visualizador de filas de impressão.
kjots: Pequeno utilitáriopara controle de notas.
klickety: Jogo semelhante ao tetris onde as peças já estão sobre postas e você clica nas cores
iguais para tirar as pedras.
klines: Joguinho legal onde você deverá formar umalinhas inteira com bolinhas coloridas.
klipper: Área de transferência do KDE.
kmahjongg: Famoso jogo Mahjong.
kmail: Ótimo cliente de email do KDE.
kmailcvt: Importador de contas de email do Outlook.
kmenuedit: Excelente utilitáriopara gerenciar (manutenção) os menus do KDE.
kmessedwords: Jogo de advinhar palavras.
kmid: Tocador de arquivos .mid.
kmidi: Tocador de arquivos .midi.
kmines: Jogo de minas do KDE.
kmix: Mixer para controle de volumes.
kmixctrl: Semelhante ao kmix.
kmplayer: Midia player do KDE.
knode: Excelenet leitor de news do KDE.
knotes: “Papéis” para lembrete na tela do seu micro.
kolf: Joguinho de golf.
konqueror: Excelente gerenciador de arquivos e navegador de Internet.
kooka: Utilitário para scaner. Suporta boa quantidade de scaners.
kopete: Muito bom gerenciador de mensagens semelhante ao ICQ.
korganizer: Excelente organizador pessoal do KDE.
kpackage: Gerenciador de pacote do KDE.
kpager: Visualizador de Minitores virtuais do KDE.
kpaint: Paint do KDE.
kpat: Jogo de paciência do KDE.
kpersonalizer: Pequeno utilitário para personalizar o KDE.
kpilot: Utilitário para sincronizar arquivos com o Palm Pilot.
kpm: Gerenciador de processos.
kpoker: Jogo de poker no Linux.
kpovmodeler: Para quem sabe é um modelador 3D de objetos.
kppp: Utilitáriopara conexões discadas no Kde.
kprinter: Utilitário de caixa de diálogo para impressão.
krdc: Abre um desktop remoto em sua máquina. Aceita todos os serviços VNC.
kreatecd: Utilitário para gravação de CD's.

71
Treinamento Linux – Administração, Redes e Serviços

krec: Utilitário para gravação de CD's do KDE.


kreversi: Jogo reversi.
krfb: Utilitário para compartilhamento remoto de desktop.
ksame: Joguinho legal de bolinhas coloridas.
kscd: Tocador de CD's do KDE.
kshisen: Jogo muito bom semelhante ao madjong.
ksim: Pequeno utilitário monitor de sistemas baseado em plug-ins.
ksirc: Excelente IRC. Fique horas batendo papo ou estudando com amigos na Internet.
ksirtet, ksmiletris: Jogo do tetris.
ksnake: Jogo da cobrinha faminta.
ksnapshot: Ótimo utilitário para captura de telas e janelas.
ksokoban: Todo mundo conhece, agora mostre que você é bom nesse jogo.
ksplash: Tela de abertura do KDE.
kstars: Conecte-se na Internet e conheca o universo com esse utilitário.
ksyms: Mostra símbolos exportados do kernel.
ksysguard: Mostra informações detalhadas sobre processos do sistema.
ksysv: Gerenciador de runlevels do sistema Linux.
ktip: Mostra dicas úteis do kdald.
ktouch: Treino de datilografia no Linux.
ktron: Lembra do filme Tron? Então, esse jogo é simples mas é interessante de brincar com ele.
ktuberling: Que tal montar o "homem batata".
kuickshow: Ótimo visualizador de imagens.
kuser: Gerenciador de usuários e grupos de usuários.
kview: Visualizador de imagens.
kvirc, kvirc-config: Outro excelente programas de IRC.
kwin4: Jogo interessante de ligue quatro. Tente colocar quatro peças suas lado a lado, se
conseguir.
kwrite: Editor generico de textos.
kxconfig: Configurador XF86Config em modo gráfico. Agora muito mais fácil de usar.

72
Global Sul Informática

Anotações:

73
Treinamento Linux – Administração, Redes e Serviços

Anotações:

74
Global Sul Informática

Capítulo 3

Gerenciamento de usuários e grupos


O sistema Linux é realmente um sistema multitarefa, ou seja, várias pessoas podem usar o
sistema simultaneamente para extrair recursos que podem estar compartilhados ou não. É muito comum em
um computador vários usuários logados e trabalhando em conjunto, tais como:

1. Compartilhando impressora.
2. Compartilhando Internet e arquivos.
3. Executando programas remotamente.
4. Compartilhando desenvolvimento de projetos etc.

Enfim, o Linux realmente faz isso e faz melhor que qualquer outro sistema operacional, diga-se
de passagem; o que vamos aprender aqui é como configurar, criar e gerenciar usuários e grupos de um modo
correto. Mesmo sendo um computador isolado, várias pessoas podem usar o mesmo micro, porque o Linux
cria perfis de usuários independentes e não atrapalha outro usuário que for usar o computador em uma outra
hora.
Por exemplo, o usuário adilson pode usar o micro com a interface gráfica Window Maker, assim
como um outro usuário poderá usar o micro em uma outra hora e usar a interface gráfica KDE; ainda assim,
poderá mandar um e-mail para o usuário adilson e vice-versa. Este, quando fizer o login, será notificado que
tem um novo e-mail e poderá ver do que se trata. Isso é muito útil em empresas que têm turnos de turmas de
funcionários, como serviço de digitação. Para trabalharmos com contas de usuários1 e de grupos deveremos
conhecer os comandos adduser, addgroup, passwd, newgrp, userdel, groupdel, sg, chfn, id, logname, users e
groups, kuser e outros programas que poderão acompanhar a sua distribuição.

Gerenciamento de usuários e grupos


Vamos aprender aqui como é que poderemos criar e gerenciar usuários e grupos com comandos
de modo texto, os quais são simples de serem entendidos e para isso usaremos alguns comando relativos aos
comandos de usuários.
O comando adduser ou useradd
Permite que seja adicionado um usuário ou grupo no sistema. Por padrão, quando um novo
usuário é adicionado, é criado um grupo com o mesmo nome do usuário. O modo mais simples de se criar um
usuário é assim:

# useradd <nome_do_usuário>

Será então criado um diretório $HOME (diretório do usuário) com o nome do usuário (a não ser
que o novo usuário criado seja um usuário do sistema) que receberá uma identificação. Geralmente o local
onde estão os usuários é /home/<nome_do_usuário>. Se fosse digitado o comando useradd adilson, no
nosso caso é o usuário adilson que residirá em /home/adilson. A não ser que seja especifiado um outro lugar
é no /home que residirão os usuários.
A identificação do usuário (UID) escolhida será a primeira disponível no sistema, especificada de
acordo com a faixa de UIDS de usuários permitidas no arquivo de configuração /etc/adduser.conf ou
/etc/default/useradd. Esse é o arquivo que contém os padrões para a criação de outros usuários no sistema
que se parecem com o exemplo a seguir:

75
Treinamento Linux – Administração, Redes e Serviços

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Onde o diretório padrão é o/home, a conta não expira, sempre estará ativa; o shell que o usuário
vai usar é o bash e o diretório base para criação é /etc/skel.
Esses arquivos são responsáveis pelas configurações de alguns programas para o modo gráfico
(.Xdefaults), comandos pré-definidos para o usuário (.alias), comandos executados quando o usuário estiver
se desconectando do sistema (.bash_logout), quando o usuário estiver se conectando no sistema
(.bash_profile) e comando novos que o usuário poderá criar (.bashrc)

DICA: O único usuário que o UID é igual a 0 (zero) e GID também igual a 0 (zero) é o usuário root
que é “Deus” no mundo Linux; inclusive, não é muito aconselhável você estar conectado no sistema
como esse usuário, pois se você digitar o comando rm -fr * &, esqueça, o estrago já estará feito e
você deverá reinstalar todo o sistema.

A seguir, um exemplo de um usuário que acabou de ser criado no sistema; esse acabou de usar
alguns programas e também o modo gráfico. Observe que no sistema Linux a grande maioria dos arquivos de
configuração começa com um ponto “.” isso quer dizer que esse arquivo estará oculto de uma listagem
normal:

total 12
drwx------ 2 gabriel gabriel 1024 Out 2 2003 ./
drwxr-xr-x 5 root root 1024 Out 2 2003 ../
-rw-r--r-- 1 gabriel gabriel 3304 Out 2 2003 .Xdefaults
-rw-r--r-- 1 gabriel gabriel 508 Out 2 2003 .alias
-rw-r--r-- 1 gabriel gabriel 24 Out 2 2003 .bash_logout
-rw-r--r-- 1 gabriel gabriel 230 Out 2 2003 .bash_profile
-rw-r--r-- 1 gabriel gabriel 124 Out 2 2003 .bashrc
-rw-r--r-- 1 gabriel gabriel 154 Out 2 2003 .cshrc
-rw-r--r-- 1 gabriel gabriel 593 Out 2 2003 .xserverrc

O comando useradd tem vários parâmetros opcionais e recomendo que você leia a página de
manual dele para saber mais. Use o comando man adduser para abrir sua página de manual.
O comando passwd
Todo usuário cadastrado no sistema Linux obrigatoriamente precisa ter uma senha de acesso; o
comando passwd cria ou altera a senha do usuário ou grupo. Um usuário somente pode alterar a senha de sua
conta, mas o superusuário root pode alterar a senha de qualquer conta de usuário, inclusive a data de
validade da conta etc. Os donos de grupos também podem alterar a senha do grupo com este comando.
A opção “–u” é usada para indicar que a atualização somente pode ser efetuada para senhas
expiradas, mantendo-se a senha atual até a data de sua expiração.
Mas, se preciso for, alterar a senha de uma conta de usuário sem que ela tenha expirado é muito
simples, bastando para isso usar o comando passwd <nome_do_usuário> e proceder de forma normal que
este terá a sua nova senha de acesso ao sistema. Também é possível cadastrar uma senha mediante o
comando userpasswd.
Os dados da conta do usuário como nome, endereço e telefone também podem ser alterados com
esse comando ou pelo comando chfn, o qual troca o finger dos usuários, ou seja, essas informações
mencionadas. Exemplo:

# passwd gabriel
Changing password for user adilson
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully

76
Global Sul Informática

A seguir você pode ver um exemplo de um pequeno servidor Linux onde há alguns usuários já
cadastrados no sistema:

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:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/srv/ftp:
nobody:x:65534:65534:Nobody:/home:
sshd:x:100:233:sshd:/var/empty:/bin/false
postfix:x:101:101:postfix:/var/spool/postfix:
gdm:x:42:42::/home/gdm:/bin/bash
adilson:x:500:500:Adilson Bonan:/home/adilson:/bin/bash
gabriel:x:501:501:Gabriel TBonan:/home/gabriel:/bin/bash
luzia:x:502:502::/home/luzia:/bin/bash
cristiane:x:503:503::/home/cristiane:/bin/bash
leniza:x:504:504::/home/leniza:/bin/bash

O funcionamento desse arquivo é simples, vejamos uma linha:

cristiane:x:503:503::/home/cristiane:/bin/bash

Nós temos o nome do usuário, a senha dele (quando aparecer um “x” a senha está criptografada
e está no /etc/shadow), o grupo do usuário, seu lugar no sistema e qual interpretador ele usará. Veja a seguir
uma listagem parcial do arquivo /etc/shadow:

root:$1$jhjnccLx$rnf6OEFKUBJwUNdXf0em81:12290:0:99999:7:::
shutdown:*:12290:0:99999:7:::
halt:*:12290:0:99999:7:::
mail:*:12290:0:99999:7:::
ftp:*:12290:0:99999:7:::
nobody:*:12290:0:99999:7:::
gdm:!!:12290:0:99999:7:::
adilson:$1$LRJ6X3sT$h/rFLrNzP70nauO5lpRlo.:12290:0:99999:7:::
gabriel:$1$3YzQ7O2E$4Q9hPsVJd00fY3F8jsq/f1:12290:0:99999:7:::
luiza:wLl43UZ68Kw5E:12327:0:32767:7:::11536288
cristiane:wTuaeL941YU1I:12327:0:32767:7:::
leniza:wvEcsoeUhPNGs:12327:0:32767:7:::0

Esse arquivo, o /etc/shadow, está criptografado e geralmente não nada fácil descriptografá-lo. A
maioria dos sistemas Linux usa uma criptografia chamada MD5, o que já complica as coisas para um hacker.
Mas vamos fazer um pequena observação; reparem as linhas:

...
luciene:!!:12327:0:32767:7:::97
fernando:!!:12327:0:32767:7:::32767
marcio:GIzHMV3kJFO.o:12327:0:32767:7:::0
...

A usuária luciene e o usuário fernando apresentam “!!” em lugar da senha criptografada. Isso
significa que eles ainda não possuem senha, o que é um perigo pois os torna altamente vulneráveis para os
hackers. No entanto, o usuário marcio já apresentam sua senhas criptografada, dificultado assim a quebra de
senhas. E por falar em quebra de senhas, o melhor quebrador de senhas é o Jonh The Riper.

77
Treinamento Linux – Administração, Redes e Serviços

DICA: Caso esteja usando senhas ocultas (shadow passwords), as senhas dos usuários serão
gravadas no arquivo /etc/shadow, e as senhas dos grupos no arquivo /etc/gshadow. Isso aumenta
mais a segurança do sistema, porque somente o usuário root pode ter acesso a esses arquivos, ao
contrário do arquivo /etc/passwd, que possui os dados de usuários e devem ser lidos por todos.

O comando chpasswd
Esse comando é interessante se você tem que cuidar de muitas senhas de usuários, pois ele
permite a atualização de senhas de múltiplas contas e é fácil de usar. Devemos especificar em um arquivo que
contém os campos usuário:senha um por linha. Caso as senhas estejam encriptadas deverá ser especificada a
opção “–e” ao programa. Veja um exemplo do arquivo /etc/senhas.pwd:

...
adilson:bonan
gabriel:TBonan
fabia:theLuv
kevin:mitnic
...

OK! Agora use o comando chpasswd /etc/senhas.pwd para que todas senhas sejam atualizadas
de uma única vez. Agora informe aos usuário, né?
Um outro arquivo importante é o /etc/login.defs, que guarda as definições sobre os usuários do
sistema. A seguir, um pequeno exemplo desse arquivo:

# Localização onde deverão residir os e-mails para o usuário


#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail

# Ações de controle de senhas:


# PASS_MAX_DAYS = Número máximo de dias p/ a senha pode ser usada.
# PASS_MIN_DAYS = Número mínimo de dias para troca de senhas.
# PASS_MIN_LEN = Tamanho mínimo aceito para senhas.
# PASS_WARN_AGE = Número de dias p/ aviso antes de expirar.

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

# Valores mínimo e máximo para o comando useradd na criação de usuários


UID_MIN 500
UID_MAX 60000

# O menor UID possível para o comando useradd, pois existem alguns


# UIDs estáticos no sistema Linux. No Conectiva o default é 100.
UID_SYSTEM_MIN 100

# Valores mínimo e máximo para o comando groupadd na criação de grupos


GID_MIN 500
GID_MAX 60000

# Se for definido, este comando rodará quando da remoção de um


# usuário. Esse comando apeta o at, cron e serviços de impressão.

# USERDEL_CMD /usr/sbin/userdel_local

# O comando useradd criará os todos usuários em /home/<nome_do_usuário>


CREATE_HOME yes

# Será usado o método de criptografia MD5


# que é difícil de ser quebrado.
MD5_CRYPT_ENAB yes

78
Global Sul Informática

Se você quiser encontrar todos os arquivos que não pertençam a nenhum usuário e a nenhum
grupo use o comando find / -nouser -o -nogroup -print, e para saber quais arquivos pertencem ao usuário
root, use o comando find / -user root.
Se você quiser encontrar todos os arquivos que não pertençam a nenhum usuário e a nenhum
grupo use o comando find / -nouser -o -nogroup -print, e para saber quais arquivos pertencem ao usuário
root, use o comando find / -user root.
O comando usermount
Ppermite que os usuário gerencie seus pontos de montagem e outros pontos que o
administrador do sistema permite que eles montem.
O comando userinfo
Exibe uma caixa de informações qua são chamadas de finger do usuário. Na minha opinião não é
bom que você preencha isso, pois um hacker poderá usar essas informações contra você.
O comando userdel
Remove um usuário do sistema. Se for usado somente o comando userdel seguido do nome o
usuário, apenas o seu login será removido, porém o seu diretório /home/nome_do_usuário ainda estará no
sistema (para um exclusão mais tarde). Mas se você quer eliminar o usuário sem dó e com scom o seu home,
use o comando userdel -r usuário.

# userdel luciene
# userdel leniza

O comando chown
O comando chown altera o usuário e/ou a propriedade de grupo de cada arquivo fornecido
conforme especificado pelo primeiro argumento sem opção como segue: se somente um nome de usuário (ou
número de identificação do usuário) for fornecido, aquele usuário torna-se o proprietário do arquivo
fornecido, aquele usuário é feito o proprietário dos arquivos, e o grupo dos arquivos não será alterado.
Se um nome de usuário é seguido de dois pontos e um nome de grupo (ou número de
identificação de grupo) sem espaços entre eles, a propriedade de grupo do arquivo é alterada também.
Exemplo:

# chown -R adilson:hack /home/adilson/* .

O comando usermod
Modifica uma conta de usuário no sistema, do mesmo modo que existe o usermod existe
também o gropupmod.
O comando id
Exibe a identificação atual do usuário, grupo primário e outros grupos a que pertence.
O comando logname
Exibe o seu login, ou seja, o seu nome de usuário conectado ao sistema.
O comando users
Exibe os nomes de usuários que estão usando o sistema no momento. Os nomes de usuários são
mostrados através de espaços sem detalhes adicionais. Os nomes de usuários atualmente conectados ao
sistema são obtidos do arquivo /var/log/wtmp.
O comando chfn
Faz a troca de dados usados pelo comando finger (informações extras de usuários cadastrados
no sistema).
O comando groupadd
Cria um grupo no sistema Linux. Alguns usuários gostam de criar grupos com quatro letras e em
maiúscula, pois assim os grupos se difereciam dos grupos já existentes no sistema.
O comando groupdel
Permite eliminar usuário do sistema, poderá eliminar grupos também.
O comando groups
Mostra os grupos a que o usuário pertence no sistema.

79
Treinamento Linux – Administração, Redes e Serviços

O comando newgrp
Altera a identificação de grupo do usuário. Para retornar à identificação anterior, digite exit e
ENTER. Para executar um comando com outra identificação de grupo de usuário, use o comando sg, como
vimos anteriormente.
O comando chgrp
Troca a propriedade de grupo dos arquivos fornecidos para o grupo, o qual pode ser um nome de
grupo ou a sua identificação numérica. A opção “- R” altera recursivamente a propriedade de diretórios e de
seus conteúdos.
O comando sg
Executa um comando com outra identificação de grupo. A identificação do grupo de usuário é
modificada somente durante a execução do comando.
Os configuradores kuser e system-config-user
No ambiente KDE nós temos o kuser que é um programa muito bom e flexível que nos auxilia no
gerenciamento de usuários e grupos. Ele Tem controle completo sobre os usuários. Mudar um usuário de
grupo, editar informações do finger desse usuário, excluir, incluir etc tudo isso está apenas alguns clique de
mouse. Ele é muito bom.
Depois que você cria seus usuários e seus grupos e atribui certas regras para eles e depois manda
o kuser salvar o que você fez, poderá conferir pela console (terminal gráfico) o que ele vai fazer, se der algum
erro para algum usuário, você saberá. O utilitário system-config-user faz a mesma coisa só que em ambiente
Gnome.

Arquivos de configuração e personalização de usuários


Quando nós estamos digitando no nosso cotidiano, muitas vezes o fazemos usando o
interpretador de comando bash entre os muitos outros que existem no sistema.
Esse interpretador possui alguns arquivos de configurações que podemos ‘mexer’ para ajustar
melhor algumas coisas no ambiente Linux. Cada usuário criado no sistema tem os seus próprios arquivos de
configuração e os arquivos genéricos de configuração, e geralmente a grande maioria deles fica no próprio
/home do usuário. Os arquivos são:
O /etc/bashrc
Quando você instala o Linux, alguns “novos” comandos são adicionados nesse arquivo. Você
poderá apagá-los, adicionar outros comandos, e assim por diante. vejamos uma situação: você quer que o
comando winxpon crie automaticamente um ponto de montagem /mnt/winxp, para sistema Windows XP;
entre nesse ponto de montagem e faça uma listagem do que tem lá. Bom, pelo método normal você teria que
fazer o seguinte:

# mount -t -vfat /dev/hda1 /mnt/winxp


# cd /mnt/winxp
# ls -laF /mnt/winxp

Viu como é muita coisa a ser feita. Bom, então agora vamos criar um comando chamado
winxpon, que ficará dentro do arquivo /etc/bashrc. Em algum lugar desse arquivo, você deverá adicionar a
seguinte linha:

# alias winxpon=“mount -t vfat /dev/hda1 /mnt/winxp; ls /mnt/winxp”

Depois você deverá digitar o comando . .bashrc dentro do /root, isso se for o root. Ok, agora
existe um novo comando chamado winxpon, e se você o digitar, terá uma listagem dos arquivos que estão na
partição do Windows. Mas, nesse caso, você não entrou na partição Windows XP, e sim apenas listou o
conteúdo que agora está em /mnt/winxp. Vejamos o conteúdo do arquivo /etc/bashrc:

# Funções e aliases para todo o sistema.


# Configurações do ambiente devem ser feitas no /etc/profile.

# Por alguma razão desconhecida, o bash se recusa a herdar a # variável PS1 em # algumas
circunstâncias.
# Colocando o PS1 aqui garante que ela seja carregada sempre.
PS1="[\u@\h \W]\\$ "

alias which="type -path"


alias l="ls -laF --color"

80
Global Sul Informática

alias ls="ls --color"


alias m="minicom -s -con -L"
alias minicom="minicom -s -con -L"
alias tm="tail -f /var/log/messages"
alias tmm="tail -f /var/log/maillog"
alias tms="tail -f /var/log/secure"
alias cds="cd /etc/rc.d/init.d && ls"
alias fd="mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls"
alias ufd="cd /mnt && umount floppy && ls"
alias winxpon="mount -t vfat /dev/hda1 /mnt/winxp; ls /mnt/winxp"
alias winxpoff="cd; umount /mnt/winxp"
alias cdon="mount -t iso9660 /dev/cdrom /mnt/cdrom; ls /mnt/cdrom"
alias cdoff="cd; umount /mnt/cdrom; eject"
alias boot="shutdown -r now"
alias off="shutdown -h now"
alias xt="setterm -store -background back -foreground green"

O .bash_history
O arquivo .bash_history guarda todos os comandos que você digitou até hoje. Falando a
verdade, ele guarda umas 1000 (mil) linhas de comandos digitados (isso depende da distribuição que você
estiver usando). Só que algumas vezes é necessário zerar esse arquivo do sistema. Você pode fazer isso da
seguinte maneira:

# rm -f .bash_hystory
# touch .bash_hystory

Ok! Desse modo você terá um arquivo .bash_history novinho em folha. Caso o comando touch
não funcione, use o comando cat > .bash_hystory e depois CONTROL+D; assim será criado um arquivo
zerado.
Outra maneira de zerar o arquivo .bash_hystory:
O bash (interpretador de comandos) registra até uns 1000 (mil) comandos antigos no arquivo
~/.bash_history (onde “~/” é diretório home do usuário em questão), como já sabemos, e para tornar fácil a
repetição de longos comandos. Cada usuário que tenha uma conta no sistema terá seu arquivo .bash_history
em seu diretório home. O bash deve registrar um número menor de comandos e apagá-los quando o usuário
sair do sistema. Podemos fazer isso de dois modos:
1. As linhas HISTFILESIZE e HISTSIZE do arquivo /etc/profile determinam o tamanho de
comandos antigos que o arquivo .bash_history guarda para todos os usuários que o seu sistema pode
suportar. Eu realmente recomendaria a configuração do HISTFILESIZE e HISTSIZE no arquivo /etc/profile
para um valor menor como 30 (trinta). Edite o arquivo /etc/profile e altere as linhas para:

...
HISTFILESIZE=30
HISTSIZE=30
...

Significa que o arquivo .bash_history de cada diretório home de usuários pode registrar até 30
(trinta) comandos antigos e não mais.
2. O administrador deve também adicionar ao arquivo /etc/skel/.bash_logout a linha: rm -f
$HOME/.bash_history, para que a cada vez que o usuário saia do sistema, seu arquivo .bash_history seja
apagado. Edite o arquivo /etc/skel/.bash_logout e adicione a seguinte linha: rm -f $HOME/.bash_history.
O alias e o unalias
Os alias/unalias permitem que você crie na hora, sem precisar editar, comandos novos que
apenas estarão valendo para aquele momento. Por exemplo, o comando ‘novo’ tudo vai listar no seu hd.
Exemplo alias tudo=”ls / -lR” e, para desfazer o comando todo, use o comando unalias.
O .bashrc
O arquivo .bashrc é o executável oculto que pode fazer valer as suas novas variáveis no sistema.
Seu uso é muito simples: após você definir as novas variáveis (comandos) no arquivo /etc/bashrc, será
preciso executar a leitura desse arquivo com o comando: . .bashrc ou ./bashrc (em alguns casos). Bom, se
você for esperto já se perguntou: — Peraí, desse jeito eu posso criar os comandos do MS-DOS dentro do /etc/
bashrc, então? Bom, a resposta é: — Pode, mas para quê tanto trabalho, se o Linux já tem o dosemu
prontinho esperando por você?

81
Treinamento Linux – Administração, Redes e Serviços

O .bash_profile
Abaixo, nós temos o arquivo .bash_profile que é responsável pelos novos comandos contidos
em /etc/bashrc. Ele lê esses novos comandos e também controla as variáveis de sistema. Observe o arquivo
abaixo. Na última linha, mesg n não deixa que você receba mensagens, caso você queira receber mensagens
de outro usuários da rede, a última linha deve ser mesg y.

# .bash_profile
# Executa os aliases e funções.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# Especifíca o ambiente e os programas na inicialização.

PATH=$PATH:$HOME/bin
ENV=$HOME/.bashrc
USERNAME=”root”

export USERNAME ENV PATH


# Qualquer comando inserido aqui será executado quando o usuário se logar
mesg n

Cada usuário tem o seu arquivo, porém se as mudanças forem gerais você deverá editar o
arquivo /etc/profile, que se parece com o da listagem a seguir:

# Ambiente de onde os programas poderão ser chamados.


# As funções e o aliase vão em /etc/bashrc.
PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin"
MANPATH="$MANPATH:/usr/local/man"

# Define como será o prompt do sistema


PS1='$(/bin/hostname -s) [$PWD] > '
ulimit -c 1000000

if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then


umask 002
else
umask 022
fi
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
INPUTRC=/etc/inputrc
export PATH MANPATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
unset i
clear; setterm -foreground white -backg

DICA: No arquivo /etc/profile, nós poderemos configurar uma variável de ambiente, a “TMOUT=n”,
onde n é o tempo em segundos em que um determinado usuário poderá ficar inativo no sistema, em
que, após esse tempo, o usuário será automaticamente desconectado do sistema. Assim, preserva-se
mais ainda a segurança do sistema. Caso você resolva fazer isso via modo console (texto) usando o
bash como interpretador padrão, use o comando export TMOUT= “n”.

O .bash_logout
O arquivo .bash_logout guarda as variáveis quando sai do sistema e pode executar alguns
comandos quando o usuário se desconectar de um terminal ou quando fecham o console através de um
CONTROL+D, login ou logout.

82
Global Sul Informática

# ~/.bash_logout
clear
echo “OBRIGADO por usar o sistema Linux. Você é uma pessoa inteligente.”
echo “--------------------------------------------------”
sleep 3; rm -f .bash_hystory; touch .bash_hystory

O /etc/motd
O arquivo motd encontra-se no diretório /etc. Esse arquivo é simplesmente um texto que será
apresentado quando um usuário logar o sistema. Exemplo:

BEM-VINDO AO SISTEMA OPERACIONAL LINUX.


+=====================================================+
| Tenha um bom dia de trabalho. |
| Qualquer dúvida man <comando>. |
+-----------------------------------------------------+

O arquivo .hushlogin
Esse arquivo deve ser colocado no diretório /home do usuário, sua função é fazer o bash pular as
mensagens do /etc/motd, número dos e-mails, etc. Exibindo imediatamente o aviso de comando após a
digitação da senha.
O arquivo shutdown.allow
O arquivo /etc/shutdown.allow contém uma lista de usuários autorizados a reinicializar o
sistema com a combinação de teclas CTRL+ALT+DEL. Caso este arquivo não exista, todos os usuários
possuem autorização. Caso este arquivo exista e esteja vazio, apenas o root (administrador do sistema)
tem autorização.
Arquivo /etc/environment
O arquivo /etc/environment armazena as variáveis de ambiente que são exportadas para todo o
sistema e vale para todos os usuários. Uma variável de ambiente controla o comportamento de um programa,
registram detalhes úteis durante a seção do usuário no sistema, especificam o idioma das mensagens do
sistema etc. Exemplo do conteúdo de um arquivo /etc/environment:

LANG=pt_BR
LC_ALL=pt_BR
LC_MESSAGES=pt_BR

Privilégios de usuários por meio do comando sudo


Como dar poderes de superusuário a um usuário normal? Existem várias maneiras
permanentes, como criar um usuário com o “id 0”, tornar um arquivo executável suid etc. Mas o mais prático
e seguro é utilizar o aplicativo sudo. Nele, pode-se definir determinados comandos para um usuário normal
executá-los com permissões de superusuário.
A vantagem principal de utilizar o sudo é que é possível definir os comandos EXATOS
(expressões regulares funcionam) que CADA usuário poderá executar com superpoderes.
O comando de edição das regras do sudo é: # visudo, o que abrirá o editor vi para que você possa
fazer suas configurações; portanto, trate de aprender o vi. Ele abre o arquivo de configuração do sudo no vi, e
ao, sair e salvar/etc/sudoers, ele faz checagens de possíveis erros de sintaxe. Vamos ver um pequeno exemplo,
deixando o usuário normal adilson executar o quake e instalar/atualizar pacotes:

adilson ALL=NOPASSWD:/bin/quake, /bin/rpm -[iUvh] *.rpm

Depois, basta executar os comandos com o sudo na frente:

[adilson@hackers.net]$ sudo rpm -ivh /mnt/cdrom/conectiva/RPMS/quake-*


[adilson@hackers.net]$ sudo quake

Vejamos a seguir um típico arquivo /etc/sudoers, estudando-o para aprender bem:

# Exemplo de um arquivo /etc/sudoers.


# Edite esse arquivo como root e com o comando visudo.
# Especificação de apelidos para usuários
User_Alias FULLTIMERS = millert, mikef, dowdy

83
Treinamento Linux – Administração, Redes e Serviços

User_Alias PARTTIMERS = bostley, jwfox, crawl


User_Alias WEBMASTERS = will, wendy, wim

# Executa e faz valer os apelidos para usuários.


Runas_Alias OP = root, operator
Runas_Alias DB = oracle, sybase

# Especificação de apelidos para hosts (micros em rede).


Host_Alias SPARC = bigtime, eclipse, moet, anchor:\
SGI = grolsch, dandelion, black:\
ALPHA = widget, thalamus, foobar:\
HPPA = boa, nag, python
Host_Alias CUNETS = 128.138.0.0/255.255.0.0
Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias SERVERS = master, mail, www, ns
Host_Alias CDROM = orion, perseus, hercules
...

Bom, agora que já estamos feras em dar direitos aos usuários comuns, podemos perceber o
quanto o sistema Linux é poderoso, se você realmente aprender a usá-lo com disciplina.
Desabilitando o login de um usuário
Quando o administrador estiver fazendo manutenções no servidor, não é aconselhável que
naquele momento usuários fiquem conectados. Então, para prevenir que usuários comuns que não são root
logem no sistema enquanto você está realizando alguma manutenção no servidor, crie um arquivo no
diretório /etc chamado nologin com uma mensagem qualquer que você deseja que seja mostrada se um
usuário tentar se conectar.
Depois de terminar a manutenção, apague o arquivo /etc/nologin para permitir que os usuários
utilizem o sistema. Veja o exemplo:

login: sonizia
Password:

----[ ALERTA! ]------------------------------------------

>> Prezado senhor usuário, no momento as conexões estão


desabilitadas. Qualquer coisa contate o adminitrador
do sistema.
---------------------------------------------------------
Login incorreto

login:

Esse exemplo mostra que a usuária sonizia não vai conseguir se conectar no sistema naquele
momento. Somente depois que o administrador do sistema terminar a manutenção no servidor e apagar o
arquivo /etc/nologin é que todos os usuários comuns terão as conexões restabelecidas.
Uma outra idéia muito interessante é a restrição do uso da combinação
CONTROL+ALT+DELETE que os usuários poderão efetivar para reiniciar o sistema Linux. Se você que usar
CONTROL+ALT+DELETE dentro de uma sessão estando fora do ambiente gráfico do Linux, então seu
computador será reinicializado.
A restrição do uso dessa combinação pode ser feito por meio do arquivo /etc/shutdown.allow,
adicionando ao mesmo o nome dos usuários que devem estar conectados para que o comando shutdown
possa ser efetivado, veja como:

# echo “root” > /etc/shutdown.allow


# echo “adilson” >> /etc/shutdown.allow

Isso faz com que o comando shutdown funcione apenas quando o usuário root e o usuário
adilson estiverem logados no servidor em questão. Não podemos nos esquecer de que, para que isso funcione,
em seu /etc/inittab a linha: “ca::ctrlaltdel:/sbin/shutdown -t3 -r now” deverá ser alterada para:
“ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now”. Fazendo isso, acaba a ‘festa’ do CONTROL+ALT+DELETE para
os usuários que pensam que estão no “ruWindows”.

84
Global Sul Informática

Configurando o prompt do usuário


No sistema Linux é possível alterar a string do prompt do interpretador de comandos Bash, é
simples basta inserir no arquivo /etc/bashrc uma seqüência de caracteres especiais. Os caracteres são
decodificados da seguinte maneira:

d: Data atual no formato: “Dia_da_semana Mês Dia”.


h: Nome da máquina até o primeiro “.”.
s: Nome do shell.
A: hora atual no formato de 24 horas hh:mm:ss.
u: O nome do usuário atual.
w: Caminho completo do diretório de trabalho atual.
W: Nome do diretório atual.
!: O número do comando no histórico.
#: O número do comando na sessão atual do shell.
$: Caractere que diferencia um usuário comum do super-usuário.
nn: Caracter correspondente ao número octal nnn.
/: Uma barra.
[: Inicia a seqüencia de caracteres não vistos na tela.
]: Fim da seqüencia de caracteres não vistos na tela.

Existem vários tipos de prompt, os mais usados são o primário e o secundário, definidos nas
variáveis PS1 e PS2, ou seja, aquele prompt que você já está acostumado. O prompt primário é para a entrada
de um comando e o secundário para quando for preciso complementar um comando.
Lembre que esta variável deve ser definida no arquivo /etc/bashrc porém no /etc/profile
também funciona. É possível alterar o prompt de um usuário somente para isso copie o arquivo /etc/bashrc
para /home/usuario/.bashrc e edite então este arquivo. Veja um exemplo do prompt primário:

PS1="[u@h W]$ "


export PS1

O prompt será parecido com esse:

[usuario@maquina /local]#

Você poderá também colorir o prompt, adicionando na seqüência os códigos de cores ANSI.
Estes códigos devem ser adicionados como caracteres que não serão impressos, ficando entre o “[” e o “]”.
Além do mais os códigos devem começar com “33[“ e terminar com um “m” minúsculo. A sintaxe completa
será assim: [33[Z;YY;XXm], onde Z é o estilo dos caracteres, YY é a cor de fundo e XX a cor dos caracteres.
Veja a tabela de cores e estilos:

Cores Caracteres Fundo


Preto 30 40
Vermelho 31 41
Verde 32 42
Amarelo 33 43
Azul 34 44
Roxo 35 45
Ciano 36 46
Cinza 37 47

Estilo dos Caracteres


Normal 0
Bold 1 Dá brilho as cores
Undescore 4
Blink 5 Pisca-pisca
Inverse 7 Inverte cor de fundo
Ofuscado 8

Mais alguns exemplos de uso: para deixar o caractere verde em fundo preto: [33[0;40;32m],
para deixar o caractere amarelo brilhante em fundo cinza: [33[1;47;33m] e para deixar o caractere ciano
piscando em fundo preto: [33[5;40;36m]. Veja então alguns exemplos de prompt:

85
Treinamento Linux – Administração, Redes e Serviços

export PS1="Data: d Hora: ->"

export PS1="253u@h273 $ "

export PS1="[33[1;40;32m]u[33[0;40;33m]@[33[1;40;31m]h[33[0m]$"

export PS1="[33[1;44;37m]253[33[1;44;32m]u[33[1;44;37m]@[33[1;44;33m]h[33[1;44;37m]:
[33[1;44;36m]w[33[1;44;37m]273[33[0m]$ "

export PS1="[33[0;44;37m]d [33[0m] [33[0;40;32m]s[33[1;40;37m]:[33[1;40;36m]w [33[0m]$ "

export PS1="[33[0;44;37m]d [33[0;40;32m]s[33[1;40;37m]:[33[1;40;36m]w [33[0m]$ "

DICA: Caso você queira desativar as cores, use o código [33[0m]. Use também o código [33[0m]
antes de adicionar uma nova linha ao prompt. Os códigos das cores não tem ordem certa, mas é
recomendável usar na ordem Z;YY;XX para que não precise usar o código [33[0m] entre cada
definição de cor.

Consulte a página manual do bash para mais informações. Agora veja um exemplo do arquivo
/etc/bashrc:

# /etc/bashrc
Vermelho="[33[31m]"
Verde="[33[32m]"
Amarelo="[33[33m]"
Ciano="[33[36m]"
Branco="[33[37m]"
Normal="[33[0m]"
PS1="$Normal$Verde[$Amarelou$Vermelho@$Amareloh$Verde:
$Cianow$Verde]$Branco$ $Normal"

Anotações:

86
Global Sul Informática

87
Treinamento Linux – Administração, Redes e Serviços

Anotações:

88
Global Sul Informática

Capítulo 4

Gerenciamento de mídias
Neste capítulo, vamos aprender como é que o sistema Unix /Linux tratam os dispositivos de
armazenamento de informações, as mídias. No Linux, depois que entendemos, é muito simples como é que
funciona o gerenciamento de mídias, que podem ser:

1. Sua unidade de disquete.


2. Seu CD/DVD-ROM e/ou sua gravadora CD-RW.
3. Sua unidade de fita ou zip drive.
4. Seu disco rígido, partições Windows, NFS, UDF etc.

O primeiro passo a entender é o diretório /dev que é responsável pelos devices1, ou seja, os
arquivos contidos nesse diretório apontam para um hardware. Então, por exemplo, /dev/fd0 quer dizer que é
o nosso disquete no unidade A: . Se tivéssemos duas unidades de disquetes, a outra seria /dev/fd1 e
/dev/cdrom; supõe-se que é a unidade D: que geralmente é o nosso CD-ROM.
O /dev/hda é o primeiro (master) disco rígido e /dev/hdb o segundo (slave) disco rígido, e o
/dev/sda4 pode ser a unidade de zip drive, e assim por diante.
Mas o gerenciamento de mídias não pára por aí. Tem muito mais coisas que são possíveis de
serem feitas e gerenciadas. Podemos gerenciar a partição do Windows local, a partição de um Windows
remoto por meio do samba, partições Linux e Unix local através de NFS, unidades de disquetes, zip, CD etc.
No sistema Windows basta abrir o Windows Explorer e clicar no ícone do disquete. Isso é super
simples, mas teoricamente todos podem acessar uma unidade de disquete por lá. No sistema Linux, é preciso
que o usuário monte a unidade, ou seja, faça com que seja possível acessar o conteúdo dessa unidade ou grave
informações nesta unidade. Para isso, usamos o comando mount [parâmetros] origem destino.

Os comandos mount e umount


Para poder trabalhar com montagem e desmontagem de mídas no Linux, podemos usar o modo
texto e o modo gráfico. Pelo modo texto, usamos o comando mount para montar e o comando umount para
desmonstar. Pelo modo gráfico, podemos usar vários utilitários, os quais vamos ver alguns neste capítulo.
Ele funciona assim mount [parâmetros] parte_hardware parte_lógica. Exemplo:

# mount -t vfat /dev/hdb1 /mnt/windows

A linha anterior pode ser entendida que o comando mount passou um parâmetro para tipo de
unidade com FAT e nomes longos padrão Windows que estão no segundo (slave) disco rígido e montada no
diretório /mnt/windows. Assim, se usarmos o comando ls -lasF /mnt/windows, poderemos ver o conteúdo
do segundo disco rígido. Depois que montamos nossas unidades, podemos entrar e sair dela a qualquer
momento, como faríamos no Windows pelo modo texto ou pelo modo gráfico.
O parâmetro “-t”do comando mount pode ter os seguintes argumentos que servem para indicar
o tipo do sistema de arquivos. Os tipos atualmente suportados são minix, ext, ext2, ext3, reiser fs, xiafs,
hpfs, msdos, umsdos, vfat, proc, nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix e coherent.
Local correto para pontos de montagem
Todos os arquivos acessíveis pelo Linux estão dispostos como se fossem uma grande árvore,
iniciando pelo arquivo raiz, representado pela barra normal “/”. Esses arquivos podem estar distribuídos por
vários dispositivos. O comando mount é usado para anexar um sistema de arquivos encontrado em um
dispositivo à árvore de arquivos.

89
Treinamento Linux – Administração, Redes e Serviços

A primeira coisa que você deve ficar atento é o seguinte: criar o diretório raiz “/” dentro do
diretório /mnt os seguintes diretórios (alguns são criados no momento da instalação):

/mnt/floppy (para disquete).


/mnt/cdrom (para CD-ROM).
/mnt/windows (para Windows).
/mnt/zip (para zip drive).
/mnt/jazz (para jaz drive).
/mnt/tape (para fita magnética).
/mnt/samba (para configurações básicas do samba).
/mnt/cdrw (para gravar CD´s).

DICA: Isso caso não existam os diretórios. Para ver se existem ou não é simples: use o comando ls /
mnt. Quando estiver na parte gráfica, dentro de um terminal, você poderá usar o comando
usermount e assim fazer o controle por procedimento gráfico. Isso irá mostrar todos os diretórios
criados dentro do /mnt.

Lembre-se de que, sempre depois de criar um ponto de montagem e usá-lo, é bom desmontá-lo
caso não vá usá-lo mais tarde, senão seus dados poderão sofrer danos. Isso vale principalmente com CD,
disquetes, zips etc. Agora, se o que você deseja é fazer o cadastro dos pontos de montagens no arquivo
/etc/fstab e também atualizar o arquivo /etc/mtab, o que você poderá fazer é editar esses dois arquivos no
braço ou usar algo mais amigável, como o utilitário fsconf que tem essa função.

O acesso a unidade de disquete


Criar um ponto de montagem para a unidade de disquete é muito simples, apenas com duas
linhas de comandos, você ja faz isso:

# mount /dev/fd0 /mnt/floppy


# ls -laF /mnt/floppy

A primeira linha cria o ponto de montagem para o disquete, e a segunda linha lista o conteúdo
do ponto de montagem que é o disquete. Para desmontar o ponto de montagem é simples, umount
/mnt/floppy.
O comando anterior desmonta a unidade de disquete. Mas devemos lembrar que é preciso sair
(comando cd alguma coisa) do ponto de montagem para que isso seja possível. Em alguns casos, você deverá
usar o comando mount -t vfat /dev/fd0 /mnt/floppy se a montagem do disquete apresentar erro ou arquivos
com os nomes truncados.
Caso você pretenda criar o ponto de montagem para o disquete e depois gravar arquivos nele,
está tudo bem se o disquete já está pré-formatado. Mas se não estiver, você terá formatá-lo antes (não é
preciso montar). O comando para formatar disquetes é fdformat /dev/fd0H1440. Mas se você quer criar esse
disque já para o sistema de arquivos do Linux (ext2), checando os blocos ruins, use o comando:

# mke2fs -c /dev/fd0 ou
# mkfs -t ext2 -m 0 /dev/fd0H1440 1440

DICA: Se você tentou desmontar um disquete ou CD-ROM e se deparou com uma mensagem dizendo
que o mesmo está sendo ocupado por algum processo, descubra rapidamente qual o processo ofensor
digitando o comando fuser -l /mnt/floppy – naturalmente, você deve substituir o /floppy pelo ponto de
montagem do dispositivo que deve ser verificado.

Formatando disquetes no Linux


A formatação de disquetes no sistema Linux é um pouco diferente daquele que ocorrre no
Windows, pois lá podemos formatar pelo modo texto e pelo modo gráfico, mas o sistemas de arquivo é
sempre o mesmo, a FAT. O Linux é um sistema operacional que suporta vários outros tipos de sistemas
operacionais, então em uma formatação de um determinado tipo de mídia é aconselhável especificar o tipo de
sistema de arquivos.

90
Global Sul Informática

Formatação via modo texto


Para formatar disquetes via modo texto, poderemos usar comando do mtools que traz
ferramentas com comandos semelhantes ao do MS-DOS, mas com a letra m na frente, que é o caso do
comando mformat, o qual usamos assim mformat a:.
Adiciona um sistema de arquivos MS-DOS a um disquetes com formatação de baixo nível. O
comando acima joga uma FAT padrão Windows em seu disquete e depois você pode usá-lo nesse ambiente
normalmente como se tivesse sido formatado nele mesmo. O parâmetro “l” é usado para etiquetar o volume
(nome para o disquete). Em alguns casos, ocorre a formatação em baixo nível para poder fazer uma
formatação de alto nível. O comando usado para isso é o fdformat, que funciona para disquetes de 1.4 MB,
como já vimos a pouco.
Porém, os dispositivos de disquetes genéricos, /dev/fd0 e /dev/fd1, não funcionarão com
comando fdformat quando um formato não-padrão estiver sendo usado, ou o formato não é auto detectado.
Formatação via modo gráfico
Para formatar disquetes via modo gráfico no Linux existem diversos utilitários, mas os mais
conhecidos e usados são o kfloppy (KDE) e o gfloppy (gnome).

:: Kfloppy e Gfloppy

O acesso a unidade de CD-ROM


Para criar um ponto de montagem para a unidade de CD-ROM, é tão simples quanto para a
unidade de disquete, veja:

# mount /dev/cdrom /mnt/cdrom


# ls -laF /mnt/cdrom

A primeira linha cria o ponto de montagem para o CD-ROM, e segunda linha lista o ponto de
montagem. Para desmontar o ponto de montagem também é muito simples umount /mnt/cd-rom. Caso não
funcione, seja mais específico e use o comando:

# mount -t iso9660 /dev/cdrom /mnt/cdrom

Hoje quase todos os modelos de CD são reconhecidos pelo Linux. Se você tiver um modelo
diferente deverá usar a linha de baixo; caso contrário, a primeira linha monta o CD-ROM em nenhum
problema. Lá pelo modo gráfico, basta clicar no ícone do CD-ROM que a maioria das distribuições já faz a
montagem automaticamente e carrega o gerenciador de arquivos padrão. Para desmontar o CD-ROM pelo
modo gráfico na maioria das distribuições, usamos o botão direto sobre o ícone do CD e selecionamos a opção
desmontar ou ejetar.

91
Treinamento Linux – Administração, Redes e Serviços

O acesso a unidade de zip-drive


Usar a unidade de zip-drive em Linux pode não parecer tão fácil à primeira vista quanto é no
ambiente Windows, mas devemos lembrar que no Windows temos que instalar um monte de arquivos para
que o zip-drive funcione. Em Linux, isso não é necessário, pois quando você está compilando o Kernel,
simplesmente pode informar que o módulo para o zip estará disponível no sistema; mais tarde é só carregar o
módulo na hora que você for usar e pronto! Quando não for mais usar o módulo do zip drive é só descarregá-
lo. O módulo de zip drive será carregado, considerando-se que o zip é um dispositivo scsi, ou seja, será criado
um ponto de montagem sdXX. Veja o procedimento para carregá-lo.

# modprobe ppa

Em seguida, use o comando lsmod para ver se o módulo foi carregado corretamente:
...
lvm-mod 57456 0 (autoclean)
parport_pc 24304 2 (autoclean)
ppa 9776 0
parport 24352 2 [lp parport_pc ppa]
sd_mod 10964 0
scsi_mod 90124 2 [ppa sd_mod]
...

Se der tudo certo, agora use os comandos que montam e listam o sua unidade zip:

# mount /dev/sda4 /mnt/zip; ls -laF /mnt/zip

Para ejetar o zip use o comando eject /dev/sda4 e desmontá-lo use o comando umount
/mnt/zip. Porém lembre-se de não estar no zip, senão vai ocorrer erro.

DICA: Dependendo do seu tipo de zip drive você terá que fazer outras configurações. Esse tipo de zip
pode variar muito (interno e externo, antigo padrão: ppa e novo padrão: imm). Porém, não chega a
ser difícil; use o comando # dmesg | grep hd para ver onde está sendo reconhecido o seu zip drive.
Então, em seguida, é só fazer o redirecionamento padrão que todos nós agora já sabemos.

Usando o comando dmesg e analisando o seu conteúdo, nós poderemos verificar se o nosso zip-
drive foi ou não reconhecido e assim saberemos como montá-lo mais tarde. Veja a seguir um pequeno pedaço
do resultado do comando dmesg:

parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,COMPAT,ECP]


parport0: irq 7 detected
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
ppa: Version 2.07 (for Linux 2.4.x)
ppa: Found device at ID 6, Attempting to use EPP 32 bit
ppa: Communication established with ID 6 using EPP 32 bit
scsi0 : Iomega VPI0 (ppa) interface
Vendor: IOMEGA Model: ZIP 100 Rev: K.05
Type: Direct-Access ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi0, channel 0, id 6, lun 0
sda : READ CAPACITY failed.
sda : status = 0, message = 00, host = 0, driver = 08
sda : extended sense code = 2
sda : block size assumed to be 512 bytes, disk size 1GB.
sda: I/O error: dev 08:00, sector 0
unable to read partition table
LVM version 0.9.1_beta3 by Heinz Mauelshagen (25/01/2001)
lvm — Module successfully initialized
Device not ready. Make sure there is a disc in the drive.
VFS: Disk change detected on device sd(8,0)
sda : READ CAPACITY failed.
sda : status = 0, message = 00, host = 0, driver = 08
sda : extended sense code = 2

92
Global Sul Informática

sda : block size assumed to be 512 bytes, disk size 1GB.


sda: I/O error: dev 08:00, sector 0
unable to read partition table

O disco de zip-drive em sistemas Linux é visto como uma interface SCSI e é emulada na
compilação do kernel, caso você mesmo tenha que fazer isso ou quando é reconhecida automaticamente pelo
sistema. As interfaces SCSI ficam em /dev/sda?, e para saber qual é o sda correto para uma unidade de zip,
use o comando a seguir:

# dmesg | grep sda


Attached scsi removable disk sda at scsi0, channel 0, id 6, lun 0
SCSI device sda: 196608 512-byte hdwr sectors (101 MB)
sda: Write Protect is off
sda: sda4

Então aqui já estamos sabendo que poderemos montar uma unidade de zip partindo de um
/dev/sda4. Mas, se pintar alguma dúvida, é só LER OS MANUAIS e HOW-TO's.

O acesso a partição do Windows local


Criar um ponto de montagem para a unidade de Windows, caso o seu disco rígido esteja
particionado e você instalou o Windows no /dev/hda1 – C:\ – é muito simples:

# mount /dev/hda1 /mnt/windows


# ls -laF /mnt/windows

A primeira linha cria o ponto de montagem para o Windows, e a segunda linha entra no ponto de
montagem. Para desmontar o ponto de montagem também é muito simples, umount /mnt/windows. Caso a
montagem não funcione direito, seja mais específico:

# mount -t vfat /dev/hda1 /mnt/windows

O sistema Linux funciona perfeitamente com a primeira linha, mas em alguns casos você
precisará especificar a segunda linha, onde —t vfat informa ao Linux para usar o padrão FAT do Windows.
Depois de montadas as partições, elas funcionarão como se fossem normal ao sistema.
É interessante já que o Windows está ali mesmo, já deixálo montado e o utilitário fsconf poderá
fazer isso para você de forma automática, assim toda vez que você quiser algo algo lá do Windows é só acessá-
lo pelo modo texto ou pelo modo gráfico de forma transparente como se fosse um diretório normal do Linux.

Verificação dos pontos de montagem


Algumas vezes, é preciso saber o espaço livre em disco; o comando df é útil, porque ele pode
formatar diversos tipos de informações. Caso o argumento seja o nome absoluto do dispositivo de disco com
um sistema de arquivos montado, o comando df mostra o espaço disponível naquele sistema de arquivos, em
vez do sistema que contém o dispositivo (que sempre será o sistema raiz).
O comando df sem argumentos:

# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 1004024 307512 645508 33% /
/dev/hda7 248895 25419 210626 11% /home
/dev/hda8 8009052 1906912 5695296 26% /usr
/dev/hda1 20472816 6506400 13966416 32% /mnt/winxp
/dev/cdrom 660502 660502 0 100% /mnt/cdrom
/dev/fd0 1423 0 1423 0% /mnt/floppy

O comando df com argumentos e com pontos de montagem:

# df -a
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 1004024 307512 645508 33% /
none 0 0 0 - /proc
usbdevfs 0 0 0 - /proc/bus/usb
/dev/hda7 248895 25419 210626 11% /home

93
Treinamento Linux – Administração, Redes e Serviços

/dev/hda8 8009052 1906912 5695296 26% /usr


none 0 0 0 - /dev/pts
/dev/hda1 20472816 6506400 13966416 32% /mnt/winxp
/dev/cdrom 660502 660502 0 100% /mnt/cdrom
/dev/fd0 1423 0 1423 0% /mnt/floppy

Nós podemos ver aqui que existem pontos de montagem para o Windows XP, CD-ROM e
unidade de disco flexível. Note que nas duas últimas colunas, é possível ver a capacidade e o nome das
partições e os pontos de montagem. Veja alguns parâmetros que podemos passar ao comando:
-a: Inclui na listagem os sistemas de arquivos que tenham zero blocos, os quais são omitidos por
padrão. Tais sistemas de arquivos são tipicamente pseudo-sistemas de arquivos para propósitos especiais,
assim como as entradas do automounter. Em alguns sistemas, tipos de sistemas de arquivos do tipo “ignore”
ou “auto” são também omitidas por padrão, mas com essas opções serão listadas.
-T: Lista o nome do tipo de cada sistema de arquivos. Qualquer tipo de sistema de arquivos
apresentado pode ser usado também como argumentos em --type= ou --exclude-type=.
Se você quiser saber mais informações sobre o seu disco rígido, use o comando idettool, o qual
abrirá uma tela em modo gráfico com várias informações.

O espaço disponível
Usaremos o comando du quando precisarmos saber as hierarquias de algumas informações
sobre um determinado diretório. Por exemplo, você sabe quantos subdiretórios pertencem ao /opt ou ao
/usr/X11R6 ? O comando du mostra informações sobre o diretório “pai” e os diretórios “filhos”.
Veja alguns parâmetros usados: –a: Mostra informações para todos os arquivos, não somente os
diretórios, –b: Imprime os tamanhos em bytes, –k: Lista os tamanhos em Kbytes, –s: Lista somente o total
para cada argumento, –x: Ignora diretórios que estejam em sistemas de arquivos diferentes daqueles onde o
argumento esteja sendo processado, –S: Apresenta o tamanho de cada diretório separadamente, não
incluindo os tamanhos dos subdiretórios. Veja a seguir o exemplo do comando:

[root@gabriel home]# du -hs adilson/


12 ./lost+found
1 ./adilson/universidade
1 ./adilson/edfutura
1 ./adilson/mp3
2081 ./adilson/fotos
1 ./adilson/hackers
1 ./adilson/kylix
23367 ./adilson
1 ./gabriel/dragonball-Z
1 ./gabriel/dragonball-GT
1 ./gabriel/pokemon
14 ./gabriel
23394 .

Prestando atenção na primeira coluna, temos o tamanho de cada diretório, e na segunda coluna
a hierarquia de cada um deles. Pergunta! Quantos diretórios “pa” existem neste exemplo?

Os arquivos /etc/fstab e /etc/mtab


Os pontos de montagem que poderemos montar e desmontar estão gravados em /etc/fstab, que,
pela nossa conclusão, é um arquivo importante onde podemos adicionar mais pontos de montagem apenas
editado esse arquivo pelo modo texto ou pelo modo gráfico. Porém, devemos tomar extremo cuidado pois se
apagarmos algo por engano poderá ser desastroso.
Veja um exemplo do arquivo /etc/fstab:

/dev/hda5 / ext3 defaults 1 0


/dev/hda6 swap swap defaults 0 0
/dev/hda7 /home ext3 defaults 1 0
/dev/hda8 /usr ext3 defaults 1 0
/dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0
/dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda1 /mnt/winxp vfat user,owner,exec,dev,suid,rw 1 1

94
Global Sul Informática

No exemplo anterior, se reparamos bem, alguns pontos de montagens estão configurados para
serem montados automaticamente. Isso nós vamos aprender daqui a pouco.
O arquivo /etc/fstab é simples de ser entendido. As três primeiras colunas mostram,
respectivamente, o nome do sistema de arquivos, o ponto de montagem e o tipo do sistema.
A primeira coluna é device dos pontos de montagem. Por exemplo: /dev/fd0 é o device para o
ponto de montagem /dev/floppy.
A segunda coluna é o ponto de montagem, ou seja, os diretórios que nós criamos para montar
um sistema de arquivos qualquer.
A terceira coluna informa parâmetros necessários para montar os sistema de arquivos como
vfat, hpfs, ntfs, udf, iso9660 e assim por diante.
A quarta coluna exibe as opções de montagem do sistema de arquivos, onde algumas das
opções que podem ser usadas são:
— async: As operações de E/S são realizadas assincronamente
— auto: Monta automaticamente na inicialização
— defaults: Usa as opções padrão: rw, suid, dev, exec, auto, nouser e async no ponto de
mountagem.
— dev: Interpreta dispositivos especiais de blocos ou caracter
— exec: Permite que os programas sejam executados a partir do dispositivo.
— noauto: O dispositivo deve ser especificado para a montagem
— noexec: Não permite que os programas sejam executados a partir do dispositivo.
— nouser: não permite que os usuários montem o dispositivo.
— ro: Monta o dispositivo para leitura.
— rw: Monta o dispositivo para leitura e gravação
— suid: Permite uso dos bits de configuração de identificação do usuário e do grupo.
— user: Permite que os usuários montem o dispositivo.

A quinta coluna define quais sistemas de arquivos devem ser copiados pelo programa dump.
Este programa examina os arquivos e determina quais arquivos devem ser copiados (back up). Um valor zero
significa que o sistema não é examinado pelo programa dump.
A sexta coluna define a ordem pela qual os sistemas de arquivos devem ser verificados na
inicialização pelo utilitáro fsck. O sistema raiz (/) deve ter ordem 1 (primeiro a ser verificado) e os outros
sistemas devem ter valor zero (não é verificado) ou 2 (é verificado).
Os comandos mount e umount mantêm uma lista dos sistemas de arquivos montados
atualmente no arquivo /etc/mtab. Caso nenhum arquivo seja informado em mount, a lista será
apresentada. Quando o sistema de arquivos proc é montado (digamos em /proc), os arquivos /etc/mtab
e /proc/mounts têm conteúdo muito parecidos.
O /proc/mounts normalmente tem mais informações, tais como opções de montagem usadas,
mas essas não estão necessariamente atualizadas. É possível substituir /etc/mtab por um link simbólico
para /proc/mounts, mas algumas informações podem ser perdidas dessa forma, e algum uso particular como
uma simulação de dispositivo não será aconselhável. Depois que o arquivo /etc/fstab é lido são gravadas estas
informações no /etc/mtab, como podemos ver um exemplo a seguir:

/dev/hda5 / ext3 rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda7 /home ext3 rw 0 0
/dev/hda8 /usr ext3 rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/hda1 /mnt/winxp vfat rw 0 0
/dev/cdrom /mnt/cdrom iso9660 ro,noexec,nosuid,nodev 0 0
/dev/fd0 /mnt/floppy vfat ro 0 0
//micro06/INTERNET /mnt/micro06/INTERNET smbfs 0 0
//micro11/DOWNLOADS /mnt/micro06/DOWNLOADS nfs 0 0
...

No exemplo anterior, podemos constatar que nos pontos de montagem aparece o micro11, que
está configurado para trabalhar com NFS (compartilhamento de arquivos em Unix) e também o micro06,
que está usando o samba e permitindo que uma rede Windows troque informações com uma rede Linux.

95
Treinamento Linux – Administração, Redes e Serviços

Montagem/desmontagem automática
Se o usuário preferir, é possível criar um pequeno arquivo de script para que fiquem guardados
os comandos ‘novos’ que ele venha a criar por meio dos comandos alias e unalias, que funciona assim:

# alias a:=”mount -t vfat /dev/fd0 /mnt/floppy; cd /mnt/floppy; ls -laF /mnt/floppy”

O comando alias anterior definiu naquele momento que o novo comando “a:” quando for
chamado a: <ENTER>, montará automaticamente a unidade de disquete, entrará nela e listará seu conteúdo.
Se desejarmos desativar esse comando, basta digitar o comando unalias a: e voltará tudo como era antes.
Então, uma idéia legal é criar um pequeno arquivo de comandos:

#!/bin/bash
# comandos.exe (nome do arquivo de script que será executável)

alias a:=”mount -t vfat /dev/fd0 /mnt/floppy; ls -laF /mnt/floppy”


alias b:=”mount -t vfat /dev/fd1 /mnt/floppy; ls -laF /mnt/floppyb”
alias a-:=”cd; umount /mnt/floppy”
alias b-:=”cd; umount /mnt/floppyb”
alias zipon:=”mount -t vfat /dev/sda4 /mnt/zip; ls -laF /mnt/zip”
alias zipoff:=”cd; umount /mnt/zip”
alias win:=”mount -t vfat /dev/hda1 /mnt/winxp; ls -laF /mnt/winxp”
alias winoff:=”cd; umount /mnt/winxp”

A primeira linha informa que isso será um arquivo de script interpretado pelo bash e depois os
comandos novos são definidos por cada uma das linhas o comando alias. Mas o interessante é o que, como
foi visto no capítulo 3 deste livro, foi aprendido que os usuários têm uma série de arquivos de configuração e
que é possível fazer um monte de configurações extras predefinidas.
Para executar o script acima, apenas digite o comando:

# source comandos.exe

Isso supondo que esse é o nome dado ao script ou através do comando chmod 755 comandos.exe
e depois para executar basta digitar o comando ./comandos.exe.
A extensão “.exe” aqui não tem nenhum valor, é puramente ilustrativa. Os arquivos em sistema
Linux não dependem de extenção para serem ou não executáveis; eles dependem em si do shell em questão
de direitos de execução.

Reconhecendo as partições
Se você quiser saber informações técnicas sobre as partições, é simples e fácil; basta usar o
comando fdisk, sim o mesmo que cria e gerencia as partições, mas que aqui ele servirá apenas para nos
fornecer informações sobre as partições, veja como:

# /sbin/fdisk -l

Disco /dev/hda: 255 cabeças, 63 setores, 784 cilindros


Unidades = cilindros de 16065 * 512 bytes

Dispositivo Boot Início Fim Blocos Id Sistema


/dev/hda1 * 1 392 3148708+ c FAT32 Win95 (LBA)
/dev/hda2 393 784 3148740 5 Estendida
/dev/hda5 393 456 514048+ 83 Linux
/dev/hda6 457 464 64228+ 82 Linux swap
/dev/hda7 465 483 152586 83 Linux
/dev/hda8 484 784 2417751 83 Linux

96
Global Sul Informática

Anotações:

97
Treinamento Linux – Administração, Redes e Serviços

Anotações:

98
Global Sul Informática

Capítulo 5

Gerenciamento de permissões
O sistema Linux é realmente um ambiente multitarefa real, e por isso é preciso por ordem na
casa, e isso é feito de várias maneiras, uma delas é a permissão1 de acesso para arquivos locais ou remotos no
sistema. A permissão protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas não
autorizados e até mesmo com más intenções. A permissão de acesso do Linux também impede que um
programa desse tipo, por exemplo, apague um arquivo que não deve (algumas vezes, isso é um problemão)
ser apagado, envie arquivos para outra pessoa ou forneça acesso da rede para que outros usuários invadam o
sistema.
O sistema Linux é muito seguro, e como qualquer outro sistema seguro e confiável, impede que
usuários iniciantes (ou mal-intencionados) instalem programas enviados por terceiros sem saber para que
eles realmente servem e causem danos irreversíveis em seus arquivos, no seu micro ou na sua empresa.

Acesso a um arquivo ou diretório


Primeiramente para que você tenha acesso a algo no sistema Linux, uma verificação para ver se
você é o dono do arquivo ou diretório é feita caso seja positivo, as regras para uso serão aplicadas.
Se por ventura você não for o dono do arquivo ou diretório será então verificado se você pertence
ao um grupo de trabalho correspondente, caso pertença, serão aplicadas as permissões do grupo. Mas se
mesmo assim, você não pertencer a um grupo, são verificadas as permissões de acesso para os outros
usuários que não são donos e não pertencem ao grupo correspondente ao arquivo/diretório.
Se isso for positivo, depois daverificação onde você se encaixa nas permissões de acesso do
arquivo (se é o dono, pertence ao grupo, ou outros usuários), é verificado se você terá permissão acesso para o
que deseja fazer – ler(r), gravar(w) ou executar(x) o arquivo–, caso não tenha, o acesso é negado, mostrando
uma mensagem do tipo: “Permission denied” – permissão negada. Veja o exemplo:

[gabriel@gabriel gabriel]$ ls /root/


ls: /root/: Permissão negada
[gabriel@gabriel gabriel]$

O que isto que dizer é que mesmo que você seja o dono do arquivo e definir o acesso do dono
(através do comando chmod) como somente leitura (r) mas o acesso dos outros usuários como leitura e
gravação, você somente poderá ler este arquivo mas os outros usuários poderão ler/gravá-lo.

DICA: O usuário root não tem nenhuma restrição de acesso ao sistema, ele é o todo poderoso, logo
tome cuidado quando estiver usando seu sistema e estiver logado como root. Se por ventura um
usuário comum precisar acessar uma área restrita do sistema ele terá que ter direitos de acesso à
essa área. Quer saber como? Leia mais sobre o comando su e o arquivo sudoers. É uma alternativa.

Caso você tenha permissões de gravação no diretório e tentar apagar um arquivo que você não
tem permissão de gravação, o sistema perguntará se você confirma a exclusão do arquivo apesar do modo
leitura. Caso você tenha permissões de gravação no arquivo, o arquivo será apagado por padrão sem mostrar
nenhuma mensagem de erro (a não ser que seja especificada a opção “-i” com o comando rm).
Por outro lado, mesmo que você tenha permissões de gravação em um arquivo mas não tenha
permissões de gravação em um diretório, a exclusão do arquivo será negada.
Isto mostra que é levado mais em consideração a permissão de acesso do diretório do que as
permissões dos arquivos e sub-diretórios que ele contém. Este ponto é muitas vezes ignorado por muitas

99
Treinamento Linux – Administração, Redes e Serviços

pessoas e expõem seu sistema a riscos de segurança. Imagine o problema que algum usuário que não tenha
permissão de gravação em um arquivo mas que a tenha no diretório pode causar em um sistema mal
administrado.

DICA: As permissões de acesso (leitura, gravação, execução) para donos, grupos e outros usuários
são independentes, permitindo assim um nível de acesso diferenciado. Se você for o dono pode
modificar um arquivo/diretório!

Controlando donos, grupos e outros usuários


O princípio da segurança no sistema de arquivos Linux é definir o acesso aos arquivos por
donos, grupos e outros usuários que funciona do seguinte modo:
Dono: É o usuário que criou o arquivo ou o diretório (caso ele tenha esse direito). O nome do
dono do arquivo/diretório é o mesmo do usuário usado para entrar o sistema Linux. Somente o dono pode
modificar as permissões de acesso do arquivo ou o superusuário root. As permissões de acesso do dono de um
arquivo somente se aplicam ao dono do arquivo/diretório. A identifição do dono também é chamada de user
id (UID). A identificação de usuário e o nome do grupo que ele pertence são armazenadas respectivamente
nos arquivos /etc/passwd e /etc/group.
Exemplo de uma parte do arquivo de senhas, o /etc/passwd.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
...
...
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/srv/ftp:
hacluster:x:17:17:HA Cluster User:/var/lib/heartbeat/ccm:/bin/false
nobody:x:65534:65534:Nobody:/home:
sshd:x:100:233:sshd:/var/empty:/bin/false
postfix:x:101:101:postfix:/var/spool/postfix:
gdm:x:42:42::/home/gdm:/bin/bash
adilson:x:500:500:Adilson Bonan:/home/adilson:/bin/bash
gabriel:x:501:501::/home/gabriel:/bin/bash
www:x:103:103::/srv/www:/bin/false
gabriel:x:501:501::/home/gabriel:/bin/bash
marcio:x:503:503::/home/marcos:/bin/bash
jane:x:511:511::/home/jane:/bin/bash
sueli:x:512:512::/home/sueli:/bin/bash
karina:x:513:513::/home/karina:/bin/bash
sulamita:x:515:515::/home/sulamita:/bin/bash

Esses são arquivos textos comuns e podem ser editados em qualquer editor de texto tanto pelo
modo texto quanto pelo modo gráfico, mas tenha cuidado para não modificar o campo que contém a senha do
usuário encriptada (que pode estar armazenada neste arquivo, caso não esteja usando senhas ocultas).
Se após o nome do usuário aparecer um “x”, isso quer dizer que as senhas estão encriptadas e
agora elas estão na verdade em /etc/shadow, que é um arquivo secundário para o armazenamentos de senhas
no sistema Linux.
Exemplo de uma parte do arquivo de senhas, o /etc/passwd.

root:$1$ghJVYco3$4EgHA78xGDX/MH2NUGRm/1:12286:0:99999:7:::
adilson:$1$odoK4.re$.2njyxvIe.PKN.VERWDhm1:12286:0:99999:7:::
sulamita:$1$j/8R6qHd$3s7xj3Qa.LqKDCJ44s7Yk/:12289:0:99999:7:::
mysql:!!:12287::::::
www:!!:12287::::::
mailman:!!:12287:0:99999:7:::
snort:!!:12288::::::
postgres:!!:12288::::::
xfs:!!:12289::::::
gabriel:$1$6/SkUVkA$JdcQBWaeF9wBCQiw.iJU90:12289:0:99999:7:::
marcio:$1$SU7P5jm0$oxXss6gdN1Ote4OAdd8T7/:12289:0:99999:7:::
ricardo:$1$p1916bVN$XO/O4LK.lCBHRPM4AxntS/:12289:0:99999:7:::

100
Global Sul Informática

luzia:$1$qhTQua7D$EFFaweLtm7rtzbkED/CFv.:12289:0:99999:7:::
sonizia:$1$DiT4Jejk$ff3R7ZtxkDFdH220Sp3r//:12289:0:99999:7:::
anarosa:$1$IfCWvtBv$CgPfPDMBAczPgIg.vTpF10:12289:0:99999:7:::
marlene:$1$P6ibJ1pw$kMzgUGHwltI7oGhJOi6u10:12289:0:99999:7:::
jane:$1$NApLqWam$g.96VchPk1kAyHqyjmn1k1:12289:0:99999:7:::
sueli:$1$//FJHg4n$gbs.8Pq60WSGd/Urypn170:12289:0:99999:7:::
karina:$1$gGTGf9bm$vRikGgCri0igZAU3GqbJl.:12289:0:99999:7:::

DICA: Nunca crie um usuário sem senha, pois esse será um usuário totalmente vulnerável no
sistema. Usuários sem senhas aparecem com “!!” ao lado de seu nome. Se por acaso um cracker
consegue ver esse arquivo, já vaio descobrir que tem alguém que vai entrar em perigo breve. Se bem
que se o cracker conseguir ver esse arquivo é sinal que você já esta em perigo a um bom tempo.

Grupo: Para podermos permitir que vários usuários diferentes tenham acesso a um mesmo
arquivo, já que somente o dono poderia ter acesso ao arquivo, esse recurso foi criado – o grupo –onde cada
usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que
o seu (mesmo que esses arquivos tenham outro dono).
No sistema Linux por padrão, quando um novo usuário é criado, o grupo dele pertencerá ou será
o mesmo de seu grupo primário (exceto pelas condições vistas mais adiante através do comando id). A
identificação do grupo é chamada de gid (group id).
Outros: É a categoria de usuários que não são os donos ou não pertencem ao grupo do arquivo.
Cada um dos tipos acima possui três tipos básicos de permissões de acesso que serão vistas a seguir.
Tipos de permissão de acesso
Nós temos basicamente três tipos de permissões e cada uma pode interagir com o dono, o grupo
e os outros no sistema Linux:

Read (r): Permissão de leitura para arquivos. Se for um diretório, permite listar seu
conteúdo através do comando ls.
Write (w): Permissão de gravação para arquivos. Se for um diretório, permite a gravação
de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser
apagado, é necessário o acesso a gravação.
Execute (x): Permite executar um arquivo se for um programa executável. Se for um
diretório, permite que seja acessado através do comando cd.

Para que seja possível visualizar, poderemos usar o comando: ls -al e então teremos a listagens
dos arquivos do referido diretório, como podemos ver uma parte da listagem seguinte obtida como comando
ls -laF. Acompanhe que o resultado não precisa ser exatamente igual ao do seu sistema. Vamos analisar o que
apareceu, pegando como exemplo a linha:
Quando vemos o drwxr-xr-x pela primeira vez, imaginamos: que coisa maluca! Mas no fundo,
tudo é muito simples.

dRWXr-xr-x
^
A primeira letra, o “d”, mostra que é um diretório, e não um arquivo. Somente será um arquivo
se tiver um “—” no lugar do “d”. O sistema Linux, e os Unix em geral, trabalham com permissão de arquivos,
algo que o Windows não tem, causando dificuldades em alguns iniciantes. Somente para relembrar, as
permissões de arquivos funcionam da seguinte maneira:

“r” (read) = ler, “w” (write) = escrever, gravar, atualizar e “x” (execute) = executar

As permissões são atribuídas a 3 níveis. Eles são:

“u” (user) = dono, “g” (group) = grupo, “o” (others) = outros e


“a” (all)= todos. E seguem a seguinte ordem:

dRWXr-xr-x
^^^ Dono (User)
drwxR-Xr-x
^^^ Grupo (Group)
drwxr-xR-X
^^^ Todos (All)

101
Treinamento Linux – Administração, Redes e Serviços

Como podemos ver, são grupos de três permissões (ler, escrever e executar), um grupo para cada
nível (dono, grupo e todos). Como já foi dito, o “d” significa que é um diretório. Então esse diretório tem
como permissões: Para o dono: “rwx”, o que significa que ele pode ler, escrever e executar.
Para o grupo: “r-x”, o que significa que o grupo pode ler e executar, mas não pode escrever (e
também apagar).
Para todos: “r-x”, o que significa que todos (Sim, todos que estiverem fazendo um “ls -al” nesta
máquina) podem ler e executar, do mesmo modo que para o grupo.
Como foi visto, neste diretório (se fosse um arquivo, neste arquivo) o único que pode modificar,
escrever e deletar as informações é o dono, e o outros pode somente lêr e executa-las. Porém, digamos que
queremos alterar alguma permissão, então para isso vamos ter que usar comando na console (modo texto) ou
em modo gráfico.

Atribuindo permissões: comando chmod


O comando chmod muda a permissão de acesso a um arquivo ou diretório. Com esse comando,
podemos escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos.
Sempre que um arquivo é criado, seu dono é o usuário que o criou, e seu grupo é o grupo do usuário (exceto
para diretórios configurados com a permissão de grupo “s”).
Sintaxe: chmod [opções] [permissões] [diretório/arquivo].
Onde: diretório/arquivo: Diretório ou arquivo que terá sua permissão mudada. Opções.

-v, --verbose: Mostra todos os arquivos que estão sendo processados.


-f, --silent: Não mostra a maior parte das mensagens de erro.
-c, --change: Semelhante a opção “-v”, mas só mostra os arquivos que tiveram as
permissões mudadas.
-R, --recursive: Muda permissões de acesso do diretório/arquivo no diretório atual e
sub-diretórios.

Alterando permissões pelo modo literal


Continuando o que já foi mencionado... então não queremos que todos leiam nem executem algo
lá dentro, porém queremos que as pessoas do seu grupo possam modificá-las. Então, estaremos tirando a
permissao de “r-x” de todos e adicionando a permissão “-w-” para o grupo. O que precisamos é usar o
comando “chmod” (CHange MODe) para alterar as permissões.
O comando seria: chmod <permissão> <arquivo e/ou diretório>.

# chmod a-rx /dev/


# chmod g+w /dev/

O modo literal é mais fácil de ser entendido, porque usa letras para identificar:

[a]ll=Todos, [g]roup=Grupo, [o]thers=Outros e [u]ser=dono


[+]=Adicionar permissão e [-]=Remover permissão

Então entendendo os comandos chmod a-rx /dev/ e chmod g+w /dev/, o primeiro tira a
permissão de todos de ler e executar. Veja que o chmod usa “a-rx”. Do “a” (todos), ele tira o “rx” (ler e
executar) usando o “-” (Menos).
O segundo dá a permissão para o grupo de escrever. Veja que o chmod usa “g+w”. Do “g”
(grupo), ele adiciona o “w” (escrever) usando o “+” (Mais). Vamos ver um pequeno resumo:

chmod a+rwx arquivo-teste.tar: Todo mundo faz o que quiser com o arquivo.
chmod a-rwx arquivo-teste.tar: Ninguém não faz nada com o arquivo.
chmod u+rwx arquivo-teste.tar: O dono faz o que quiser com o arquivo.
chmod g+r-x arquivo-teste.tar: O usuários do grupo podem ler e executar, MAS não podem
apagar o arquivo.
chmod o=--- arquivo-teste.tar: Se não for o dono e não for do grupo, ou seja, os outros
aqui não fazem nada.

A seguir, mais exemplos para aprender bem como é que se faz. Exemplos de permissões de
acesso:

102
Global Sul Informática

chmod g+r *: Permite que todos os usuários que pertençam ao grupo dos arquivos(g)
tenham(+) permissões de leitura(r) em todos os arquivos do diretório atual.
chmod o-r teste.txt: Retira(-) a permissão de leitura(r) do arquivo teste.txt para os
outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo
teste.txt).
chmod uo+x teste.txt: Inclui (+) a permissão de execução do arquivo teste.txt para o
dono e grupo do arquivo.
chmod a+x teste.txt: Inclui (+) a permissão de execução do arquivo teste.txt para o
dono, grupo e outros usuários.

DICA: O comando chmod não muda permissões de links simbólicos; as permissões devem ser
mudadas no arquivo alvo do link. Também podem ser usados códigos numéricos octais para a
mudança das permissões de acesso a arquivos/diretórios as quais vamos aprender na seqüência.

Alterando permissões pelo modo numérico (octal)


Olha só que interessante: Em vez de utilizar os modos de permissão “+r”, “-r” etc., é possível
usar o modo octal para alterar a permissão de acesso a um arquivo. O modo octal é um conjunto de oito
números onde cada número define um tipo de acesso diferente. Então, se mudarmos a permissão de um
arquivo para chmod 754 teste.tar.gz, estaremos permitindo que o dono dele possa ler, escrever e executar,
que o grupo possa ler e executar e que todos possam somente ler o arquivo. Então, chmod 754 teste.tar.gz é
igual a:

chmod u+rwx teste.tar.gz, chmod g+rx teste.tar.gz


chmod g-w teste.tar.gz, chmod o+r teste.tar.gz
chmod o-wx teste.tar.gz

Entendeu? Espero que sim, se não conseguiu entender, leia tudo de novo, que uma hora você
entenderá. Veja como é mais flexível gerenciar permissões de acesso usando o modo octal em vez do comum
(literal), pois podemos especificar diretamente a permissão do dono, grupo, outros, e não gerenciar as
permissões de cada um separadamente.

Permissões
Números (UGOA)
correspondentes
0 Nenhuma permissão ---
1 Executar --x
2 Escrever -w-
3 Escrever e executar -wx
4 Ler r--
5 Ler e executar r-x
6 Ler e escrever rw-
7 Ler, escrever e executar rwx

O uso de um desses números define a permissão de acesso do dono, grupo ou outros usuários.
Vamos a prática com alguns exemplos:

chmod 000 teste.tar.gz: Ninguém pode fazer nada no arquivo.


chmod 777 teste.tar.gz: Todo mundo faz o que quiser no arquivo.
chmod 700 teste.tar.gz: O dono faz tudo e ninguém faz nada no arquivo.
chmod 750 teste.tar.gz: O dono faz tudo, o grupo só lê e executa e os outros nada.
chmod 755 teste.tar.gz: O dono faz tudo, o grupo e os outros podem ler e executar o
arquivo.

103
Treinamento Linux – Administração, Redes e Serviços

chmod 666 teste.tar.gz: Todos só podem ler e executar o arquivo.


chmod 754 teste.tar.gz: O dono faz tudo, o grupo só lê e executa e os outros somente
podem ler o arquivo.
chmod 444 teste.tar.gz: O arquivo somente pode ser lido por todos.
chmod 111 teste.tar.gz: Todos somente podem executar o arquivo e nada mais.

Alterando permissões pelo modo absoluto


Uma maneira interessante de configurar as permissões de acesso é pelo modo absoluto, como é
chamado; esse modo parece ser bem mais fácil de entender e funciona da seguinte maneira, veja a tabela
seguinte:

Todos (a)
Dono (u) Grupo (g) Outros (o)
R W X R W X R W X
400 200 100 40 20 10 4 2 1

Para entender como a tabela funciona, imagine que desejamos configurar a seguinte permissão:
o dono faz tudo, o grupo somente lê e executa e os outros somente lêem.
Logo já sabemos que para o dono (u)=rwx, grupo (g)=r-x e outros (o)= --r, então como é que
poderíamos configurar isso em modo numérico usando a tabela anterior?
Simples, vejamos: r=400, w=200 e x= 100, então as permissões para o dono é a soma de r+w+x,
que resulta em 700.
Na seqüência, a soma para o grupo é r+x que resulta 60, e por final, a soma dos outros que neste
caso é apenas o x, que é igual a 1. Portanto, agora vamos configurar a permissão usando o comando chmod
761 teste.tar.gz.

Anotações:

104
Global Sul Informática

105
Treinamento Linux – Administração, Redes e Serviços

Anotações:

106
Global Sul Informática

Capítulo 6

Empacotamento e compressão de arquivos


No sistema Linux, assim como em qualquer outro sistema, as rotinas de backup e compactação
de arquivos, já que a maioria dos arquivos nos dias de hoje tendem a ser maior que a capacidade de um
simples disquete de 31/2”, também são fáceis de manipular. É possível fazer tudo via modo texto ou via modo
gráfico.
Já pensou em perder horas, dias ou até mesmo semanas de trabalho devido à falta de uma cópia
de segurança atualizada de seus dados. Então, neste capítulo, vamos aprender como é que devemos proceder
para fazer isso de uma forma correta, e para isso vamos aprender alguns comandos básicos do sistema Linux.
Isso sem falar que os mais novos compactadores para ambiente Windows já podem abrir alguns formatos de
arquivos empacotados e/ou compactado no Linux, e o Linux pode abrir também arquivos zipados pelo
Windows.
No Windows nós temos vários tipos de arquivos, mas hoje os mais populares do arquivos do
Winzip (.zip) e do Winrar (.rar) os outros meio que ficaram esquecidos na história. Então acabamos nos
acostumando com esses extensões, porém no sistema Linux nós já temos uma outras bem diferente e que são
comuns para os usuários desse sistema.
Com o o tempo você pega o jeito, mas é assim: – Quando o arquivo está “tarjeado”, ele apenas
apresenta a extensão “.tar” em seu nome. Lembrete, o arquivo é “tarjeado” e não “tarado” como eu já vi
alguns usuários novos no sistema, não é porque ele tem “.tar” que vai ser um “tarado”, né?
E quando esse arquivo “tarjeado”está compactado ele poderá apresentar junto com seu .tar a
identificação de quem o compactou. Há muitas extensões que identificam arquivos compactados, vamos ver
aqui somente as mais usadas.

*.gz: O arquivo foi compactado pelo gzip (muito popular).

*.bz2: O arquivo compactado pelo bzip2 (muito popular).

*.Z: O arquivo foi compactado pelo programa compress. Use o programa uncompress para
descompacta-lo. Foi muito usado mas perde em taxa de compactação para o gzip e o bzip2.

*.zip: O arquivo foi compactado pelo programa zip do Linux. Use o programa unzip para
descompacta-lo. Esse formato pode ser lido pelo equivalente no Windows.

*.lha: Formato de arquivo compactado muito pouco usado hoje.

*.rar: O arquivo foi compactado pelo programa rar. Use o programa rar para descompacta-
lo. Já existem alguns programas linux que entende esse formato.

*.tar.gz: O arquivo foi compactado pelo programa gzip depois de ser transformado em um
tar. Para descompar, você pode usar o gzip e depois o tar ou somente o programa tar
usando a opção -z assim: tar -xzpvf arquivo.tar.gz.

*.tgz: É a abreviação de .tar.gz esse formato é muito usado no slackware.

*.tar.bz2: O arquivo foi compactado pelo programa bzip2 depois de ser transformado em um
tar. Para descompar, você pode usar o bgzip com o parâmetro -dv e depois o tar ou
somente o programa tar usando a opção -I assim: tar -xzpvf arquivo.tar.bz2.

*.tar.Z: O arquivo foi compactado pelo programa compress depois de ser transformado em
um tar. Para descompacta-lo, você pode usar o uncompress e depois o tar ou somente o
programa tar usando a opção -Z.

107
Treinamento Linux – Administração, Redes e Serviços

Não se esqueça que mesmo sendo Linux nós temos outras extensões, algumas bem antigas como
o .lha, lhx e outras novas como .zip, .rar e até mesmo no padrão .sit da Apple.

DICA: Um arquivo .tar não significa que ele seja um arquivo compactado, em alguns casos ele fica
atémaior que a soma dos outros. O que ele faz na verdade é guardar dentro dele mais arquivos.

Empacotando arquivos com o comando tar


O comando tar salva vários arquivos em um único arquivo .tar (em fita ou disco), e podemos
restaurá-los individualmente. Seu uso é simples: tar [opções]... [arquivo.tar]. Veja alguns exemplos:

# tar -cpvf backup-2.tar /home/adilson/fotos/*

Cria o arquivo backup-2.tar de todas as fotos que estão em /home/adilson/fotos.

# tar -xpvf backup-2.tar

Volta o backup do arquivo backup-2.tar de todas as fotos que estavam em /home/adilson/fotos.

# tar -tpvf backup-2.tar

Lista todos os arquivos do arquivo backup-2.tar.

# tar -jcf usuarios.tar.bz2 /home/adilson /home/gabriel

Cria arquivo usuarios.tar.bz2 contendo apenas os diretórios do usuário adilson e o usuário


gabriel. Se quisermos fazer um backup de todos os usuários do /home usaríamos o comando # tar -cpvf
TodosDoHome.tar /home/*, por exemplo.
Se uma opção longa aparece como argumento mandatório, então a opção curta equivalente
também é um argumento mandatório. Idem para argumentos opcionais. Vamos ver aqui os principais
parâmetros usados e passados para o comando tar. Principal modo de funcionamento:

-C: Permite mudar de diretório.


-t: Listar o conteúdo de um arquivo-tar.
-x: Extrair arquivos do arquivo-tar.
-c: Criar um arquivo-tar.
-d: Comparar o arquivo-tar com arquivos atuais.
-r: Anexar arquivos no fim do arquivo-tar.
-u: Atualiza arquivos no arquivo-tar.
-A: Anexar outros arquivos-tar.
--concatenate: O mesmo que “-A”.
--delete: Remover do arquivo-tar (exceto para fitas).
-v: Mostra informações no decorrer do processamento.

Seleção do formato do arquivo:

-I, --bzip2, --bunzip2: Filtra o arquivo através do bzip2.


-z, --gzip, --ungzip: Filtra o arquivo através do gzip.
-Z, --compress, --uncompress: Filtra por meio do compress.

Seleção local de arquivos:

-C: Mudar para diretório.


-h, --dereference: Usar os próprios arquivos, em lugar dos ligações simbólicas.
--no-recurse: Não descer pela árvore de diretórios.

108
Global Sul Informática

Essa observação é muito importante se você possui um arquivo “.tar” muito grande, apesar da
compactação, e deseja quebrá-lo em vários pedaços para poder copiar em disquete para levar a um outro
micro:

# tar –cvM –L 1350 –f /mnt/floppy/partes.tgz grande.tgz.

O comando anterior pega o arquivo grande.tgz e o quebra em várias partes.tgz para que seja
possível gravá-lo em vários disquetes. Mas é muito importante que os disquetes estejam em perfeito estado
para não ocorrer erros de gravação. Outro uso interessante para o comando tar é a cópia remota que funciona
assim:

# tar cvf - [origem] | rsh [sistema_remoto] ‘(cd [destino]; tar xvfB -)’

Resumindo: O comando tar vai até a [origem] e, por meio de pipes (dutos) usando o rsh (remote
shell), executa o comando (cd [destino]; tar xvfB -), que é feito remotamente. Isso é legal, porque nem é
preciso usar ftp. No entanto, máquinas precisam estar cadastradas no arquivo /etc/.rhosts ou em
/etc/hosts.equiv.
Se você estiver em uma rede e desejar passar o arquivo para um outro micro, porque não fazer
um ftp em vez de ficar copiando vários disquetes e depois juntando os pedaços de volta? Sua estação é Linux
em uma rede Windows ou vice-versa; que tal lá no Linux ‘levantar’ um servidor web básico e copiar o arquivo
da máquina Linux para máquina Windows como se estivesse fazendo um download da Internet? Você acha
difícil? Calma que já vamos aprender essa técnica interessante.
Em uma máquina com o sistema Linux operante e toda a configuração de rede certinha e com o
servidor apache no ar, verifique com o comando ps -aux | grep http.

root 856 0.0 4.4 2612 1312 ? S 16:38 0:00 httpd


nobody 858 0.0 3.2 2812 940 ? S 16:38 0:00 httpd
nobody 857 0.0 3.2 2812 960 ? S 16:38 0:00 httpd
root 889 0.0 1.7 1296 500 tty2 S 16:40 0:00 grep httpd

Se isso aparecer, está tudo ok; caso contrário, apenas digite o comando httpd start.
Bom, não vamos entrar em detalhes sobre a configuração do servidor apache, mas isso já deverá
ter sido feito pelo seu administrador da rede para que você possa fazer os seus “downloads” de uma máquina
Linux para uma máquina Windows ou Linux. Mas, como o objetivo deste livro é ensinar a configuração do
sistema Linux, vamos dar uma “palhinha” para o usuário/leitor que logo de cara já vai aprendendo como é
que o alcance do Linux é muito mais amplo do que pensamos.
Para que uma máquina com o Windows e uma máquina Linux possam também fazer o
download dos arquivos, faça o seguinte:

1. Levante o servidor apache básico: httpd ou httpd start.


2. Entre no caminho /etc/httpd/html e crie um diretório chamado downloads.
3. Copie os arquivos que os usuários poderão pegar via download.
4. Configure esse diretório para acesso das outras pessoascom o comando chmod 755
downloads.

Usando o comando tar também podemos fazer cópias de nossos arquivos e diretórios inteiros,
com a vantagem de se preservar as mesmas permissões e atributos dos arquivos, para isso use o comando:

# (cd /origem && tar cf - . ) | (cd /destino && tar xvfp -)

O uso dos parêntesis permite com que a operação seja executada em uma subshell, não afetando
a shell que vc está usando. A primeira coisa que o comando faz é ir para o diretório de origem e, se sucedido
(&&), cria um arquivo tar com todo o conteúdo e daí depois que vai para o destino.

Usando o compress e uncompress


O comando compress compreende os seguintes arquivos acessórios: uncompress e zcat para
fazer descompactação e exibição de dados. O comando compress reduz o tamanho do arquivo (compacta)
usando um código Lempel-Ziv coding. Os arquivo que foram compactados usando o comando compress terão

109
Treinamento Linux – Administração, Redes e Serviços

a extensão .Z. O compress não compacta muito bem se comparado com outros compactadores mais novos
para Linux, mas, como precisamos aprender alguns deles, o compress também faz parte do jogo.
Para comprimir:

# compress <parâmetros> <arquivo>

Para descomprimir:

# uncompress <parâmetros> <arquivo>

Os parâmetros básicos mais comuns são:

-f = Para o compress trabalhar em background (segundo plano).


-c = Descompacta somente para a tela do sistema.
-V = Mostra informações adicionais sobre cada arquivo que está sendo compactado.
-v = Exibe informações sobre o que está acontecendo com os arquivos que estão sofrendo a
compactação.
-d = Pode ser usado com o compress para fazer também a descompactação de arquivos.

Exemplo prático, vamos compactar o arquivo estudos.tar (13.291.520), que tem mais de treze
megabytes, e analisar a compactação.

# compress -v estudos.tar
estudos.tar: -- replaced with estudos.tar.Z Compression: 43.21%
# ls -l
-rw-r--r-- 1 root root 7548715 Nov 18 00:54 estudos.tar.Z

Percebemos que o arquivo que antes tinha uns treze megabytes agora tem menos de oito
megabytes. A compactação criou um arquivo com quase metade de tamanho. Agora para descompactar,
usamos o comando:

# uncompress -v estudos.tar.Z
estudos.tar.Z: -- replaced with estudos.tar

Usando o bzip2 e bunzip2


O comando bzip2 faz compactação de arquivos. Usaremos os seguintes acessórios ao bzip2: o
bunzip2 para fazer descompactação (opcional), pois no próprio bzip2 é possível fazer a descompactação; o
bzcat para descompactar arquivos na tela do sistema; e bzip2recover quando possível para recuperar arquivos
danificados.
O comando bzip2 compacta todos os arquivos de um diretório qualquer e acrescenta no final de
cada arquivo a extensão .bz2. Cada arquivo que foi compactado continuará com as mesmas permissões, dono,
grupo etc. intactas. E na hora da descompactação, a extensão .bz2 será removida do arquivo e ele voltará ao
tamanho original. O bzip2 tem inúmeros parâmetros, mas vamos ver os mais usados e o que realmente
interessa aqui.
Para compactar:

# bzip2 <parâmetros> <arquivo>

Para descompactar:

# bunzip2 <parâmetros> <arquivo>

Onde os parâmetros são:

-1 até -9: Onde o -9 é o maior fator de compressão.


-v: Exibe as informações do processamento na tela do micro.
-c: Descompacta para a tela do sistema.
-d: Executa a descompactação.
-t: Faz teste de verificação de integridade do arquivo.

110
Global Sul Informática

-f: Força sobrescreve arquivos.


-s: Reduz o uso de memória exigida para grande quantidade de arquivos ‘comprimindo o
arquivo exemplo.tar’.

Exemplo prático, vamos compactar o arquivo estudos.tar (13.291.520 kb), que tem mais de treze
megabytes, e analisar a compactação.

# bzip2 -v9 estudos.tar


estudos.tar: 2.345:1, 3.412 bits/byte, 57.36% saved, 13291520 in, 5668005 out.
# ls -l
-rw-r--r-- 1 root root 5668005 Nov 18 00:54 estudos.tar.bz2

Percebemos que o arquivo que antes tinha uns treze megas agora tem menos de seis. A
compactação criou um arquivo com bem menos da metade de tamanho, e isso é bom. Agora para
descompactar usamos o comando:

# bunzip2 -v estudos.tar.bz2
estudos.tar.bz2: done

Vale lembrar aqui que o comando bzip2 também descompacta arquivos, basta colocar o
parâmetro –dv assim bunzip2 -v estudos.tar.bz2.

Usando o gzip, gunzip e zcat


Os comandos gzip, gunzip, zcat compactam, expandem e lêem arquivos em alguns formatos no
sistema Linux. Sempre que possível, cada arquivo é substituído por outro com a extensão .gz, mantendo o
dono, as permissões e as datas de modificação. O gzip somente tentará compactar arquivos normais. Em
particular, ele ignorará links simbólicos.
Por definição, o gzip mantém o nome do arquivo original e sua data no arquivo compactado.
Esses dados são usados na expansão do arquivo por meio da opção –N. Isso pode ser útil quando o nome de
um arquivo compactado for truncado ou quando a data do arquivo não for preservada após uma
transferência. Arquivos compactados podem ser restaurados para o seu formato original usando gzip -d,
gunzip ou zcat.
O comando gunzip recebe uma lista de arquivos por meio da linha de comando e considera que
seus nomes finalizem com .gz, -gz, .z, -z, z ou .Z e que comecem com o número mágico correto de um arquivo
não compactado sem a extensão original. O gunzip também reconhece extensões especiais, tais como .tgz,
assim como atalhos para .tar.gz e .tar.Z, respectivamente.
Ao descompactar, o gzip usa a extensão .tgz; caso seja necessário, em vez da extensão truncada
de um arquivo “.tar”. Veja os parâmetros mais comuns usados:

-d --decompress --uncompress: Descompactar um arquivo.


-f --force: Força a compactação e descompactação mesmo que o arquivo tenha múltiplos
links ou o arquivo correspondente já exista ou ainda mesmo que os dados compactados
sejam lidos ou gravados em um terminal.
Caso os dados de entrada não estejam em um formato reconhecido por gzip, e se a opção
-stdout for informada, ele copia os dados de entrada sem alterações para a saída padrão,
deixando zcat comportar-se como cat.
-l -list: Para cada arquivo compactado, lista os seguintes campos: tamanho compactado;
tamanho do arquivo compactado; tamanho descompactado; tamanho do arquivo descompactado
razão; taxa de compactação (0.0% se desconhecida), nome descompactado; nome do arquivo
descompactado.
-r -recursive: Navega pela estrutura de diretórios recursivamente.
--fast -best: Regula a velocidade da compactação usando um dígito especificado.

Exemplo prático: Vamos compactar o arquivo estudos.tar de tamanho 13.291.520 KB, que tem
mais de treze megabytes, e analisar a compactação.

# gzip -v9 estudos.tar


estudos.tar: 47.0% -- replaced with estudos.tar.gz
# ls -l
-rw-r--r-- 1 root root 6247484 Nov 18 00:54 estudos.tar.gz

111
Treinamento Linux – Administração, Redes e Serviços

Percebemos que o arquivo que antes tinha uns treze megabytes agora tem menos de sete. A
compactação criou um arquivo com menos da metade de tamanho. Agora para descompactar usamos o
comando:

# gunzip -v estudos.tar.gz
estudos.tar.gz: 47.0% -- replaced with estudos.tar

O tamanho descompactado é dado por um indicador –1 para arquivos que não estejam em
formato gzip, tais como arquivos compactados .Z. Para obter o tamanho do arquivo descompactado, pode-se
usar:

# zcat arquivo.Z | wc -c.

Usando o znew
O uso do comando znew embora raro é interessante caso você queira recompactar arquivos do
formato do compress “.Z” para o formato do gzip “.gz”. Após a recompactação, os arquivos de origem .Z são
apagados. Seu uso é simples znew [opções] <arquivo.Z> . Onde arquivo.Z é o arquivo compactado pelo
comando compress que será recompactado para o gzip.
Temos ainda algumas opções:

–f : Substitui o arquivo .gz caso já exista.


–t: Teste os novos arquivos criados antes de apagar os arquivos .Z.
–v: Mostra o nome e porcentagem de compactação para cada arquivo processado.
–9: Usa a máxima compactação.
–P: Usa pipes (dutos) durante a conversão para reduzir o espaço ocupado no disco. A data
e hora do arquivo não é mantida caso esta opção seja usada.
–K : Mantém o arquivo .Z caso seja menor que o arquivo .gz.

Quebrando arquivos grandes


O comando split é realmente muito útil quando você o usa em conjunto com outros comandos
para obter um resultado. Veja esse exemplo prático para entender como funciona o comando split. Vamos
supor que temos um arquivo compactado mas que mesmo assim é grande, e desejamos saber como dividir
um arquivo que está compactado como “.tar.gz” e um como “.zip”.
Precisaríamos, então, passar esses arquivos para o computador em um outro local fora da rede;
como ele tem mais de 5 MB (exemplo), não podemos passá-lo via e-mail nem por disquete.
Vejamos agora qual deve ser o procedimento correto. Precisamos, então, agora dividir um
arquivo grande em vários pequenos pedaços com o parâmetro -b, assim:

# split -b1440k estudos.tar disk-


# ls -l
-rw-r--r-- 1 root root 1474560 Nov 18 01:11 disk-aa
-rw-r--r-- 1 root root 1474560 Nov 18 01:11 disk-ab
-rw-r--r-- 1 root root 1474560 Nov 18 01:11 disk-ac
...
-rw-r--r-- 1 root root 1474560 Nov 18 01:11 disk-ai
-rw-r--r-- 1 root root 20480 Nov 18 01:11 disk-aj

Lembra-se do arquivo estudos.tar (13.291.520 KB), que tinha mais de treze megabytes de
tamanho? Pois é, agora ele foi fragmentado e está dividido em dez pedaços de 1.474.560 KB, pouco mais de
um megabyte, ou seja, é do tamanho de um disquete 31/2” de alta densidade.
Se não for passado a informação “disk-”, isso vai quebrar o arquivo em vários arquivos menores
com no máximo mais ou menos uns 1400 KBytes, e então poderemos gravar cada um deles em um disquete.
Ele vai gerar arquivos com os nomes xaa, xab, xac, xad etc..., mas se achar melhor, você pode escolher algum
prefixo, que nesse caso foi “disk-”.
Para recuperar o arquivo, copie todos os disquetes para um mesmo diretório e use o comando
cat, que nessa altura do campeonato você já percebeu que é realmente poderoso cat * > estudos.tar.
O comando cat ordena sozinho, mas se for usar o copy do MS-DOS você não poderia trocar a
ordem dos arquivos; isso seria um desastre. Lembre-se: também é possível fazer essa ‘quebra’ com o
comando tar, mas a finalidade aqui é mostrar o recurso do comando split.

112
Global Sul Informática

Anotações:

113
Treinamento Linux – Administração, Redes e Serviços

Anotações:

114
Global Sul Informática

Capítulo 7

Gerenciamento de pacotes com RPM


O formato de arquivos para instalação – rpm1 – desenvolvido pela Red Hat–, a mais famosa
distribuição Linux, veio para facilitar e muito a vida dos usuários do sistema Linux. Com o formato de
arquivo rpm, é possível facilmente instalar, desinstalar, atualizar, consultar, pesquisar, criar rpm etc. Então,
logo de início, percebemos o quanto deve ser fácil trabalhar com o formato rpm. Até mesmo podemos instalar
vários programas ao mesmo tempo por meio do uso de coringas.
Vamos entender o formato rpm como se fosse um arquivo .zip lá do Windows, que preversa uma
série de informações sobre os arquivos. Aqui vamos chamar de pacote o arquivo em formato rpm que contém
todos os arquivos necessários para que um determinado programa/aplicativo funcione no sistema Linux. Mas
isso vai além dessa simples comparação, pois um pacote rpm pode conter informações como: empresa que
está distribuindo o pacote, URL, email, descrição do pacote, onde vai para os arquivo de pacote depois de
instalado etc.
Para desenvolvedores, o rpm permite manter fontes e binários e suas atualizações
separadamente, empacotando-os de forma configurável para os usuários finais. O gerenciador mantém uma
base de dados com os pacotes instalados e seus arquivos, o que permite executar pesquisas complexas e
verificações de maneira ágil e segura. Durante atualizações de programas, o rpm administra, por exemplo,
arquivos de configuração, mantendo as configurações já realizadas no sistema, uma tarefa impossível, por
exemplo, para programas em formatos “.tar.gz” e similares.
Pacotes no formato rpm poderão ser instalados tanto via modo texto quanto modo gráfico, e
para modo gráfico existem vários programas, e entre eles os mais conhecidos e usados são o gnorpm (Gnome)
e o kpackage (KDE). O rpm, é um poderoso gerenciador de pacotes, que pode ser usado para construir,
instalar, pesquisar, verificar, atualizar e desinstalar pacotes individuais de software. Um pacote consiste em
armazenagem de arquivos e informações, incluindo nome, versão e descrição.
Com o rpm, é possível fazer:

1. Manutenção de pacotes e instalação via ftp.


2. Gerência de pacotes com rpm.
3. Verificar pacotes já instalados e descobrir arquivos com conflitos.
4. Encontrar dependências não resolvidas.
5. Desinstalar pacotes não mais necessários no sistema.
6. Atualizar pacotes por versões mais novas.
7. Consultar arquivos de pacotes instalados e não instalados etc.

Parâmetros básicos do rpm

Modo de Instalação: rpm -i [opções-de-instalação] <arquivo pacote>.


Modo de Consulta: rpm -q [opções-de-consulta].
Modo de Verificação: rpm -V|-y|--verify [opções-de-verificação].
Modo de Validação de Assinatura: rpm --checksig <arquivo pacote>+.
Modo de Desinstalação: rpm -e <nome do pacote>.
Modo de Construção: rpm -[b|t]O [opções-de-construção] <spec do pacote>+.
Reconstruir Banco de Dados: rpm --rebuilddb.
Ajustar Permissões: rpm --etperms [especificadores-de-consulta-de-pacote].
Ajustar Donos e Grupos: rpm --setugids [especificadores-de-consulta-de-pacote].
Exibir Configuração: rpm --showrc.
Um “+” após um parâmetro indica que ele pode aparecer mais de uma vez.

115
Treinamento Linux – Administração, Redes e Serviços

RPM em pacotes não instalados


Vamos aprender como devemos proceder para buscar informações sobre pacotes que ainda não
foram instalados. A vantagem disso é que ficamos sabendo um monte de informações sobre esses pacotes e
então poderemos decidir se essas informações é interessante ou não.
Bom, se você não baixou o(s) pacote(s) rpm da Internet, então provavelmente está usando um
cd-rom, e os locais onde os rpm estão variam de acordo com a distribuição, por exemplo:

/mnt/cdrom/conectiva/RPMS/ > Distribuições Conectiva Linux.


/mnt/cdrom/Mandrake/RPMS/ > Distribuições Mandrake Linux.
/mnt/cdrom/Techlinux/RPMS/ > Distribuições Techlinux Linux.
/mnt/cdrom/RedHat/RPMS/ > Distribuições RedHat Linux.

Porém, esse locais podem variar conforme releases novos dessas distribuições. Nesses locais,
você encontrará um monte de arquivos rpm. Vamos usar aqui como exemplo uma distribuição Conectiva
Linux. Parâmetros.
Para saber o nome de um pacote depois de instalado, use -qp:

# rpm -qp /mnt/cdrom/conectiva/RPMS/zsh-3.0.8-1cl.i386.rpm


zsh-3.0.8-1cl

Para saber quais são os arquivos do pacote, use -qlp:

# rpm -qlp /mnt/cdrom/conectiva/RPMS/xpdf-0.92-1cl.i386.rpm


/usr/bin/pdfimages
/usr/bin/pdfinfo
/usr/bin/pdftopbm
/usr/bin/pdftops
/usr/bin/pdftotext
/usr/bin/xpdf
/usr/share/doc/xpdf-0.92
/usr/share/doc/xpdf-0.92/CHANGES
/usr/share/doc/xpdf-0.92/README
/usr/share/man/man1/pdfimages.1.gz
/usr/share/man/man1/pdfinfo.1.gz
/usr/share/man/man1/pdftopbm.1.gz
/usr/share/man/man1/pdftops.1.gz
/usr/share/man/man1/pdftotext.1.gz
/usr/share/man/man1/xpdf.1.gz

Para ler o cabeçalho de informação do pacote, use -qip:

# rpm -qip /mnt/cdrom/conectiva/RPMS/wine-20010510-1cl.i386.rpm


Name : wine Relocations: (not relocateable)
Version : 20010510 Vendor: Conectiva
Release : 1cl Build Date: Seg 28 Mai 2001
Install date: (not installed) Build Host: api2.distro.conectiva
Group : Emuladores Source RPM: wine-20010510-1cl.src.rpm
Size : 11061159 License: WineL
URL : http://www.winehq.org/
Summary : Executa programas Windows no Linux
Description : O Wine é um programa que permite rodar programas MS-Windows no X11. Ele
consiste de um carregador de programa, que carrega e executa um binário MS-Windows, e de
uma biblioteca de emulação que traduz as chamadas da API para as equivalentes Unix/X11.

Aqui, entre várias informações possíveis, sabemos qual é o grupo a que ele pertence
(Group:Emuladores), URL, um pequeno sumário e uma descrição mais detalhada.
Para saber onde estará a documentação do pacote, use -qdp:

# rpm -qdp /mnt/cdrom/conectiva/RPMS/wine-20010510-1cl.i386.rpm


/usr/X11R6/man/man1/wine.1.gz
/usr/X11R6/man/man1/winemaker.1.gz
/usr/X11R6/man/man1/wmc.1.gz
/usr/X11R6/man/man1/wrc.1.gz
/usr/X11R6/man/man5/wine.conf.5.gz

116
Global Sul Informática

/usr/share/doc/wine-20010510/ANNOUNCE
/usr/share/doc/wine-20010510/AUTHORS
/usr/share/doc/wine-20010510/BUGS
/usr/share/doc/wine-20010510/ChangeLog
/usr/share/doc/wine-20010510/DEVELOPERS-HINTS
/usr/share/doc/wine-20010510/LICENSE
/usr/share/doc/wine-20010510/README
/usr/share/doc/wine-20010510/README.debugger
/usr/share/doc/wine-20010510/WARRANTY

Para todos os pacotes que requerem <capacidade> para funcionar corretamente, use -q –
whatrequires:

# rpm -q --whatrequires /mnt/cdrom/conectiva/RPMS/xmms-1.2.4-9cl.i386.rpm


nenhum pacote requer /mnt/cdrom/conectiva/RPMS/xmms-1.2.4-9cl.i386.rpm

Para saber quais são os arquivos de configuração do pacote, use -qcp:

# rpm -qcp /mnt/cdrom/conectiva/RPMS/wu-ftpd-2.6.1-4cl.i386.rpm


/etc/ftpaccess
/etc/ftpconversions
/etc/ftpgroups
/etc/ftphosts
/etc/ftpusers
/etc/logrotate.d/ftpd
/etc/pam.d/ftp

Para exibir informações dos arquivos como segue: caminho, tamanho, mtime md5sum, modo,
dono, grupo, isconfig, isdoc, rdev, symlink. Isso deve ser usado com uma das opções -l, -c, -d. mtime indica
o dia e hora de criação do arquivo; isdoc indica se o arquivo é documentação; e isconfig indica se é um
arquivo de configuração.

# rpm -q --dump xmp-xmms-2.0.4-2cl


/usr/lib/xmms/Input/xmp-plugin.so 351176 988915835 d46af7c84d65581466b0145 \
8d31c645d 0100644 root root 0 0 0 X

Para saber informações do cabeçalho e em que local estarão os arquivos depois da instalação,
poderemos usar o comando less:

# less /mnt/cdrom/conectiva/RPMS/ftp-0.10-14cl.i386.rpm
Name : ftp Relocations: (not relocateable)
Version : 0.10 Vendor: Conectiva
Release : 14cl Build Date: Qua 13 Jun 2001 11:24:57 BRT
Install date: (not installed) Build Host: mapi2.distro.conectiva
Group : Rede Source RPM: ftp-0.10-14cl.src.rpm
Size : 104478 License: BSD
Summary : Cliente ftp padrão Unix (protocolo de transmissão de arquivo)
Description : Este pacote provê o cliente ftp padrão Unix para a linha de comando. O ftp
é o protocolo padrão de transferência de arquivos na Internet, e é extremamente popular.
/usr/bin/ftp
/usr/bin/pftp
/usr/share/locale/pt_BR/LC_MESSAGES/ftp.mo
/usr/share/man/man1/ftp.1.gz
/usr/share/man/man1/pftp.1.gz
/usr/share/man/pt_BR/man1/ftp.1.gz
/usr/share/man/pt_BR/man1/pftp.1.gz

117
Treinamento Linux – Administração, Redes e Serviços

RPM em pacotes instalados


Assim como aprendemos a efetuar consultas a pacotes que não estavam instalados, também
poderemos efetuar consultas a pacotes instalados.
Para listar por ordem alfabética (letras maiúsculas primeiro) os pacotes que estão instalados e
com pausa para ler no vídeo, use “-qa”:

# rpm -qa | sort | less


ElectricFence-2.2.2-1cl
GConf-1.0.0-ximian.8
GXedit-1.23-4cl
Glide_V2-2.53-3cl
...
...
yp-tools-2.5-2cl
ypbind-3.3-33cl
ypserv-1.3.12-3cl
ytalk-3.1.1-2cl
zip-2.3-3cl
zlib-1.1.3-13cl
zlib-devel-1.1.3-13cl
zsh-3.0.8-1cl

Dependendo do tipo de instalação que foi feita na máquina, a listagem é gigantesca. Por isso que
não foi mostrada toda ela aqui.
Para saber a quantidade de pacotes instalados, use assim:

# rpm -qa | wc -l
1544 -> Esse é o total de pacotes instalados.

Para saber a qual pacote pertence o arquivo, use “-qf”:

# rpm -qf /usr/bin/jpico


joe-2.9.5-2cl

Veja esse exemplo: o usuário gabriel digitou adsl- e pressionaou a tecla TAB duas vezes e ficou
sabendo o nome dos arquivo que começam com “adsl-” e agora ele quer saber onde é que o comando adsl-
connect está em seu sistema. Então ele digita o comando whereis adsl-connect e saberá que está em
/usr/sbin/adsl-connect, depois ele digita o comando rpm -qf /usr/sbin/adsl-connect para saber de qual
pacote veio esse comando e daí ele fica sabendo que veio do pacote rp-pppoe-3.5-26143cl. Acompanhe:

[root@gabriel c11]# adsl-


adsl-connect adsl-setup adsl-start adsl-status adsl-stop

[root@gabriel c11]# whereis adsl-connect


adsl-connect: /usr/sbin/adsl-connect

[root@gabriel c11]# rpm -qf /usr/sbin/adsl-connect


rp-pppoe-3.5-26143cl

Pois é, agora agora com o cdrom on montado ele poderá usar o comando rpm -qlp /mnt/cdrom/
conectiva/RPMS/rp-pppoe-3.5-26143cl.rpm para obter toda a listagem dos arquivos desse pacote e onde é
que els vão parar depois de instalados no sistema. Acompanhe:

[root@gabriel c11]# rpm -qlp /mnt/cdrom/conectiva/RPMS/rp-pppoe-3.5-26143cl.rpm


/etc/ppp/firewall-masq
/etc/ppp/firewall-masq.ipchains
/etc/ppp/firewall-standalone
/etc/ppp/firewall-standalone.ipchains
/etc/ppp/plugins/README
/etc/ppp/pppoe.conf
/etc/rc.d/init.d/adsl-init
/usr/sbin/adsl-connect
/usr/sbin/adsl-setup
/usr/sbin/adsl-start

118
Global Sul Informática

/usr/sbin/adsl-status
/usr/sbin/adsl-stop
/usr/sbin/pppoe
/usr/sbin/pppoe-sniff
/usr/sbin/pppoe-wrapper
/usr/share/doc/rp-pppoe-3.5
/usr/share/doc/rp-pppoe-3.5/CHANGES
/usr/share/doc/rp-pppoe-3.5/HOW-TO-CONNECT
/usr/share/doc/rp-pppoe-3.5/KERNEL-MODE-PPPOE
/usr/share/doc/rp-pppoe-3.5/LICENSE
/usr/share/doc/rp-pppoe-3.5/PROBLEMS
/usr/share/doc/rp-pppoe-3.5/README
/usr/share/doc/rp-pppoe-3.5/SERVPOET
/usr/share/man/man1/pppoe-wrapper.1.gz
/usr/share/man/man5/pppoe.conf.5.gz
/usr/share/man/man8/adsl-connect.8.gz
/usr/share/man/man8/adsl-setup.8.gz
/usr/share/man/man8/adsl-start.8.gz
/usr/share/man/man8/adsl-status.8.gz
/usr/share/man/man8/adsl-stop.8.gz
/usr/share/man/man8/pppoe-sniff.8.gz
/usr/share/man/man8/pppoe.8.gz

Para listar todos os arquivos de um ou mais pacotes que atendam a certos critérios:

# rpm -qa | grep gimp


gimp-1.2.1-ximian.5
gimp-data-extras-1.2.0-2cl
xsane-gimp-0.75-ximian.2
gimp-devel-1.2.1-ximian.5

RPM em desinstalação de pacotes


Desinstalar um pacote formato rpm é muito fácil. A forma geral de um comando de
desinstalação é rpm -e <nome_do_pacote>+, e se o pacote estiver presente, ele será removido. Veja a seguir
alguns parâmetros que poderemos usar. Parâmetros:

--allmatches: Remove todas as versões do pacote que casarem com <pacote>. Normalmente
um erro é exibido se <pacote> casar com múltiplos pacotes.

--noscripts: Não executa os scripts de pré e pós-desinstalação.

--nodeps: Não verifica se dependências serão quebradas antes de desinstalar o pacote.

--test: Não desinstala nada, apenas simula todos os movimentos

Exemplo: Se quisermos desinstalar o xpdf (leitor de arquivos pdf), basta usar o comando rpm -e
xpdf-0.92-1cl e ele não fará mais parte de seu sistema. Se você for remover um pacote qualquer, tome cuidado
porque outro programa que dele depender pode não funcionar corretamente:

# rpm -e kppp-2.12-4cl
erro: a remoção destes pacotes quebraria dependências:
kppp = 2.12 é necessário para kdenetwork-2.12-4cl

# rpm -e Xconfigurator-4.9.23-4cl
erro: a remoção desses pacotes quebraria dependências:
Xconfigurator é necessário para task-x-window-system-6.0-5cl

RPM em instalação e atualização de pacotes


Para instalar pacotes rpm também é muito simples. A forma geral é “–ivh” para a instalação, e
“–Uvh” para atualização de pacotes. Esses parâmetros instalam ou atualizam o pacote atualmente instalado
para a versão do novo pacote rpm. Isso é o mesmo que instalar, exceto que todas as versões anteriores dos
pacotes serão removidas do sistema após a atualização.
Na verdade, a atualização de um pacote não deixa de ser uma instalação, pois arquivos novos
serão copiados para dentro do computador, e arquivos antigos serão eliminados.

119
Treinamento Linux – Administração, Redes e Serviços

Uma vez que o rpm executa um processo de atualização inteligente, é apresentada uma
mensagem do tipo: “saving /etc/teste.conf as /etc/teste.conf.rpmsave” (onde teste é o nome do pacote), o que
significa que os arquivos de configuração existentes estão salvos, porém mudanças no programa podem
tornar esse arquivo de configuração não mais compatível com o pacote (o que não é comum). Neste caso, as
adequações necessárias devem ser feitas pelo usuário. Parâmetros:

--force: O mesmo que usar --replacepkgs, --replacefiles e --oldpackage.


-h, --hash: Exibe 50 caracteres # (hash) à medida que o arquivo é desempacotado. Use em
conjunto com -v para uma exibição interessante.

--percent: Exibe porcentagens à medida que os arquivos são desempacotados. Isso é para
tornar o rpm facilmente executável a partir de outras ferramentas.

--oldpackage: Permite que uma atualização substitua um pacote por uma versão anterior,
mas isso não é muito aconselhável e --replacefiles: Instala os pacotes mesmo que eles
substituam arquivos de outros pacotes já instalados.

--replacepkgs: Instala os pacotes mesmo que alguns deles já estejam instalados no


sistema e --allfiles: Instala ou atualiza todos os arquivos do pacote que estão
faltando, independentemente deles existirem ou não.

--nodeps: Não verifica as dependências antes de instalar ou atualizar um pacote qualquer


e --noscripts: Não executa os scripts de pré ou pós instalação.

--excludedocs: Não instala nenhum arquivo marcado como documentação (o que inclui as
páginas de manual e documentos texinfo).

--test: Não instala o pacote, apenas faz uma verificação e um aviso sobre possíveis
conflitos e --prefix <caminho>: Determina o prefixo de instalação como <caminho> para
pacotes relocalizáveis (pacotes que não precisam ser instalados apenas em um certo
caminho).

Nós podemos instalar nossos pacotes .rpm não somente pelo console do modo texto, podemos
instalar via terminal também. Mas o interssante éo que o konqueror pode fazer, ele permite abri abas de
diretórios/pastas e isso é uma mão na roda. Se você acessa muito uma pasta ou outra sabe do que eu esto
falando. Mas ele também abre uma área para digitação de comandos que realemente ajuda muito quando
precisamos de linha de comando aliada com poder de navegação de pastas/diretórios. Experimete usar.
Exemplo de instalação:

# rpm -ivh /mnt/cdrom/conectiva/RPMS/ee-0.3.12-3cl.i386.rpm


Preparing... ###################################### [100%]
1:ee ###################################### [100%]

Exemplo de instalação cancelada pelo rpm, porque o(s) pacote(s) já estão presentes:

# rpm -ivh /mnt/cdrom/conectiva/RPMS/netscape-*


Preparing... ########################################### [100%]
package netscape-common-4.77-13cl is already installed
package netscape-communicator-4.77-13cl is already installed
package netscape-doc-4.77-13cl is already installed
package netscape-i18n-es-4.77-13cl is already installed
package netscape-i18n-pt_BR-4.77-13cl is already installed
package netscape-java-4.77-13cl is already installed
package netscape-nethelp-4.77-13cl is already installed
package netscape-plugins-4.77-13cl is already installed
package netscape-spell-4.77-13cl is already installed

Se quiser saber onde estão binários desse pacote , basta usar o comando seguinte forma:

# whereis netscape
netscape: /usr/bin/netscape /usr/lib/netscape

Então saberemos que eles estão no /usr/bin e no /usr/lib, porém isso é a coisa mais básica que
devemos saber; aliás sempre que desejarmos saber onde é que um binário foi parar, usaremos o comando
whereis <nome_do_binário>.

120
Global Sul Informática

Nem sempre é possível instalar um pacote, como assim? Algumas vezes, as bibliotecas que estão
instaladas no sistema Linux são mais antigas que as bibliotecas que o pacote usará para poder funcionar
corretamente. Isso acontece no exemplo seguinte:

# rpm -ivh /mnt/cdrom/TechLinux/RPMS/gimp-1.2.1-2tl.i586.rpm


erro: falha nas dependências:
libc.so.6(GLIBC_2.2) é necessário para gimp-1.2.1-2tl

Como não temos a libc.so.6 (GLIBC_2.2), a instalação do gimp-1.2.1-2tl não é feita.

Dependências não resolvidas


Pacotes rpm podem depender da instalação prévia de outros pacotes, o que significa que eles
necessitam daqueles para poderem ser executados adequadamente.
Para corrigir esse erro, será necessário instalar o pacote solicitado. Caso se queira que a
instalação ocorra de qualquer forma, é possível utilizar o parâmetro --nodeps na linha de comando. Porém,
de certo modo, o pacote não funcionará ou o fará de forma incorreta.

RPM em verificação do sistema


A forma geral de um comando de verificação é rpm -V|-y|--verify [opções]. Verificação de um
pacote compara informações sobre os arquivos do pacote instalados e as informações sobre eles, tiradas do
pacote original e armazenadas no banco de dados do rpm. Entre outras coisas, verificar compara o tamanho,
a soma MD5, as permissões, o tipo, o dono e o grupo de cada arquivo. Quaisquer discrepâncias serão
exibidas. As opções de especificação de pacotes são as mesmas que para consulta de pacotes.
Arquivos que não foram instalados do pacote, por exemplo, arquivos de documentações que
foram excluídos usando a opção “--excludedocs”, serão ignorados silenciosamente.
O formato da saída é uma cadeia de 8 (oito) caracteres, um possível “c” denotando um arquivo
de configuração, e então o nome do arquivo. Cada um dos oito caracteres denota o resultado da comparação
de um atributo do arquivo com o valor registrado no banco de dados do RPM. Um simples “.” indica um
teste bem-sucedido. Os seguintes caracteres denotam falha em algum teste:

5 = Soma MD5,
S= Tamanho do arquivo,
L = Vínculo simbólico (link),
T= Mtime,
D = Dispositivo,
U = Usuário,
G = Grupo,
M= Modo (incliu permisões e tipo do arquivo).

RPM instalando pacotes via ftp


O formato rpm inclui um programa de ftp simples para facilitar a instalação e consulta de
pacotes que estão disponíveis na Internet. Arquivos de pacotes para instalação, atualização ou consulta
podem ser especificados como um URL no estilo ftp:

ftp://<usuário>:<senha>@máquina/caminho/para/o/pacote.rpm

Se a parte:senha for omitida, a senha será perguntada (uma vez para cada par
usuário/máquina). Se o usuário e a senha forem omitidos, ftp anônimo será usado. Em todos os casos,
transferência passiva (PASV) será usada. O formato rpm permite que as seguintes opções sejam usadas com
URLs de ftp:
--ftpproxy <máquina>: A máquina <máquina> será usada como servidor proxy para todas as
transferências, permitindo que usuários utilizem o ftp através de firewalls que usem sistemas de proxy. Essa
opção também pode ser especificada em um arquivo de configuração.
--ftpport <porta>: Especifica o número da porta TCP a utilizar para a conexão ftp, em vez da
porta padrão, que é a 21. Essa opção também pode ser especificada em um arquivo de configuração. Por
exemplo, vamos supor que você quer fazer a atualização do seu sistema com o rpm via ftp do servidor da
Unicamp, então proceda assim:

rpm ftp://ftp.unicamp.br/pub/conectiva 9/i386 001 002 003 004


rpm ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates

121
Treinamento Linux – Administração, Redes e Serviços

Se você quiser fazer a mesma coisa usado o apt, apenas coloque essas duas linhas dentro do
arquivo /etc/apt/source.list.

Convertendo um pacote
O rpm2cpio converte pacotes Red Hat ( rpm) para arquivos cpio. Funciona assim rpm2cpio
pacote.rpm onde pacote.rpm é o nome do arquivo em formato rpm que desejamos converter para o formato
trabalhado com o comando cpio. Caso nenhum argumento seja informado, o arquivo rpm será lido da
entrada padrão, por exemplo:

# rpm2cpio rpm-1.1-1.i386.rpm
# rpm2cpio < glint-1.0-1.i386.rpm

Assim, se tudo ocorrer bem, o binário para o cpio será criado sem problemas, e depois é só
trabalhar como o comando cpio normalmente.

Gerenciamento de pacotes com YUM


O utilitário yum é um sistema de gerenciamento de programas completo. O Fedora Core
também inclui duas aplicações gráficas para gerenciamento de programas que usam o yum. O pup
disponibiliza uma interface para atualização de programas e o pirut permite você adicionar ou remover
programas. Os utilitários pirut e yum garantem que você tenha a versão mais recente dos pacotes de
programas. Outros métodos não garantem que os pacotes estejam atualizados. Use o utilitário yum para
modificar os programas de seu sistema em quatro maneiras:

Para instalar um novo programa a partir de um repositório de pacotes


Para instalar novos programas a partir de um arquivo de pacote individual
Para atualizar um programa existente no seu sistema
Para remover programas não-necessários no seu sistema

Para instalar o pacote tsclient, execute o comando:

# yum install tsclient

Para instalar o grupo de pacotes MySQL Database (Banco de Dados MySQL), execute o
comando:

# yum groupinstall "MySQL Database"

Para atualizar o pacote tsclient para a última versão, digite:

yum update tsclient

DICA: Novas Versões de Programas Necessitam de Reinicialização. Se um programa está em uso


quando ele é atualizado, a versão antiga continua ativa até que a aplicação ou serviço seja reiniciado.
Atualizações de kernel entram em atuação quando você reiniciar todo seu sistema. Pacotes de kernel
se mantêm no sistema depois que eles são sobrepostos por versões mais novas. Isso permite que
você inicialize seu sistema com uma versão de kernel mais antiga se um erro acontecer com a versão
atual. Para minimizar a manutenção, o yum automaticamente remove pacotes de kernel obsoletos do
seu sistema, mantendo somente a versão atual e uma versão anterior.

Para atualizar todos os pacotes no grupo de pacotes MySQL Database, execute o comando:

# yum groupupdate "MySQL Database"

122
Global Sul Informática

Para realizar uma atualização completa do sistema, digite este comando:

# yum update

Para remover o pacote tsclient de seu sistema, use o comando:

# yum remove tsclient

Para remover todos os pacotes no grupo de pacotes MySQL Database, execute o comando:

# yum groupremove "MySQL Database"

Para procurar por um pacote específico pelo nome, use a opção list. Para procurar pelo pacote
tsclient, use o comando:

# yum list tsclient

Para fazer de suas buscas mais precisas, especifique pacotes com o nome que incluem outros
atributos, como a versão ou arquitetura de hardware. Para procurar a versão 0.132 da aplicação, use o
comando:

# yum list tsclient-0.132

Para listar todos os pacotes com nomes que comecem com tsc, digite:

# yum list tsc\*

Se você não sabe o nome do pacote, use a opção search ou provides. A opção search verifica o
nome, descrição, sumário e mantenedores listados de todos os pacotes disponíveis para achar aqueles que
conferem. Por exemplo, para procurar todos os pacotes relacionados a Palm Pilots, digite:

# yum search PalmPilot

A função provides verifica tanto os arquivos inclusos no pacote quanto funções que o programa
disponibiliza. Essa opção requer que o yum efetue download e leia mais arquivos de índice que na opção
search. Por exemplo, para procurar por todos os pacotes que incluem arquivos chamados libneon, digite:

# yum provides libneon

Para procurar por todos os pacotes que disponibilizam um serviço de MTA (Mail Transport
Agent - Agente de Transporte de Mensagens), ou incluem arquivos com mta no seu nome:

# yum provides MTA

Se for necessário passar por um proxy com autenticação , há duas formas de se fazer isso:

1 – Editar o arquivo /etc/profile e adicionar e depois exportar as seguintes variáveis de sistema:

http_proxy=http://usuário.senha@servidorProxy:PortaProxy
ftp_proxy=http://usuário.senha@servidorProxy:PortaProxy

2 – Editar o arquivo /etc/yum.conf e adicionar as variáveis assim:

proxy=http://mycache.mydomain.com:3128
proxy_username=yum-user
proxy_password=qwerty

123
Treinamento Linux – Administração, Redes e Serviços

Compilação de programas
A compilação de programas no sistema Linux não é tão difícil quanto parece ser. Mesmo que
você não saiba programar em phyton, perl, C/ C++ ou Java você vai conseguir compilar e rodar seus
programas, sabe porque? Porque quando você baixa os fontes para compilar sempre vem as instruções de
como você deve proceder. Essas instruções geralmente estão no arquivo README ou INSTALL, então é só ler
e seguir os passos.
Qual é a vantagens de se pegar um programa para compilação? Simples, você terá os fontes e
poderá alterá-lo como quiser. Por exemplo, se o programa estiver em inglês você poderá traduzir as
mensagens, menus, helps etc para o português e depois que você compilar, o programa estará no seu idioma.
Se for um jogo, poderá aumentar a velocidade de sua nave, a quantidade de vidas, se for jogo no estilo
Counter Strike, poderá compilar o jogo coma mais balas, bombas, granadas etc. Entendeu agora? Então...
“Certo mano, vamu apagá os cara. Vem comigo, policial na mira. Terrorists wins”, he he.
Onde é que eu vou compilar isso no meu sistema Linux?
Geralmente os programas vão parar em /usr/local/<programa>, então a primeira coisa é copiar
o programa para /usr/local/, e também geralmente eles estão no formato .tar, .tgz, .tar.gz daí é só você antes
de instalar os fontes, executar o comando tar -tzpvf <progama>, assim você vai ficar sabendo onde é que
serão copiados (ainda não instalados) os arquivos do programa e seu respectivo diretório.
Em que lugar vai parar os programas que eu instalar?
Com certeza, pois você está dentro do /usr/local eles vão ficar por ali, e dependendo do
programa que você está instalando, alguns arquivos mudam de local, tipo: /usr/local/bin, /usr/doc/,
/usr/share/man e coisas assim. Outras coisa que você deverá saber é o nome do binário, ou seja, nome do
arquivo executável. Então, preste atenção na hora que você estiver compilando, pois geralmente a compilação
o informará disso. Ah! tenha sempre instalado as bibliotecas atualizadas e o compilador gcc, pois esse tipo de
tarefa no sistema Linux requer no mínimo esses componentes.
Nem sempre os programas que você compilar serão encontrados no menu lá no modo gráfico.
Por quê? Por que o pessoa/programador que fez o programa não sabe qual é o seu gerenciador de janelas:
KDE, Gnome, Window Maker, IceWM, BlackBox etc. Entendeu ?
Então é por isso que você vai precisar ficar atento para saber onde é que foram parar os binários.
Mas alguns programas mais recente já estão criando sua opções de menu, pelo menos nas interfaces gráficas
mais usadas por aí, como KDE e Gnome, e cabe a você criar suas opções no menu de outras interfaces
gráficas. Porém, isso é muito simples, se você não souber, LEIA os manuais ou pergunte ao pessoal das listas
de discussões, caso você seja assinante de alguma.
Como é que eu vou saber que comando devo usar para compilar o programa que acabei de baixar
da Internet? Bom, primeiro você não foi lá de graça, pelo menos deve ter lido as intruções na página de onde
estava baixando, certo?
Tudo bem, você não leu, somente achou interessante o programa e resolveu baixá-lo; gastou
meia hora de download (que rápido!) e não quer voltar lá só para isso. Depois que você usar os comandos tar,
guzip, bunzip, uncompress, pois isso vai depender do tipo o arquivo que você baixou, se pedir uma listagem
dos arquivos, vai ver que geralmente tem (e tem) os arquivos README ou INSTALL tudo em maiúsculas
para que use comando less README ou less INSTALL; e LEIA com atenção como usar o procedimento
correto.
Estude Inglês, porque a grande maioria desses arquivos, 99%, está em Inglês. Geralmente, você
vai encontrar três arquivos:

1. configure ou configure.sh,
2. make e
3. make install;

Se existirem tais arquivos, a seqüência de digitação dos comandos será a seguinte:

./configure: Como esse script executável não está no path, você deve inserir “./” para
que a “configuração” comece.

make: O make cria os objetos e demais arquivos.

make install: E o make install, se tudo deu certo, vai instalar o seu programa. Fique
atento para saber onde vai parar o binários caso não apareça uma mensagem informando.

124
Global Sul Informática

Quando a compilação estiver sendo feita, preste muita ATENÇÃO às mensagens que são exibidas
na tela, pois são elas que poderão ajudá-lo mais tarde. O tempo de compilação vai depender da velocidade do
micro que você tem e da complexidade do programa que você vai usar. Eu já vi compilações acontecerem em
sessenta segundos e outras em quase 40 minutos. É mole?
Alguns programas que você baixa da Internet usam os três passos; outros usam só dois (make e
make install); e outros ainda usam só o make install. E ainda há outros que usam o ./configure e depois já
entram em uma tela que pode ser em modo texto ou modo gráfico. A compilação e instalação dos binários fica
por conta dessa interface.
Mas lembre-se uma compilação depende de um monte de coisas tipo: gcc instalado, gcj (para
java) , IBM-Jre e Sun-jre (para Java), make presente, automake, autoconf e a dica que eu lhe dou é que você
instale todas as feramentas de compilação e também as bibliotecas de desenvolvimento. Mas como é que você
vai saber de tudo isso. Somente usando e “mexendo” com o sistema Linux.
Alguns pacotes de fontes para compilação que você baixa da Internet só aceitam ser compilados
pelo usuário root outros só aceitam ser compilados pelo usuário normal (qualquer usuário) e alguns ainda
precisam que você ajusta as permissões (comando chmod) e usuários e grupos de usuários (comando chown)
para poderem ser compilados. Por isso que antes de saír compilando por aí a fora você deverá fazer uma
leitura do arquivo README ou INSTALL que sempre vem junto com pacotes desse tipo. Lá você encontrará
instruções valiosas e corretas.

DICA: Há também uma nova maneira de instalar programas através de linha de comando. São os
programas com extensão JAR que são arquivos criados pelo ambiente Java e para para instalar esses
programas use o comando java -jar <arquivo.jar>. Lembre-se de seu ambiente de Java deverá estar
configurado em seu sistema. Depois disso é só seguir as instruções do programa em modo texto ou
“X”. A maioria do arquivos fonte que você pegar na Internet está codificado em linguagem C, perl,
phyton e Java, porém a maioria é C ou Java.

125
Treinamento Linux – Administração, Redes e Serviços

Anotações:

126
Global Sul Informática

Gerenciamento de pacotes com Apt/Synaptic


OK! Agora você já passou pelo rpm e até aprendeu a compilar seus programas está na hora de
apresentar uma nova idéia que é o apt1. A idéia do apt é muito interessante pois você deve ter percebindo que
o rpm tem uma deficiência, ele não é muito inteligente embora ajude muito mas não consegue resolver
dependências. Isso é um sério problema até mesmo para usuários mais intimos ao Linux, pois se um
programa não instala e tem problemas de dependência, você por exemplo, deve instalar a biblioteca requerida
para depois instalar o programa em si.
Mas e se a biblioteca também pede dependência? Isso poderá acabar em uma bola de neve sem
tamanho. E isso aborrece o usuário. Então é aí que entra a idéia do apt. Ele vai resolver todos esses problemas
para você, isso muito bom porque ele vai atrás de todas as dependências quebradas e resolve e se for o caso
vai até na Internet e faz o download de todas as partes necessárias para que seja possível instalar o programa.
Só para que você tenha uma idéia é possível atualizar todo o sistema Linux versão Debian 3 para
Debian 4 com poucas linhas de digitação ou cliques de mouse. É ou não é uma idéia legal? O apt possui
resolução automática de dependências entre pacotes, método fácil de instalação de pacotes, facilidade de
operação, permite atualizar facilmente sua distribuição, etc. Ele funciona através de linha de comando mas se
você quiser uma interface mais amigável poderá usar o aptitude que é um Front-end2 para ele ou baixar
alguns outros que agora tem na Internet, é só achar um bom e usar.
Com o apt você pode utilizar tanto com arquivos locais como remotos na instalação ou
atualização, desta jeito nós podemos atualizar toda uma distribuição por ftp ou http e tudo isso dependerá da
nossa paciência e velocidade da conexão. Como eu sou meio impaciente, uso uma conexão de 1 Mbps. Já dá
para brincar um pouco. Vou lhe dar uma idéia legal para que você veja esse “carinha” trabalhando.

:: O Aptitude, front-end modo texto do Apt.

Usando o comando apt


Antes de usarmos o apt, vá até um terminal qualquer digite apt de pressione duas vezes a tecla
TAB para saber os comandos que vamos trabalhar aqui: apt-cache, apt-cdrom, apt-config, apt-get, apt-shell,
aptitude. Quer saber o que cada um faz em seu sistema?
1. apt-cache: É uma ferramenta de baixo nível usada para manipular os arquivos de cache
binários do APT e para buscar informações neles. Seu uso é:

apt-cache [opções] commando


apt-cache [opções] add arquivo1 [arquivo2 ...]
apt-cache [opções] showpkg pacote1 [pacote2 ...]
apt-cache [opções] showsrc pacote1 [pacote2 ...]

2. apt-cdrom: É uma ferramenta para adicionar CD-ROM’s no arquivo source-list do apt. O


ponto de montagem do CD e o dispositivo são lidos do apt.conf e do /etc/fstab.
3. apt-config: É uma ferramenta simples para ler o arquivo de configuração do APT. Seu uso é
apt-config [opções] comando. Onde comandos: shell entra em modo shell e dump mostra a configuração.

127
Treinamento Linux – Administração, Redes e Serviços

4. apt-get: É uma simples interface de linha de comando para obter e instalar pacotes. Os
comandos usados mais frequentemente são update e install. Seu uso é:

apt-get [opções] comando


apt-get [opções] install|remove pacote1 [pacote2 ...]
apt-get [opções] source pacote1 [pacote2 ...]

5. apt-shell: É uma ferramenta que trá uma série do comandos para você usar. É simples digite o
comando apt-shell e depois help para saber o que usar dentro dela. O comando quit sai do apt-shell.

[root@gabriel adilson]# apt-shell


Lendo Listas de Pacotes... 100%
Lendo Listas de Pacotes... Feito
Construindo Árvore de Dependências... 50%
Construindo Árvore de Dependências... Feito Welcome to the APT shell. Type “help” for
more information.
apt>
apt> help
apt 0.5.5cnc4.1 para linux i386 compilado em Mar 22 2003 09:21:07
Main commands:
status - Show the current selections
install - Install new packages
remove - Remove packages
keep - Keep packages
upgrade - Perform a global upgrade
dist-upgrade - Perform a globla distribution upgrade
build-dep - Install build-dependencies for source packages
update - Retrieve new lists of packages
commit - Apply the changes in the system
quit - Leave the APT shell
Auxiliar commands:
show - Show a readable record for the package
showpkg - Show some general information for a single package
list/ls - List packages
search - Search the package list for a regex pattern
depends - Show raw dependency information for a package
whatdepends - Show raw dependency information on a package
check - Verify that there are no broken dependencies
unmet - Show unmet dependencies
clean - Erase downloaded archive files
autoclean - Erase old downloaded archive files
For more information type “help <cmd>” or “<cmd> [-h|—help]”.
quit

E então? Parece muita coisa? Não se preocupe que com o tempo você pega o jeito e quem sabe
nem use o apt-shell. Se você se acostumar com o synaptic.
6. aptitude: Esse você já viu a tela umas páginas atrás, faz tudo o que esses comandos faze só que
em modo interativo.

Adicionando um CD
Com o apt-get, podemos instalar ou atualizar pacotes pelo próprio CD da Conectiva ou pelo ftp.
Para utilizar os apt com os CD´s, é necessário criar um índice que o apt utilizará; para isso, coloque o
primeiro CD do Conectiva Linux e rode o utilitário apt-cdrom, assim apt-cdrom add:

[root@gabriel root]# apt-cdrom add


Using CD-ROM mount point /mnt/cdrom/
Unmounting CD-ROM
Please insert a Disc in the drive and press enter
Mounting CD-ROM
Identifying.. [dd532ceb1e92be0520029709f939fae3-2]
Scanning Disc for index files.. Found 1 package indexes and 0 source indexes.
Found label ‘Conectiva Linux 9 CD1’
This Disc is called:
‘Conectiva Linux 9 CD1’
Reading Indexes... Feito
Writing new source list
Source List entries for this Disc are:

128
Global Sul Informática

rpm cdrom:[Conectiva Linux 9 CD1]/ conectiva 001


Repeat this process for the rest of the CDs in your set.

Aqui nós vimos que o comando apt-cdrom add adicionou uma entrada indexada para o CD-
ROM nº 1 do Conectiva Linux 9.0; assim, fica mais fácil instalar e/ou atualizar pacotes deste CD-ROM. Agora
vamos ver o conteúdo do arquivo /etc/apt/sources.list (traduzido pelo autor):

# Endereço de repositório de pacotes


#
# Esteja certo de usar o repositório para a sua distribuição
#
# Assinatura para O Conectiva tem [cncbr].
# Caso você remova a assinatura uma checagem será feita
#
# Repositório de pacotes official do Conectiva Linux 9
# Caso esteja ocupado tente um “mirro” mais próximo
#
rpm cdrom:[Conectiva Linux 9 CD1]/ conectiva 001
rpm cdrom:[Conectiva Linux 9 RdL CD2]/ conectiva 002
rpm cdrom:[Conectiva Linux 9 RdL CD1]/ conectiva 001
rpm [cncbr] ftp://ftp.conectiva.com/pub/conectiva 9/i386 all
rpm-src [cncbr] ftp://ftp.conectiva.com/pub/conectiva 9/i386 all

# Atualizações devem ter o seu próprio repositório


rpm [cncbr] ftp://atualizacoes.conectiva.com.br 9/i386 updates
rpm-src [cncbr] ftp://atualizacoes.conectiva.com.br 9/i386 updates

# Mirrors Conectiva

# Unicamp.br
#rpm [cncbr] ftp://ftp.unicamp.br/pub/conectiva 9/i386 main extra kde gnome games
#rpm-src [cncbr] ftp://ftp.unicamp.br/pub/conectiva 9/i386 main extra kde gnome games
#rpm [cncbr] ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates
#rpm-src [cncbr] ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates

# NL.linux.org
#rpm [cncbr] ftp://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games
#rpm-src [cncbr] ftp://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games
#rpm [cncbr] ftp://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates
#rpm-src [cncbr] ftp://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates

# NL.linux.org via http — Para usuários da Internet com proxy


#rpm [cncbr] http://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games
#rpm-src [cncbr] http://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games
#rpm [cncbr] http://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates
#rpm-src [cncbr] http://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates

Esse arquivo informa ao apt onde ir buscar atualizações novas de um pacote. Mas para isso você
deverá estar conectado à Internet. Se você adicionar o seu próprio endereço da Internet aqui a um endereço
local, deverá comentar as outras linhas para que elas não sejam processadas.
As opções mais comumente usadas são: add para adicionar um CD, ident para reportar a
identificação de um CD, “–d” que é o ponto de montagem do CD e “–f” que é o modo rápido sem checagem
de pacotes. Então, para gerar um índice dos arquivos RPM do primeiro e assim por diante, lembre-se o
Conectiva Linux 9 são 4 (quatro) CD´s e tem uma versão especial que saiu na RDL – Revista do Linux no. 44
que são 2 (dois) CD´s. Para criar os índices use assim:

# apt-cdrom add -d /mnt/cdrom

Depois quando você quiser instalar use o comando:

# apt-get install <nome_do_pacote>

Resumindo, o comando apt-get é uma interface de linha de comando simples para download e
instalação de pacotes. Os comandos usados com mais freqüência são update e install. A seguir, você tem a
listagem de mais comandos:

129
Treinamento Linux – Administração, Redes e Serviços

update: Atualiza o banco de dados local do apt-get com os arquivos pkglist do servidor.
upgrade: Procura por pacotes desatualizados no sistema e os atualiza automaticamente.
Atualizará todos os pacotes antigos no sistema. Para atualizar um pacote e suas dependências utilize o
comando apt-get install <pacote_a_ser_atualizado>.
install: Instala algum pacote novo, solucionando e carregando automaticamente os pacotes dos
quais o aplicativo a ser instalado depende. Caso o pacote algum-pacote já esteja instalado, ele atualiza pela
versão mais recente. Um pacote é libc6 e não libc6.rpm por exemplo.
remove: Remove o pacote algum-pacote e todos os demais pacotes que dele dependam.
source: Faz o download dos fontes de um pacote (SRPM). Note que é necessário que haja uma
linha com o TIPO rpm-src no arquivo sources.list para que este comando execute.
build-dep: Configura dependências de construção de pacotes fonte.
dist-upgrade: Semelhante ao apt-get upgrade, mas instala todos os pacotes básicos e tenta
atualizar tudo, instalando novos pacotes caso seja necessário. É uma maneira mais fácil de fazer uma
atualização de sua distribuição.
dselect-upgrade: Segue as seleções do dselect.
clean: Remove os arquivos encontrados no diretório cache (/var/cache/apt/archives/),
liberando um pouco de espaço no seu disco de sistema. É uma maneira automática de apagar os arquivos que
já foram instalados e que não são mais necessários.
autoclean: Apaga arquivos antigos obtidos para instalação.
check: Verifica a integridade dos pacotes rpm e do banco usado pelo apt. Execute este comando
quando tiver dúvidas quanto à integridade dos pacotes do seu sistema. É recomendável executá-lo antes de
executar uma atualização de distribuição.
Agora veja quais opções você também poderá usar em conjunto com o comando:

-q: Saída logável, sem indicador de progresso.


-qq: Sem saída, exceto para erros.
-d Baixar apenas, NÃO instala ou desempacota arquivos.
-s: Não-agir. Executar simulação de ordenação.
-y: Assume Sim para todas as perguntas e não pede confirmação.
-f: Tenta continuar se a verificação de integridade falhar.
-m: Tenta continuar se os arquivos estão não localizáveis.
-u: Mostra uma lista de pacotes atualizados também.
-b: Constroi o pacote fonte depois de baixá-lo.

Outras opções são remove e upgrade. O remove irá desinstalar o pacote, e a opção upgrade fará
com que quando estiver configurado para usar por ftp, o mesmo baixará todas as autalizações do sistema.
Com esses comandos, podemos instalar, remover ou atualizar pacotes em nosso sistema sem
precisar procurar dependências para instalação. Uma vez que você solicita ao apt para instalar algum pacote
ou efetuar uma atualização (upgrade ou dist-upgrade), ele fará download dos pacotes necessários para
/var/cache/apt/archives/partial/ e, após verificar seus hashes e tamanhos de MD5, moverá esses pacotes
para /var/cache/apt/archives/.
Você pode assumir que todo arquivo no diretório archives/ foi verificado. Utilize o comando apt-
get clean para excluir os arquivos no diretório archives/ e archives/partial/.
Para verificar se alguma coisa precisa ser feita use o comando:

[root@gabriel adilson]# apt-get -f install


Lendo Listas de Pacotes... Feito
Construindo Árvore de Dependências... Feito
0 pacotes atualizados, 0 novos instalados, 0 removidos e 0 não atualizados.

Caso algum pacote precise ser atualizado/instalado ou então removido você será informado.
Todos os pacotes que você instalou em seu sistema ficarão nos seguintes caminho listados a seguir, nesse
exemplo o Conectiva Linux com 3 (três) Cd´s que veio na Revista PC Master:

/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_pkglist.001
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_release
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_release.001
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_pkglist.002
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_release
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_release.002

130
Global Sul Informática

/var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_pkglist.updates
/var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_release
/var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_release.updates

Instalando novos pacotes


Para instalar pacotes nós usamos o comando apt-get install <nome_do_pacote> para instalar
novos pacotes da distribuição. Podemos instalar mais de um pacote ao mesmo, para isso separamos os nomes
por espaços. Exemplo:

apt-get install telnet telnetd telnet-ssl telnetd-ssl

Se for necessário o apt instalará automaticamente as dependências necessárias para cada pacote.
O também apt mostra o espaço total que será usado no disco e perguntará ao usuário se ele deseja continuar.

Removendo pacotes instalados


Para remover pacotes do sistema nós usamos comando apt-get remove <nome_do_pacote>.
Também podemos remover mais de um pacote ao mesmo tempo separando os nomes dos pacotes com
espaços. O apt-get remove remove completamente o pacote mas mantém os arquivos de configuração, vai que
você volte mais tarde a instalar o pacote novamente, exceto se você adicionar a opção --purge.
Removendo pacotes
Para remover pacotes que você baixo pelo apt use o comando apt-get clean, isso apaga qualquer
arquivo baixado durante uma atualização ou instalação de arquivos com o apt. Os arquivos baixados residem
em /var/cache/apt/archives, para downloads completos e /var/cache/apt/archives/partial que são os
arquivos sendo baixados em modo parcial. A listagem é muito grande, dê uma olhada e veja quantos pacotes
tem por lá.
Este local de armazenamento é especialmente usado para HTTP e FTP para armazenamento de
arquivos durante o download para instalação, primeiramente os arquivos são copiados para depois serem
instalados e configurados. O comando apt-get clean é automaticamente executado caso seja usado o método
de acesso apt do dselect.

Atualizando sua distribuição


Um característica interessante do apt e que agrada muito os usuários é a de atualizar toda uma
distribuição de forma inteligente e segura, ou seja, o apt lê a listagem de pacotes disponíveis no servidor
remoto, verifica quais estão instalados e suas versões, caso a versão do pacote seja mais nova que a já
instalada no sistema, o pacote será imediatamente atualizado de forma automática sem que você preciser
intervir.
Isso poderá ser feito por via FTP, HTTP ou através de uma cópia local dos arquivos no disco
rígido, ou um mirror local. Em nenhuma circunstância os pacotes existentes em seu sistema serão removidos
ou sua configuração apagada durante um upgrade na distribuição. Para fazer isso use os comandos:

apt-get update
apt-get -f dist-upgrade

A primeira linha atualiza a lista de pacotes do seus sistema e a segunda atualiza toda a sua
distribuição. Use –f para que o apt verifique e corrija automaticamente problemas de dependências entre
pacotes.

Procurando por pacotes


Você lembra do comando apt-cache, ele pode ser usado para esta função, pois ele também possui
outras utilidades interessante para a procura e manipulação da lista de pacotes.
Por exemplo, o comando apt-cache search Xconfigurator mostrará todos os pacotes que
possuem a string Xconfigurator na descrição do pacote. Isso realmente é muito útil, pois algumas vezes não
sabemos em qual pacote está um comando qualquer e daí como é que vamos instalar?
Se soubermos pelo menos o nome do comando já está resolvido, mas lembre-se que o apt vai
pesquisar em todos os pacotes em busca da string informada, você vai ter que ler com calma, até encontrar o
que está procurando. Se você souber o nome do arquivo que está procurando poderá usar o comando auto-
apt search <nome_do_arquivo>, assim o apt vai retornar onde ele está e a qual grupo pertence em seu
sistema.

131
Treinamento Linux – Administração, Redes e Serviços

Usando o Synaptic
Bom, agora que você já aprendeu a usar o comando apt e suas variantes, vamos dar uma olhada
no Synaptic que é uma interface gráfica muito bem bolada para o apt. Com o Synaptic o gerenciamento de
pacotes é muito simples e rápido. O Synaptic é simples e tem uma interface bem amigável.
Você poderá ver na figura seguinte a tela do Synaptic e tudo o que você faz é nessa interface,
algumas janelinhas se abre para lhe dar informação outras para que você dê informação mas praticamente
você estará sempre nessa tela. Vamos aprender agora como usá-lo, mas vamos aprender pelo que é mais
óbvio, ok? Na parte de baixo você tem três guias e três botões qua são usados para:

:: O Synaptic, adotado pelo Debian e similares como gerenciador oficial.

Guia informação: Mostra descrição detalhadas sobre o pacote/programa.


Guia Descrição: Nos fornece uma descrição detalhada do que é o pacote, o que ele faz e o que
disponibiliza. O nível de detalhe de cada descrição varia de pacote para pacote.
Guia Dependência:Mostra as dependências do pacote selecionado. Você também pode selecionar
no menu dessa guia a opção de ver somente as dependências do pacote, os pacotes que dependem do pacote
selecionado. Assim, você pode ter uma idéia de quais pacotes dependem de quais e o quão complexo seria
instalar isso tudo manualmente, além de poder avaliar as conseqüências da desinstalação de um pacote.

DICA: Lembre-se, para selecionar um pacote/programa primeiro abra o abra o grupo ao qual o
programa pertence e depois marque um ou mais pacotes/programas que você deseja selecionar. Você
também poderá combinar a tecla SHIFT para pegar vários de uma vez sendo selecionados todos os
pacotes/programas no intervalo entre seu primeiro e último clique inclusive. Também é possível o uso
da tecla CONTROL para seleciona pacotes/programas em diferentes posições.

Botão Manter: Se você marcou um pacote para remover ou atualizar e depois desistiu da ação,
clique em manter para que nada aconteça com o pacote.
Botão Atualizar: Marque um pacote/programa na área de pacotes/programas, clique nesse botão
para que o pacote/programa seja atualizado. Essa atualização poderá ocorrer pelo CD-ROM em seu
computador, por um disco rígido na rede, por mirror na Internet via HTTP ou FTP.
Botão Remover: Quando você marca um pacote/programa na área de pacotes/programas e clica
nesse botão ele será removido do seu sistema, não se preocupe as dependências com a saída desse pacote
serão resolvidas.
E como você pode ver na figura anterior, para selecionarmos nossos pacotes, clica-se no grupo,
por exemplo: Desenvolvimento, Comunicação, X11 etc e dá-se um clique para marcar e depois escolhe-se
entre um dos três botões: Manter, Atualizar ou Remover.
Outra área que também é importante é a área de filtro ou seja, nós poderemos efetuar uma
pesquisa seguindo critérios estabelecidos assim: selecionar todos os pacotes que não estão instalados,
selecionar todos os pacotes que estão instalados ou selecionar um determinado tipo de pacote etc.
E agora nós temos o menu que faz tudo o já falamos até agora e o mais importante também,
quatro botões que fazem o seguinte:

132
Global Sul Informática

Botão Atualizar Lista: Esse botão faz com que o seu arquivo de lista automaticamente
atualizado.
Botão Tudo: Esse botão seleciona automaticamente todos os pacotes existentes no servidor que
tenham versões mais novas que os pacotes que estão instalados no seu sistema.
É a maneira mais simples de estar com o seu sistema sempre atualizado com a última versão dos
aplicativos instalados. Para executar a instalação dos pacotes, utilize o botão Proceder. Mas se a sua conexão
for por acesso discado, você poderá gastar várias horas para atualizar um sistema Linux completo. O bom
mesmo que sua conexão seja do tipo ADSL, @ajato, speedy etc., ou seja, conexões velozes que não nos
aborrece com esperas eternas.
Botão Atualizar Distribuição: Esse botão seleciona automaticamente todos os pacotes que devem
ser instalados/atualizados para atualizar sua distribuição inteira, isso é muito interessante, pois você poderá
passar do Debian 3 para a versão Debian 4 apenas clicando aqui.
A diferença entre este botão e o botão Tudo é que o botão Tudo não atualiza pacotes que, na sua
nova versão, dependam de outros pacotes que você não tem instalado no seu sistema.
Botão Proceder: Como o próprio nome já indica, o botão Proceder tem a finalidade de executar
as ações programadas com os outros botões e também as ações efetuadas diretamente com os pacotes
(Manter, Atualizar e Remover).
Você pode ainda, durante a execução das ações, especificar se deseja apenas fazer o download
dos pacotes ou se quer fazer o download e executar as operações especificadas. A instalação e/ou atualização
de um número grande de aplicativos pode demorar algum tempo.
Aguarde enquanto o Synaptic realiza as operações necessárias aos procedimentos solicitados.
Veja aqui porque o Synaptic é muito interessante, depois que eu marquei alguns pacotes/programas e cliquei
o no botão Proceder, o Synaptic automaticamente abriu uma janela de informações e mostrou-me quais
pacotes seriam atualizados, instados e mantidos. Se por um acaso algum precisasse ser removido, ele também
informaria.
Clique em prosseguir e aí fica bonito de ver, pois o Synaptic apresenta a próxima figura e vai
atrás de tudo e todos os pacotes para satisfazer a seleção feita anteriormente, nenhum pacote escapa. O único
cuidado seu mais tarde quando estiver marcando vários pacotes é que se tiver algum pacote estragado o
Synaptic simplesmente informa que ocorreu um erro e para tudo por ali mesmo e você nao fica sabendo qual
é o pacote. Quando isso acontecer faça como eu, vai marcando aos poucos e uma hora você acha o “elemento
115”.
A pior coisa que poderá acontecer casos seus CD´s não estejam bem cuidados ou se alguma coisa
estranha acontecer, é que depois de horas marcando e desmarcando pacotes para instalação ou remoção
assim que o Synaptic terminar a leitura dos pacotes ele apresenta uma saída de erros (output), como a da
figura seguinte, então tudo o que você fez estará perdido.
O único jeito é ir instalando aos poucos até descobrir qual pacote contém erros. O pior não nem
isso, pois isso aí a gente contorna com umas xícaras de café, chá ou uns copos d´água, o problema é ficar
trocando os CD´s, que são 4 (quatro) no caso de ser a distribuição em caixas e não a da RDL (Revista do
Linux) que veio na revista e são apenas 2 (dois) CD´s. Pode ter certeza que você vai trocar (tira/põe) seus CD
´s um “par de veis”, tenha calma. Então escolha somente o necessário.
Sempre que você fizer suas seleções o botão proceder é o que vai realizar as suas ações, tanto
para remover, atualizar e ou instalar pacotes/programas novos em seu computador.
Depois que o processo de busca for concluído o Synaptic vai realizar todas as alterações
necessárias para dar prosseguimento no início da uma instalação.
Agora é só esperar, se você marcou poucos pacotes/programas para atualiza, remover etc até que
vai rápido. Mas se você estiver fazem uma atualização de toda a sua distribuição, acho melhor você ir tomar
um café porque vai demorar um pouco.
Quando a alteração é para um único pacote as coisas acontecem bem rapidinho. Agora se você
deseja fazer uma atualização completa de seu sistema Linux direto da página da sua distribuição, clique no
menu Configurações do repositório.

133
Treinamento Linux – Administração, Redes e Serviços

Convertendo formatos de pacotes com o Alien


Acho que você já deve ter percebido quantos formatos de arquivos nós temos para fazer
instalações de aplicativos. Somente para lembrar, temos os formatos:

.tar, .tar.Z, .tar.gz, .tar.bz2, .tgz.


.rpm, .deb, .pkg.
.sh (scripts de instalação) etc.

Logo a conclusão: praticamente todo usuário do sistema Linux já se deparou com a situação que,
depois de feito o download, o pacote está em um formato de diferente da usada pela sua distribuição. E agora,
como é que é possível resolver isso?
É aí que entra em campo o utilitário alien. Esse programa não é muito comentado, mas ajuda
muito em algumas situações, como essa explanada há pouco, pois tem como objetivo a conversão entre
diferentes formatos de pacotes. O utilitário alien está disponível em www.kitenet.net/programs/alien. Está
disponível para todas as distribuições. Com isso em geral, basta instalá-lo conforme o método de instalação
de pacotes da sua distribuição.
O utilitário alien pode fazer por você? Converter entre formato RPM (usado em RedHat, SuSE,
Mandrake, Fedora, CentOS e derivados), DEB (usado em Debian e derivados), TGZ (usado em Slackware) e
SLP (usado em Stampede), ou seja, desempacota-o no formato original e reempacota-o no novo formato.
Entendeu a jogada do utilitário alien? Como utilizar o utilitário alien? É simples alien <parâmetro>
<pacote>, onde as principais opções são:

-d, --to-deb = converte para DEB


-r, --to-rpm = covverte para RPM
-t, --to-tgz = converte para TGZ
--to-slp = converte para SLP
-h = ajuda

Por exemplo:

# alien -d foo.bar.rpm --> Converte o RPM foo.bar.rpm para DEB foo.bar.deb


# alien --to-slp foo.bar.tgz --> Converte o TGZ foo.bar.tgz para o SLP foo.bar.slp

O uso do utilitário alien só faz sentido com pacotes binários. O pacote resultante do alien pode
não seguir as regras de colocação de arquivos e diretórios da sua distribuição. Isso é especialmente
importante para quem converte pacotes de uma distribuição que não segue o padrão de outra.
Se vai haver conversão de pacotes de/para DEB/RPM, é necessário ter o dpkg ou o rpm
instalados na sua máquina. Porém, as distribuições que não usam o formato RPM têm sempre disponível o
binário rpm, e isso já ajuda bastante. Acredito que essa informação sobre o utilitário alien possa ajudá-lo.
Mas lembre-se: o utilitário alien não resolve tudo, como o caso de bibliotecas, dependência etc.; a função dele
é converter de um formato de pacote para outro formato.

134
Global Sul Informática

Anotações:

135
Treinamento Linux – Administração, Redes e Serviços

Anotações:

136
Global Sul Informática

Capítulo 8

Configurações básicas
As configurações1 nos dias de hoje no sistema Linux é muito mais amigável que algum tempo
atrás. Na própria instalação do sistema, já é detectado uma boa e grande parte do seu hardware. O sistema
Linux é o segundo sistema operacional no mundo em quantidade de drivers sabia? Se você perceber quase
todas as motherboards (placas mãe) de hoje já trazem em seus CD´s tanto drivers para Windows quanto para
Linux, por que será hein?
No sistema Linux você poderá efetuar suas configurações por três modos diferentes. Você pode
fazer pelo modo braçal que é editando diretamente os arquivos, isso é aconselhável quando você já tem
experiência no Linux e então você vai diretamente onde precisar efetuar sua configuração. Com o tempo você
vai perceber que esse é melhor e mais rápido jeito.
Também poderá fazer pelo configurador no modo texto usando pequenos utilitários como o
kbdconfig, mouseconfig, XConfigurator, sndconfig etc e no modo gráfico também encontrará seus
equivalentes embora você possa chamá-los de dentro de um terminal.
Mas em alguns casos você demora mais para achar um modulo de configuração do que quando
sabemos diretamente o nome dele. A configuração abordada aqui é para o Linux Red Hat e similares porém
vamos aprender o modo básico pois esse modo tem praticamente em todas as distribuições, podendo, claro
apresentar algumas variações, mas se você entender a idéia desse capítulo todas demais configurações serão
fáceis de serem entendidas. Sabemos que as configurações são automáticas no Linux na hora da instalação,
mas é sempre bom saber como as coisas funcionam.
Nós podemos fazer também a configuração diretamente pelos arquivos de configuração ou pelo
utilitário específico. Por exemplo, se é para configurar o teclado é mais fácil ou editar os arquivos necessários
ou executar o kbdconfig e pronto, não é necessário carregar todo os módulos de configuração. Mas para
teclado, mouse, vídeo e cartão de vídeo temos o xf86cfg. Caso você não se acostume em usar esse
configurador para fezer suas configurações veja se você tem o kxf86config que faz a mesma coisa mas jé tem
“cara” de KDE e também é muito simples de ser usado.

Configurando datas e horários


Para configurarmos a data e a hora no sistema Linux poderemos usar o comando date e depois o
comando clock -w para que nossas configurações seja efetivadas. O comando sem parâmetros mostra o
estado atual do sistema:

[root@gabriel root]# date


Seg Set 8 10:00:40 BRT 2003

De acordo com a informação são 10:00 do dia oito de setembro é um domingo. Porém veja o que
aconteceu aqui

[root@gabriel root]# date 10081300


Qua Out 8 13:00:00 BRT 2003

Para mudar a data e a hora você deverá digitar na seqüência certa, senão sua data poderá ser
alterada de um jeito que você não espera. Para alterar a data para o mesmo dia para as 13:00 da tarde:

[root@gabriel root]# date 09071300


Dom Set 7 13:00:00 BRT 2003
[root@gabriel root]# clock -w

137
Treinamento Linux – Administração, Redes e Serviços

OK! Agora sim, seu sistema está configurado a contento. Mas não é só isso, o comando
timeconfig que carrega uma interface simples para configurar os parâmetros de horário do sistema e fornece
um método simples para configuração dos arquivos /etc/sysconfig/clock e /etc/localtime que são
compatíveis com scripts de inicialização Red Hat e outras distribuições semelhantes e com o utilitário
timeconfig.
Se um fuso horário for especificado, o fuso horário do sistema será mudado para o fuso
horário especificado. De outra forma, um menu com os fusos horários disponíveis é mostrado.
Se --utc for informado, assume-se que o relógio do sistema está em formato universal
(Greenwich). Se --arc for usado, assume-se que o relógio do sistema é armazenado no formato usado pela
plataforma ARC em plataformas Alpha da Digital (a opção --arc somente está disponível em máquinas
Alpha). Se --test for especificado, o timeconfig poderá ser executado por usuários não root e nenhuma
mudança será escrita.
Os arquivos envolvidos pelo comando timeconfig são o /etc/sysconfig/clock que configura o
formato usado pelo relógio de hardware e o /etc/localtime que é um link simbólico apontando para o fuso
horário default.
A seguir o conteúdo do /etc/sysconfig/clock:

# cat /etc/sysconfig/clock
America/Sao_Paulo"
UTC=false
ARC=false

Outro comando que é usado é o setclock, o qual ajusta o relógio de hardware a partir do relógio
do sistema corrente armazenado no relógio do sistema. O arquivo /etc/sysconfig/clock é lido para
descobrir para que formato o horário deve ser convertido antes do armazenamento.
Para usá-lo é muito simples basta digitar setclock. Há um outro pequeno utilitário presente na
maioria das distribuições, que é o timetool, que também faz o acerto da hora e da data no sistema Linux. No
ambiente KDE, caso precisar corrigir a data e a hora, o processo é idêntico ao ambiente Windows, apenas
pressione o botão direito do mouse sobre a hora no relógio da barra de tarefas e peça para ajustar a data e a
hora.
Caso você tenha alterado a data e a hora do sistema com o comando date pela console ou
terminal, não esqueça de usar o comando clock -w para que suas alterações possam ter efeito. Isso também
poderá ser feito pelo KDE, para isso basta clicar na barra de tarefas para que você possa alterar rapidamente
data e a hora.
Quer ver algo interessante? O horário de todos os países do mundo?Para isso basta usar uma
variável de ambiente chamada TZ, que vai mostrar a Time Zone de um determinado paíz. POr exemplo para
ver o horário de São Paulo, podemos simplesmente digitar:

TZ=America/Sao_Paulo date
Sex Nov 7 20:47:20 BRST 2003

Viu que interessante? Veja mais alguns exemplos:

TZ=Europe/Berlin date
Sex Nov 7 23:48:01 CET 2003

TZ=Europe/Moscow date
Sáb Nov 8 01:48:12 MSK 2003

TZ=Europe/Zurich date
Sex Nov 7 23:48:25 CET 2003

Os países que podem usar essa variável para ver as datas estão no local /usr/share/zoneinfo/.

138
Global Sul Informática

Configurando o teclado
A configuração do teclado dá-se pelo comando kbdconfig invocado pela linha de comando ou
também de dentro de um terminal ou pelo comando xf86cfg. O comando kbdconfig é o responsável pela
carga do mapa do seu teclado, por exemplo “br-abnt2” é o mapa para o usuário que tem o teclado padrão
ABNT2 com o “Ç”, o que hoje é muito comum.
A seguir, você poderá saber onde é que ficam os arquivos de mapas de teclado padrão ABNT-2
em seu sistema Linux, mas tome cuidado, pois a localização poderá ser um pouco diferente, conforme a
distribuição que você estiver usando.

/usr/lib/kbd/keymaps/i386/qwerty/br-abnt.kmap.gz
/usr/lib/kbd/keymaps/i386/qwerty/br-abnt2.kmap.gz
/etc/X11/xinit/xmodmaps/Xmodmap.abnt
/etc/X11/xinit/xmodmaps/Xmodmap.abnt2

As duas primeiras linhas são arquivos de mapas de teclado para o modo texto e as duas últimas
são para o modo gráfico. Mas atenção: se você tem acentuação em modo texto não quer dizer que você terá
acentuação em modo gráfico.
Se você tem acentuação em modo texto, mas não a tem em modo gráfico, e seu teclado é padrão
ABNT-2, é super simples de resolver, assim você terá acentuação em modo texto e em modo gráfico sem
nenhum problema. Para isso use o comando:

xmodmap /etc/X11/xinit/xmodmaps/Xmodmap.abnt2

Você escolhe o layout do seu teclado e ela grava essas informações para você. Para saber qual é o
mapa de teclado que está sendo usado pelo seu sistema Linux no atual momento, use o comando cat
/etc/sysconfig/keyboard, você vai ter como resultado:

KEYTABLE="br-abnt2"

O resultado mostra que o mapa é br-abnt2. A entrada de algumas combinações de teclado para
alguns programas de edição em modo texto ficam guardadas no arquivo /etc/inputrc ou geralmente no
/home do usuário. Se quiser, você poderá ver o conteúdo desse arquivo com cat /etc/inputrc:

# Allow 8 bits
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
...
$if Bash
# To edit PATH: "ctrl-x p"
"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
$endif

Aqui nós podemos perceber que há configurações para o bash, vi e emacs e descobrimos um
segredo bem interessante, que é a combinação CONTROL+X P. Isso permite que você edite rapidamente o
seu PATH para execução de programas.
Mudando a velocidade do teclado
É possível mudar a velocidade de seu teclado através do comando kbdrate. O comando sem
argumento retornará a estado atual de velocidade do teclado, por exemplo kbdrate. Velocidade do teclado
definida como 10,9 cps (intervalo = 250 ms). Os parâmetros do comando são:
-r: Altera a taxa de repetição cps (caracteres por segundo) do teclado que varia de 2.0 a 30.0
cps (caracteres por segundo).
-d: Altera o tempo em milissegundo para repetição de um determinado caractere que varia entre
250 a 1000 ms.
Um exemplo de configuração seria kbdrate -r 30 -d 250. Assim, seu teclado seria configurado
para ter uma taxa de repetição de 30 caracteres para um tempo de 250 ms. Se for preciso verificar o relatório
de como está configurado o teclado no atual momento, use o comando kbd_mode, assim:

139
Treinamento Linux – Administração, Redes e Serviços

kbd_mode
The keyboard is in the default (ASCII) mode

Ficamos sabendo que o nosso teclado está configurado para o modo ASCII. Outros parâmetros
do comando são os seguintes:

–s: scancode mode (RAW), –k: keycode mode (MEDIUMRAW).


–a: ASCII mode (XLATE), –u: UTF-8 mode (UNICODE).

Configurando o mouse
Para configurarmos nosso mouse no sistema Linux também é muito fácil: basta chamar o
comando mouseconfig ou pelo comando xf86cfg via console ou até mesmo de dentro de um terminal. Mas em
alguns casos será preciso reiniciar o modo gráfico com CONTROL+ALT+BACKSPACE para que a mudança
seja válida, pois o mouse poderá comportar-se de maneira estranha.
O mouseconfig ajusta os arquivos de configuração necessários e os links para uso do mouse em
um sistema Red Hat. Existem dois modos de operação: interativo e kickstart. Em modo interativo, o usuário é
perguntado sobre o tipo de mouse que está conectado ao sistema. Algumas dessas informações podem ser
automaticamente detectadas e preenchidas.
Se --expert for especificado, o usuário terá a oportunidade de substituir quaisquer valores
detectados. Em modo kickstart, o Xconfigurator tentará detectar automaticamente todas as informações
necessárias, não interativamente. Mouses em portas tipo PS/2 serão encontrados automaticamente. Mouses
seriais serão geralmente detectados, mas o tipo do mouse serial normalmente não poderá ser determinado.
O usuário pode usar a opção <tipo mouse> para forçar o mouseconfig a usar um tipo particular
de mouse. A execução de mouseconfig --help relacionará todos os tipos válidos de mouses. O daemon
(processo) que controla o mouse é o gpm, então em alguns casos precisamos “matar” o gpm; ou seja, derrubar
e levantar o processo do mouse com o comando:

# /etc/rc.d/init.d/gpm restart
Interrompendo os serviços gpm: gpm
Iniciando os serviços gpm: [ OK ]

Desse modo, se tivermos problemas com o mouse, nós paramos o seu processo e depois o
‘levantamos’ novamente. Isso você deverá fazer somente se for preciso. O comando mouseconfig, como
podemos ver a seguir, permite que seja escolhido o modelo do mouse e se também desejamos emular ou não
três botões:
Um dos arquivos que guarda as configurações do mouse é o seguinte cat /etc/sysconfig/mouse:

MOUSETYPE="Microsoft"
XMOUSETYPE="Microsoft"
FULLNAME="Generic Mouse (serial)"
XEMU3=yes

Vale lembrar que o link simbólico /dev/mouse é apontado para o dispositivo do mouse que
geralmente está na COM1, que no sistema Linux é /dev/cua0 ou /dev/ttyS0. Se o tipo do mouse for alterado
usando o mouseconfig, o utilitário Xconfigurator deve ser executado novamente para traduzir as mudanças
para a configuração do X11 (modo gráfico).

Configurando a placa de som


Algum tempo atrás, configurar a placa de som no Linux era um certo probleminha, pois algumas
vezes a irq não batia, a DMA não dava certo e ainda poderia não haver o driver daquele placa disponível.
Porém, hoje a configuração de placas de som no sistema Linux é muito fácil, pois ele conta com quase todos
os drivers de placas de som disponíveis no mercado e as placas que trazem o som on-board, para a grande
maioria delas, o Linux já tem os drivers ou o fabricante inclui junto ao CD da placa.
A configuração do som dá-se pelo comando sndconfig, que é um utilitário que pode configurar
programas de controle de dispositivos de som. Há poucas coisas que são necessárias saber sobre sndconfig,
use seja, ele tem suporte Plug and Play sendo capaz de configurar placas de som Plug and Play como de 16 e
32 bits. Se você usar o servidor de som ALSA, use o alsaconfig.
As informações de configuração estão armazenadas no arquivo /etc/isapnp.conf, em conjunto
com as informações de configuração para qualquer outro dispositivo Plug and Play. Para garantir que a

140
Global Sul Informática

configuração não seja perdida, o sndconfig salva o arquivo original /etc/isapnp.conf como
/etc/isapnp.conf.bak.

Configurando o modem
Podemos configurar o modem no sistema Linux por diversos modos: via linha de comando, via
edição dos arquivos de configuração, via utilitários modo texto e modo gráfico. Para configurar via utilitários
em modo texto verifique se sua distribuição tem os comando: modemtool ou modemconf e pelo modo gráfico
podemos usar ou kppp.
Nesse procedimento apenas criaremos um link simbólico da porta serial do modem para o
arquivo de dispositivo /dev/modem. Assim, ao configurar o seu programa de discagem como por exemplo o
Kppp você poderá indicar simplesmente que o modem se encontra em /dev/modem.
Mas antes nós devemos verificar se existe um link simbólico que aponta para a porta correta de
comunicação que em Linux está de acordo com a tabela seguinte:

MS-DOS
LINUX DESCRIÇÃO
WINDOWS
COM 1 /dev/cua0 ou /dev/ttyS0 Porta de comunicação 1.

COM 2 /dev/cua1 ou /dev/ttyS1 Porta de comunicação 2.

COM 3 /dev/cua2 ou /dev/ttyS2 Porta de comunicação 3.

COM 4 /dev/cua3 ou /dev/ttyS3 Porta de comunicação 4.

Caso o seu modem esteja conectado na COM2, por exemplo, o comando para criação do
/dev/modem use o comando:

# ln -sf /dev/ttyS1 /dev/modem

E para que isso funcione a partir de todas as inicializações, por exemplo se o modem estiver na
ttyS2 ou ttyS3 você deve adicionar uma linha como esta em seu /etc/rc.d/rc.local:

# setserial /dev/modem irq 7

Isso deverá ser de acordo com a IRQ utilizada pelo seu modem. As IRQ´s dos modens que são
on-board tem IRQ´s mais altas, mas a grande maioria não funciona no ambiente Linux por serem
Winmodens, ou seja, são modens feitos para funcionar apenas no ambiente Windows. Infelizmente ainda
não existe suporte total e completo a modems PCI no Linux, somente a alguns modelos específicos, que não
são modems do tipo winmodem, incompatíveis com o Linux.
Para saber se o seu Winmodem foi reconhecido pelo sistema Linux nada melhor que usar o
comando dmesg | less e procurar pelas seguintes ocorrências:

PCTEL modem device (61) 13f6:0211 found: irq = 11, base = 0xdc00
Serial PCTEL driver version 4.27.212 (CM8738) (2001-05-03) with HUB-6 MANY_PORTS
MULTIPORT SHARE_IRQ ISAPNP enabled
ttyS15 at 0xdc00 (irq = 11) is a 16C950/954
assign pctel_interrupt
Trying to free free IRQ11
Trying to open $MFT!
Trying to _clear_inode of $MFT!

Essas informações nos mostram que o modem é um PCTEL (CM8738) on-board e usa a IRQ 11,
mas tem como referência a ttyS15, isso quer dizer que esse tipo de Winmodem é fácil de ser configurado. Para
isso, você poderá usar o kppp, minicom ou alguns outro utilitário de sua preferência.

141
Treinamento Linux – Administração, Redes e Serviços

Usando o KPP para conectar à Internet


Se você não se entender muito bem o minicom, então use o kppp que é muito parecido com o
dial-up do Windows. Ele é fácil e simples de ser configurado, a única observação é que o seu modem seja
reconhecido pelo sistema Linux. Para configurar um acesso discado à Internet vamos usar um passo a passo
visual bem simples de ser acompanhado:
Passo 1: Executando o kppp temos as seguintes opções iniciais:
Conectar a: É o nome descritivo do seu provedor de acesso. ID de Login: É o nome de conexão
do usuário. Senha: É a senha de acesso do usuário. Mostrar Janela de Relatório: Mostra janela com
informações sobre a conexão.
O botão Configurar permite entrar no modo de configuração e o botão Conectar, depois de feitas
as devidas configurações, faz a conexão para depois você usar o Netscape, Mozilla, Konqueror ou outro
navegador e navegar à vontade.
Passo 2: Configuração de contas e dispositivos:
Nesse procedimento nós poderemos editar uma configuração existente, criar uma nova conta de
acesso, copiar uma conte de acesso ou remover uma conta que não será mais usada. Para criar uma conta
nova clique em no botão Nova.
Agora, na aba Ligar, você deverá adicionar o nome que identifica a sua conexão com seu
provedor e depois um número telefônico e qual o tipo de autenticação usada por ele. Na aba IP, caso você usa
um IP fixo passe-o aqui ou deixe como IP Dinâmico como é a mais comum em acesso discado.
Aqui na aba Gateway você deverá informar se é um gateway padrão (de você para seu provedor)
ou se é um gateway estático (de você para um gateway de sua rede interna) e na aba DNS você deverá
informar ou o seu DNS interno de rede caso tenha um ou informe o DNS do provedor, e em ambos os casos
você deverá cadastar um ou mais DNS aqui.
Na aba Dispositivo geralmente configuramos onde é que esta redirecionamo o mouse e com qual
velocidade vamos trabalhar.
Passo 3: Configuração do modem, gráficos e outras informações:
Nesse procedimento, caso seja necessário passar algum parâmetro especial para o seu modem,
na aba Modem clique no botão Comandos do Modem. Clique em Comandos do Modem e na janela que segue,
em String de Discagem, digite ATDP caso sua linha seja PULSO, ou ATDT caso sua linha seja TOM; clique em
OK para finalizar.
Para verificar se a configuração do modem está correta, clique em Perguntar ao Modem. Surgirá
então uma janela com as configurações do modem. Clique em OK.
Na aba gráficos você apenas vai configurar algumas cores como fundo de tela cor de caracter,
bytes recebidos e bytes enviados. E na aba Outros você tem algumas opções que lhe ajudará com sua conexão.
Prontinho, agora de OK e quando aparecer a figura do passo 1 clique em conectar e se funcionar
use qualquer navegador de sua preferência mas lembre-se que o netscape, o mozila e alguns outros você
ainda vai ter que configura nas “preferências” dele o gateway, proxy e DNS, mas é só isso informe esses
valores e pode ir “dormir as 04:00 da manhã”.

Serviço básico de ADSL


Para configurar um acesso básico de ADSL no Linux é muito simples se é isso que você quer
fazer, ou seja, configurar as informações que seu provedor lhe forneceu e se conectar a Internet de banda
larga. Porém lembre-se que você precisrá de duas placas de rede, uma normal que você usará para se conectar
à rede interna e outra como você já deve saber será usada para acesso via LAN com ADSL ao seu provedor.
Você precisará do pacote rp-pppoe e caso você não o tenha, você poderá baixar de
www.roaringpenguin.com. Acompanhe os passos nessecários para configurar ADSL no sistema Linux:
Execute o comando /usr/sbin/adsl-setup para cadastrar todas as informações necessárias do
provedor, lembrando que o nome de usuario para conexões ADSL sempre será
nome_usuario@provedor.com.br. As perguntas devem se respondidas de acordo com suas informações. Veja
Exemplo de como fazer:

username: nome_do_usuário
ethernet interface: eth1 > Placa de rede que será usada.
demand value: no
Dns 1: dns_primário > Verificar com seu provedor.
Dns 2: dns_secundário > Verificar com seu provedor.
Password: ****** > Digite sua senha.

142
Global Sul Informática

Com relação ao firewall, por enquanto configure-o, o nível e agora vamos ao passo mágico que é
efetuar a conexão como comando /usr/sbin/adsl-start se deu certo aparecerá a mensagem “...Connected!” e
para desconectar use o comando /usr/sbin/adsl-stop. Caso queira ver o status de sua conexão use o comando
/usr/sbin/adsl-status.
Viu só que coisa maravilhosa e simples né? Lembre-se de que a parte de rede já deverá estar
configurada pois aqui é como se fosse um segundo passo de de configuração da rede. Agora use o Netscape ou
outro navegador de sua preferência para se conectar ao mundo.

Configurando a impressora
A impressora é um dos periféricos mais importantes de qualquer usuário, experimente ficar sem
ela pelo menos um dia e você vai descobrir quanta coisa você precisa imprimir, engraçado né? Bom, vamos
aprender a configurar nossa impressora no sistema Linux.
O sistema Linux tem vários utilitários para configuração de impressão, o linuxconf tem um
módulo de configuração de impressão, há um utilitário chamado printtool, o gnome tem uma ferramenta
para gerenciar impressão e o KDE também tem a ferramente dele. Mas o que usar então? Na verdade o que
você precisa saber é qual servidor usar, pois o sistema Linux irá atuar como servidor de impressão mesmo
que sua máquina não esteja em rede. O Linux servirá a impressão para o 127.0.0.1 que é o localhost, ou seja
você mesmo.
Já apareceram vários utilitário s “servidores” de impressão, mas o que está se consolidando é o
CUPS – Commom Unix Printing System, ou seja é o sistema de impressão padrão Unix, pois com ele nós
poderemos fazer os mais diversos tipos de configuração de impressora, seja ela local, remota, rede, Internet,
samba, netware, Windows etc.
No sistema Linux a porta da impressora é semelhante a porta do MS-DOS/Windows, ou seja, a
porta de impressora é definida como lp0, lp1, lp2 e é um arquivo que aponta para um dispositivo e por isso
fica no diretório /dev, e corresponde a LPT1, LPT2 e LPT3 no MS-DOS/Windows.
Lá no capítulo 1 você aprendeu que o modo mais usado de redirecionamento é quando vamos
criar um log do resultado da saída de um programa ou quando vamos imprimir um arquivo via linha de
comando. Acompanhe alguns exemplos:

cat arquivo1.txt > /dev/lp0


cat < arquivo1.doc > /dev/lp0
cat arquivo1.txt | tee /dev/lp0
dmesg | lpr

Esses comandos imprimem via linha de comando diretamente na impressora, porém ela deverá
estar configurada para isso, lembre-se e é isso que vamos aprender agora. Podemos também imprimir
diretamente na impressora usando spool o qual tem o objetivo de liberar os programas do serviço de
impressão. Para isso todo sistema Linux tem um processo (daemon) de impressão que normalmente é o
comando lpr ou o lprng (recomendado).
Veja um exemplo simples de uso de spool de impressão:

cat manual.txt | lpr


cat < apostila.txt | lpr
cat -n curso_linux.txt | lpr

O procedimento de imprimir via comando cat algumas vezes não nos dá o resultado esperado,
pois é limitado em muitos aspectos e também muitas vezes os usuários não têm permissões de escrita nesses
dispositivos. Então é aqui que entra uma outra ferramenta ao nosso serviço, o tal do comando lpr. Para usar
esse comando, o sistema de impressoras já deve estar adequadamente configurado. Para imprimir use:

# lpr <nome_do_arquivo>

O comando lpr mandará o arquivo para uma fila de impressão, onde aguardará a sua vez de ser
impresso. O comando lpr aceita diversos parâmetros que permitem especificar preferências, como o número
de cópias para imprimir, qual impressora deve ser usada (no caso de haver várias impressoras disponíveis) ou
mesmo os filtros a serem utilizados.

143
Treinamento Linux – Administração, Redes e Serviços

Ele também aceita dados pela entrada padrão, simplificando o uso de filtros e outros utilitários
para mudar o aspecto da impressão:

cat <nome_do_arquivo> | lpr


pr -2 -h CURSO DE LINUX -l60 nome_do_arquivo | lpr

Nesse último exemplo usou-se o comando pr para imprimir o arquivo escolhido em duas
colunas, com o título CURSO DE LINUX e com 60 linhas por página. Uma outra ferramenta que pode atuar
como filtro é o gs (ghostscript), que recebe como entrada um arquivo postscript e produz como saída
caracteres interpretáveis por uma impressora não-postscript.
A fila de impressão pode ser controlada com os comandos lpq, que mostra os trabalhos de
impressão atuais e o lprm, que remove um trabalho de impressão caso você não o queira mais e ainda está em
tempo de removê-lo. Temos também um pequeno utilitário que é o lpc e serve para gerenciar a fila de
impressão. Todos esse comandos que você viu são comando do modo texto mas que funcionam dentro de um
terminal no modo gráfico.
O Gerência de Impressão cuida da fila de impressão e os trabalhos que nela se encontram; pode-
se usar as ferramentas que vem com o programa lpr. Para que você possa fazer a gerência de impressão,
existem alguns comandos em modo texto que são:

1. lp: Manda requisições para serviços de impressão LPRng.


2. lpc: Programa de controle da impressora.
3. lpd: É o processo (daemon) que controla a impressora.
4. lpq: Programa que examina os spool de impressão.
5. lpr: Serve para mandar os arquivos para a impressora.
6. lprm: Remove trabalhos que estão na fila de impressão.
7. lpstat: Mostra informações sobre o estado de impressões a partir do spool.

Veja o exemplo para mostrar documentos na fila de impressão:

[root@gabriel root]# lpstat


HP656C-2 root 139264 Ter 21 Out 2003 23:06:56 BRT
HP656C-3 root 23552 Ter 21 Out 2003 23:12:49 BRT

Veja o exemplo para mostrar impressoras que estão no sistema:

[root@gabriel root]# lpstat -v


device for HP656C: ipp://hostname:631/ipp/
device for HP656c2: usb:/dev/usb/lp0

8. lpstyl: Controla o formato da impressão, qualidade, formato, margens etc.


Ferramenta lpq : O comando lpq é usado para examinar a fila de impressão. Quando executado,
ele produz a seguinte saída: “no entries”, se a fila de impressão estiver vazia, ou:

lp is ready an printing
Rank Owner Job Files Total Size
1st bob 11 readme.txt 8556 bytes

Desta forma, é possível ver em que posição da fila está o arquivo de cada usuário. No caso de
haver várias impressoras disponíveis, pode-se visualizar o estado da fila de impressão de uma determinada
impressora, passando para o comando lpq um parâmetro auxiliar informando o nome da impressora que se
deseja visualizar:

lpq -Pnome_da_impressora 2. lprm

O comando lprm é usado para eliminar entradas na fila de impressão. Sua sintaxe é simples
lprm [-Pimpressora] [-] [arquivo #...] [usuario...]
O parâmetro -P serve para especificar a impressora sobre a qual se quer atuar; o parâmetro “–”
elimina todos os arquivos que estão na fila de impressão e que sejam do usuário que executa o comando. Se
quem for executar o comando lprm é o usuário root, a fila de impressão esvazia-se; a opção ‘arquivo’ é
utilizada para remover individualmente um dos arquivos presentes na fila de impressão.

144
Global Sul Informática

O número do arquivo (na fila de impressão) é obtido a partir do comando lpq (no indicador de
coluna job); por último, o parâmetro “usuário” é de utilidade apenas para o usuário root.
Através dele todos os arquivos específicos de um usuário podem ser removidos da fila de
impressão. Ferramenta lpc : O comando lpc tem o seu uso do controle do sistema de impressão. Para cada
uma das impressoras é possível:

a) Habilitar ou desabilitar uma impressora.


b) Habilitar ou desabilitar uma fila de impressão.
c) Alterar a ordem de impressão dos arquivos que estejam numa fila.
d) Visualizar o estado de cada impressora e de sua respectiva fila de impressão.

Por exemplo, o comando lpc status produziria a seguinte saída:

lpc status
lp:
queuing is enable
printing is enable
2 entries in spool area
lp is ready an printing

O arquivo que cuida da configuração das impressoras é o /etc/printcap e é parecido com a


seguinte listagem:

##PRINTTOOL3## LOCAL st800 360x360 a4 {} EpsonStylus800 Default 1


EPSON-ST-800:\
:if=/var/spool/lpd/lp/filter:\
:lp=/dev/lp0:\
:mx#0:\
:sd=/var/spool/lpd/lp:\
:sh:

##PRINTTOOL3## SMB st800 360x360 a4 {} EpsonStylus800 Default 1


EPSON-ST-650:\
:if=/var/spool/lpd/lp/filter:\
:lp=/dev/null:\
:mx#0:\
:sd=/var/spool/lpd/lp:\
:sh:

No exemplo acima podemos perceber que existem duas impressoras no sistema Linux. A
EPSON-ST-800 é uma impressora local e a EPSON-ST-650 é uma impressora SMB; isso significa que é
possível imprimir a partir de uma estação Windows em uma máquina Linux sem nenhum problema.
A seguir veja alguns dos parâmetros desse arquivo:

sd: Define o diretório de spool


mx: Define o tamanho máximo do arquivo (zero = ilimitado).
sh: Suprime impressão de cabeçalho de página.
lp: Nome do dispositivo de saída.
if: Define filtro usado na impressão dos arquivos.

Filtros de impressão
Alguns programas no sistema Linux oferecem filtros de impressão para melhorar mais a
qualidade das impressões. Esses programas permitem ao usuário liberdade de trabalho e flexibilidade no
tratamento de diversos tipos de arquivos e os mais populares estão listados a seguir:
Mpage
Já o mpage pode ser muito útil. Ele permite imprimir várias páginas por folha, reduzindo
consideravelmente o tamanho das listagens. Pode ser configurado para pôr molduras ou limites de texto e
certas informações como dono do arquivo, a data ou título nos limites da folha.
Com o mpage é possível criar um gerenciador de impressão no seu micro, criando um script
simples pois ele captura uma entrada em arquivo texto ou em arquivo postscript e gera um outro postscript
com duas, quatro ou oito páginas, agrupadas na mesma página isso é muito interessante quando você quer
apenas um “rascunho” de seus trabalhos, com eu faço na Universidade para não gastar papel à toa. Para criar

145
Treinamento Linux – Administração, Redes e Serviços

um script é muito simples, nada que um pouco mais de conhecimento não resolva. Veja como criar um script
chamado “mostra4” que tem o objetivo de imprimir em uma folha A4, quatro páginas do arquivo teste4.ps
(arquivo postscript). Acompanhe:

#!/bin/bash
mpage -4 -b A4 -a $1 > /tmp/teste4.ps
gv /tmp/teste4.ps

Foi usado o interpretador de comandos bash e na segunda linha o comando mpage imprime
quatro páginas em papel A4 recebendo o nome do arquivo em “$1” e usa o diretório temporário /tmp.
Podemos imprimir duas, quatro ou até oito páginas de um arquivo por página A4.
Gimp-print: É um recurso (plug-in) agregado ao Gimp presente nas mais recentes distribuições
Linux, que oferece extrema qualidade de impressão. Como ele, o gerenciamento de cores e de tinta ficou
muito mais fácil e em alguns casos a impressão é mais rápida do que a mesma impressora em ambiente
Windows.
Magicfilter
É um programa de filtragem que, recebendo os dados que são enviados para a impressora, tenta
“adivinhar” o tipo de dados a serem tratados. Em função do tipo do arquivo executa um filtro em especial
(desde que este já se encontre instalado) e envia a saída para a fila de impressão. O Magicfilter possui um
programa de configuração (magicfilterconfig) para cada filtro de cada impressora. A partir das informações
passadas para ele, o magicfilterconfig cria o arquivo /etc/printcap de acordo com as referidas informações.
A maioria dos programas para ambiente gráfico X11, incluindo o Netscape, Word Perfect, Gimp e
Star Office trabalham nativamente com o magicfilter.
Aspfilter
É similar ao Magicfilter, só que nesse último os filtros são interpretados pela shell e não por um
programa próprio. Ele também possui um programa de configuração interativo, mas diferente do Magicfilter.
Ele primeiro procura filtros instalados no sistema para verificar se poderá imprimir determinado arquivo.
Como o Magicfilter, ele cria o arquivo /etc/printcap, de maneira personalizada, de modo a corresponder ao(s)
tipo(s) de impressora(s) instalada(s).
Ghostscript
O utilitário gs (ghostscript) é usado para traduzir a linguagem postscript para uma que a
impressora conheça. Para isso, o gs precisa saber para que linguagem ele deve traduzir os dados recebidos,
feito através do parâmetro device especificado. O Ghostscript usa o formato .ps que está se tornando uma
padronização para a impressão de gráficos em ambiente Unix/Linux devido a sua boa qualidade da
impressão, liberdade de configuração, gerenciamento de impressão feito pelo gs e por ser um formato
universal, compatíveis com outros sistemas operacionais.
Se você tiver o Ghostscript instalado, abra um terminal de dentro do modo gráfico e digite o
comando gs <nome_arquivo.ps>, assim você poderá ler e trabalhar com seu arquivo .ps (arquivo post script).
Vários aplicativo podem gerar arquivos em post script e em ambiente Windows podemos citar o Page Maker,
Corel Draw, Illustrator, Autocad, Free Hand e até mesmo o pacote Office mas vamos lembrar que precisamos
ter os drivers para isso e podemos encontrar esses drivers comerciais ou gratuitos na Internet.
Para imprimir o arquivo “teste.ps” via linha de comando use o comando:

# gs -q -dSAFER -dNOPAUSE -sDEVICE=epson -r240x72 -s PAPERSIZE=legal


-sOutputFile=/dev/lp0 teste.ps

Onde os parâmetros:

-q, -dQUIET: Não mostra mensagens de inicialização do Ghost Script.


-dSAFER: É uma opção para ambientes seguros, pois desativa a operação de mudança de nome
e deleção de arquivo e permite somente a abertura dos arquivos no modo somente leitura.
-dNOPAUSE: Desativa a pausa no final de cada página processada.
-sDEVICE=dispositivo: Dispositivo que receberá a saída do Ghost Script. Neste local pode ser
especificada a marca o modelo de sua impressora ou um formato de arquivo diferente (como pcxmono,
bmp256) para que o arquivo .ps seja convertido para o formato designado.
Para detalhes sobre os dispositivos disponíveis em seu Ghost Script, use o comando gs --help|
less ou gs --help | gless (executa o less do modo gráfico) ou veja a página de manual. Outro utilitário

146
Global Sul Informática

interessante e importante do modo gráfico é o ggv o qual, meio que se parece com o acrobat reader, permite
visualizar e imprimir arquivos em formato .ps com extrema qualidade.
LPRng
O LPRng – LPR Next Generation: O LPRng, escrito por Patrick Powell é a nova geração em
relação ao LPR mais antigo, desenvolvido em Berkley, USA. Sendo mais completo, ele permite definir
permissões de impressão, quotas e não é executado como setuid-root. Isso resolveu os buracos de segurança
desnecessários do anterior. Por outro lado, esse programa é mais complexo.
O LPRng não requer que a fila de impressão seja local e permitiu que os serviços de impressão
fossem distribuídos através da NIS ou NIS+. Com o LPRng podemos facilmente gerenciar novos rótulos de
impressora, pois ele foi projetado para suportar grandes infra-estruturas de impressão, impressão em rede,
contas de impressão, dentre outras características.

Servidor de impressão CUPS e KDE


Você já pode perceber que podemos usar os mais diversos tipos de serviços de impressão, mas o
que tem se firmado ultimamente é CUPS – Common Unix Printing System, ou seja é sistema de impressão
padrão Unix. Ele é extremamente interessante pois é possivel configurar serviços para impressão local, em
rede, remota e também via Web.
Aqui nessa parte vamos ver a parte básica de configuração e empressão, pois utilitários e
serviços baseados no CUPS são muito e não seria possível abordá-los por completo aqui. Como isso é um
serviço, primeiramente devemos ter o pacote desse serviço intalado e depois devemos deixá-lo ativo pois
somente assim poderemos configurá-lo e usá-lo como servidor e cliente de impressão. Poderemos deixá-lo
ativo com o ntsysv ou em nossos arquivos rc´s.
Somente para que você tenha uma idéia, o CUPS conta com mais de 1.500 (mil e quinhetas)
impressoras, porém se sua impressora não estiver na lista dele, procure em www.linuxprinting.org e lá você
com certeza encontrará sua impressora. Baixe o arquivo e o CUPS estará atualizado.
O CUPS assim como seus arquivos estão no /etc. Veja seus principais arquivos:

cups, cups-calibrate, cups.lp, cups.lprm, cupsd, cups-config, cups.lpc, cups.lpstat,


cupsdconf, cups-pcl3, cups.lpq, cupsWebAdmin, cupsdoprint, cups.cancel, cups.lpr,
cupsaddsmb, cupstestppd.

Arquivos de configuração do CUPS:

a) classes.conf: Este arquivo contém informação para cada classe de impressora


b) client.conf: Este arquivo fornece o nome do servidor padrão para máquinas clientes
c) cupsd.conf : Este arquivo controla como o servidor cups trabalha.
d) mime.convs: Este arquivo contém uma lista de filtros de conversão para arquivos
padrão
e) mime.types: Contém uma lista de formatos de arquivos padrão
f) printers.conf : Este arquivo contém informações de cada impressora.

Vantagens do CUPS
O CUPS fornece uma portável camada de impressão para sistemas operacionais baseados em
sistemas Unix, fornecendo interface de linha de comando tanto no estilo System V como BSD. Ele usa o
protocolo IPP – Internet Printing Protocol como base para o gerenciamento de trabalhos e filas de
impressão, e outros protocolos como LPD – Line Printer Daemon, SMB – Server Message Block, AppSocket
– JetDirect, são suportados com funcionalidades reduzidas. Ele ainda adicionou opções de impressão
baseadas em PPD – Postscript Printer Description para suportar o mundo real de impressão do Unix.
Além disso, o CUPS fornece uma interface Web, quotas, suporte a clientes IPP e LPD, suporte a
encriptação, drivers de impressão baseados em PPD e vasta documentação e usa o IPP/1.1 para fornecer um
completo e moderno sistema de impressão para Unix que pode ser extendido para suportar novas
impressoras, dispositivos e protocolos enquanto fornece compatibilidade com as aplicações Unix existentes.
E isso é o que está se tornando padrão em quase todas as distribuições Linux. O CUPS está se
consolidando.
Vantagens do IPP
Como já sabemos o IPP é um protocolo de impressão pela Internet, esse é um novo protocolo de
rede que fornece um conjunto comum de serviços de impressão, ou seja, você imprimir um documento de
qualquer máquina no mundo para qualquer impressora no mundo usando IPP.

147
Treinamento Linux – Administração, Redes e Serviços

As principais vantagens do IPP em cima de outros protocolos como LPD e JetDirect é que além
de todos eles poderem ser usados sobre a Internet hoje, acontece que o IPP fornece serviços que os outro não,
como:

a) O IPP fornece várias opções de autenticação, você pode configurar servidor CUPS para
aceitar somente trabalhos de alguns usuários.

b) O IPP suporta controle de acesso, o qual restringe impressão de trabalhos, controle


de trabalhos, controle de tamanho de arquivos, controle de grupos de impressão.

c) O IPP fornece serviços de diretórios conhecido como printer browsing e apresenta


configuração no estilo do Apache.

Configurando o CUPS pelo arquivo


Bom, agora nós já podemos dar inicio a configuração do CUPS. O primeira passo a ser feito é
editar o arquivo /etc/cups/cupsdconf, o qual se parece muito com o jeito dos arquivos de configuração do
servidor Apache. Esse arquivo é meio extenso mas sua configuração é bem simples.
Se você entender bem esse arquivo você terá andado uns 90% na configuração do CUPS. Pois
todos os utilitários de configuração do CUPS lêem e gravam informações nesse arquivo. Depois de feita as
alterações/configurações no arquivo /etc/cups/cupsd.conf deveremos executar o comando cupsd que é o
responsável por manter o CUPS ativado. Um detalhe que devemos atentar é de editar ou adicionar as linhas
seguintes no arquivo /etc/cups/cupsd.conf para que seja possível a configuração:

# Permite que sua máquina via navegador execute


# o configurador do CUPS.
<Location />
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
# Permite impressão do localhost.
Allow From 10.6.12.250
# Permite impressão somente ao 10.6.12.250.
Allow From 10.6.12.* # Permite impressão a todos os usuários
# dessa faixa de IP.
</Location>

Isso fica dentro de uma seção chamada “Security Options” eno nosso caso está dizendo para o
CUPS rejeitar toda e qualquer conexão que não seja originária de 127.0.0.1 e 10.6.12.250. Se você quiser
adicionar mais máquinas, basicamente o que temos que fazer é adicionar mais linhas “Allow From”, seguido
do IP da máquina.
Depois não esqueça de salvar o arquivo e reinicie o CUPS no servidor e no cliente. Agora
verifique com o comando lpstat -v. Se tudo correu bem, você já deve ter sua impressora funcionando e
compartilhada para outros clientes Linux sem maiores dificuldades. Simples né? Já para a parte
administrativa a configuração também é muito simples e fácil acompanhe o exemplo seguinte:

# Permite que sua máquina como administrador via navegador


# execute o configurador do CUPS.
<Location /admin>
AuthType Basic
AuthClass System
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 10.6.12.250
</Location>

Com isso já dá para você executar o comando cups-config ou cupsWebAdmin para dar inicio a
configuração propriamente dita pois o que você acabou de fazer foi permitir que a máquina local (localhost ou
127.0.0.1) e a máquina local com IP (10.6.12.250) pudessem inciar a configuração. A seguir você tem uma

148
Global Sul Informática

listagem de um arquivo /etc/cups/cupsd.conf sem comentários, ou seja, somente as alterações que geram
ações:

# CUPS configuration file, generated by CUPS configuration tool.


# This tool is part of KDEPrint, the printing framework for KDE
# since version 2.2.2 and is used by the CUPS supporting module
# in KDEPrint.

ServerName gabriel.hackers.net
ServerAdmin root@gabriel.hackers.net
Classification unclassified
ClassifyOverride No
DefaultCharset ISO8959-1
DefaultLanguage pt
Printcap /etc/printcap
PrintcapFormat BSD
RemoteRoot remroot
SystemGroup sys
ServerCertificate /etc/cups/ssl/server.crt
ServerKey /etc/cups/ssl/server.key
AuthType None

<Location />
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 10.6.12.250
</Location>

<Location /admin>
AuthType Basic
AuthClass System
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From 10.6.12.250
</Location>

HostnameLookups Off
KeepAlive On
KeepAliveTimeout 60
MaxClients 100
MaxRequestSize 0m
Timeout 300
Listen *:80
Listen *:631

AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
PageLog /var/log/cups/page_log
MaxLogSize 9999m
LogLevel info
PreserveJobHistory On
PreserveJobFiles Off
AutoPurgeJobs No
MaxJobs 500
MaxJobsPerPrinter 0
MaxJobsPerUser 0
User lp
Group sys
RIPCache 8m
FilterLimit 0
DataDir /usr/share/cups
DocumentRoot /usr/share/cups/doc
FontPath /usr/share/cups/fonts
RequestRoot /var/spool/cups
ServerBin /usr/lib/cups
ServerRoot /etc/cups

149
Treinamento Linux – Administração, Redes e Serviços

TempDir /var/spool/cups/tmp
Browsing On
BrowseProtocols CUPS
BrowsePort 631
BrowseInterval 30
BrowseTimeout 300
BrowseAllow 10.6.12.250
BrowseDeny All
BrowseOrder deny,allow
ImplicitClasses On
ImplicitAnyClasses Off
HideImplicitMembers Yes
BrowseShortNames Yes
maxcopies 100
printcapgui /usr/bin/glpoptions
maxclientsperhost 10

Bom, acho que você com um pouco de paciência lendo e estudando esse arquivo vai perceber que
na verdade não é difícil de se configurar esse servidor de impressão. Existem inúmeros utilitários para fazer
essas configurações, tanto pelo modo texto quanto pelo modo gráfico e também via navegador. Resumindo os
principais arquivos do servidor de impressão CUPS:

cups-calibrate: Serve para calibrar o uso de tintas e para imprimir usando o CUPS em
conjunto com o filtro de impressão gimp-print.
cups.lp, cups.lprm, cups.lpr: Serve para mandar arquivos para o serviçõ de impressão.
cupsd: Disponibiliza o CUPS “no ar”.
cups-config: Faz configurações no servidor.
cups.lpc, cups.lpq, cups.lpstat, cupsdoprint, cups.cancel: Serviçõs de impressão como
status, impressão, lista e cancelamento.
cupsdconf: É o arquivo de confoguração propriamente dito.
cupsWebAdmin: Executa o Netscape para configuração via navegador.
cupsaddsmb: Permite configuração para o servidor Samba.
cupstestppd: Faz teste de impressão para ver se tudo está certo.

Configurando o CUPS pelo cups-config


Você aprendeu a configurar o arquivo /etc/cups/cupsdconf agora vai achar mais fácil ainda
configurar pelo modo gráfico. Vamos ao nosso passo a passo:
Passo 1: Abra um terminal e execute o comando cups-config e siga os procedimentos
necessários.
Passo 2: Defina o nome do servidor, a senha do administrador, Qual é a classificação desse
servidor na rede, a padronização dos caracteres e seu idioma, o formato de impressão e se vai ser usado
printcap.
Passo 3: Aqui entre outras coisas defina se vai ter busca por nome de máquina na rede. Número
máximo de cliente nesse servidor e quais portas o servidor ficará ouvindo por requisições. Você também
poderá configurar uma porta sua em particular.
Passo 4: Se por um acaso puder existir um usuário não participante de sua rede (usuário não
cadastrado) e mesmo assim você quer permitir que ele use o servidor esse usuário poderá logar-se com
usuário remroot para poder ter acesso aos recursos do servidor.
Passo 5: Aqui você somente precisará confirmar onde é que realmente ficarão os arquivos de log,
o servidor de impressão, número máximo de trabalhos no servidor, número máximo de trabalhos por
impressora, número máximo de trabalhos por usuário e controlar o histórico de trabalhos e removê-los da
fila após posterior impressão.
Passo 6: Informe de existe um usuário em especial para usar o servidor de impressão e confirme
os diretórios padrão como: diretórios de dados, documentos, fontes extras, arquivos do servidor e arquivos
temporários.
Passo 7: E por último você configura as opções de navegação e habilita o servidor para usar
qualquer navegador com conjunto como CUPS e SLP, define a porta a ser usada, tempo de navegação, quais
máquinas podem e quais não podem usar os serviços do servidor e a regra de navegação que proíbe tudo para
depois checar quem é que pode alguma coisa.
Pronto! Foi ou não foi fácil configurar o servidor de impressão CUPS dessa maneira? Agora você
poderá ver o arquivo /etc/cups/cupsdconf para ver onde é que suas alterações feitas aqui fizeram
modificações no arquivo.

150
Global Sul Informática

Agora algo interessante, o konqueror poderá usar recursos em conjunto com o servidor CUPS e
até mesmo efetuar as configurações como adicionar e configurar impressoras. Para isso vá até Configurações
ð Carregar perfil de navegação do Gerenciamento de arquivos.
Agora clique no último botão do lado esquerdo e depois clique em Sistema de Impressão.
Pronto, você também agora tem um novo meio de configuração de impressora.
Se você tem uma impressora mas essa não aparece na listagem do servidor, você pode-se acessar
o endereço www.linuxprinting.org e verificar se sua impressora é compatível ou não. Ou então se você quiser
acabar mesmo com todas as suas dúvidas sobre impressão em sistemas Linux, eu lhe dou essa listagem:

– www.cups.org/ghostscript.php, www.cups.org/
– http://printing.kde.org/, http://localhost:631/
– http://cups.sourceforge.net/xpp/, http://gtklp.sourceforge.net/
– www.xmlsoft.org/, http://gimp-print.sourceforge.net/
– www.adobe.com/products/printerdrivers/winppd.html
– www.kyz.uklinux.net/cabextract.php3

Configurando a impressora pelo KDE


O que nós vimos até aqui foi como configurar o servidor de impressão e a impressora e como
deixá-lo no ar. Agora nós vamos aprender como é que configuraremos nossa impressora pelo KDE que usará
recursos do servidor CUPS ou de outros servidores. Para isso você poderá usar o centro de controle do KDE
(kcontrol) ou poderá ser mais direto executando o comando kaddprinterwizard. Vamos fazer isso segundo
um guia visual passo a passo:
Passo 1: Execute o comando mencionado e na segunda tela você deverá escolher qual o tipo de
impressora você vai instalar. Os tipos de impressoras que podemos ter são: Impressora local (Local printer),
Fila remota de impressão (Remote LPD queue), Impressora compartilhada via samba para ambiente
Windows/Linux (SMB shared printer), Impressora de rede (Network printer), Impressora usando servidor
remoto CUPS (Remote CUPS server). O CUPS permite impressão via Internet e Impressora de rede usando
IPP, ou seja é possível imprimir via Internet.
Agora escolha em qual porta está sua impressora. Só isso.
Passo 2: Após, você deverá escolher o fabricante o modelo de sua impressora. Caso ela não
aparecer, escolha um modelo compatível mas se mesmo assim não der certo, vá até uma daquelas páginas e
tente baixar o driver de sua impressora, ou veja se o fabricante também não dispõe de um driver de
impressão para Linux. Se sua impressora suportar recursos de postscript marque a opção e se usar impressão
genérica (RAW), não precisar de driver de impressão.
Passo 3: Após esse procedimento você poderá clicar no botão Test para fazer um teste de
impressão ou clicar no botão Settings para definir alguns ajustes como tamanho da página, modo de
impressão etc.
Passo 4: Define se vai ter mensagens de início e fim de impressão e depois quantos dias essa
impressora vai estar ativar e limite para tamanho de arquivo e de páginas.
Passo 5: Agora já estamos quase terminado, só esta faltando configurar quais são os usuários
que podem usar essa impressora (Allowed users)e quais não podem usar essa impressora (Denied users), e
depois deveremos cadastar um nome e uma descrição para a nossa impressora, e no campo Location
geralmente colocamos o IP da impressora ou o nome da máquina em que ela se encontra embora isso não
seja obrigatório.
A próxima tela apresenta informações sobre a impressora e agora terminamos de configurar
nossa impressora. Viu que fácil. Pode recarregar os cartuchos e terminar sua “eterna monografia.”
Quando você estiver imprimindo, a caixa de diálogo que aparace é o kprinter, clique em Opções
do Sistema para que essa caixa se amplie e você terá um série de opções de controle de qualidade de
impressão, criação de arquivo PDF, agendamento de impressão, escolha do servidor etc. As informações
dessa caixa de diálogo pode mudar de acordo com sua impressora, assim como acontece no ambiente
Windows.
Concluindo o que nós aprendemos aqui, podemos perceber que em se tratando de impressão o
sistema Linux está muito bem servido. O único detalhe é que nós devemos tomar cuidado para não se perder
em tantas opções assim. Use apenas um ambiente de impressão, como por exemplo o gerenciador de
impressão do KDE que é extremamente completo e oferece inúmeras possibilidades de configuração para o
usuário.

151
Treinamento Linux – Administração, Redes e Serviços

Configurando o vídeo
A configuração do vídeo no sistema Linux é diferente do Windows. Geralmente no Linux o
usuário escolhe uma resolução de vídeo e trabalha com ela, dificilmente ele ficará trocando os modos de
vídeo, profundidade de cores, e por falar em cores parece-me que no sistema Linux as cores são mais
saturadas que no Windows, ou seja elas são mais vivas, você poderá fazer um teste abrindo a mesma imagem
no Windows e no Linux e fazendo uma análise.
No sistema Linux o modo gráfico, nós chamamos de “X” ou “X11” e a filosofia deste é semelhante
ao Windows, as operações básicas com janelas são iguais: fechar, arrastar, soltar, maximizar, minimizar.
Alguma coisa novas e melhores você encontrará no modo gráfico dependendo de qual gerenciador você
estiver usando. Mas nada disso funcionará se você não configurar certo a sua placa de vídeo.
O modo gráfico pode ser iniciado de duas maneiras:
1. Modo automático (init 5): Usando ou o programa xdm ou kdm ou gdm que é um utilitário que
vai cuidar do login no sistema, entre com o nome do usuário e senha correta e será iniciada uma sessão X
com o gerenciador escolhido por você ou o default do seu sistema.
O gdm (Gnome) e o kdm (KDE) permitem uma série de configurações e você poderá escolher os
gerenciadores instalados. O xdm carregará um configurado por você ou executará o default do sistema.
1. Modo manual (init 3): Através do comando startx, ou xinit . Aqui seu login acontece primeiro
no modo texto, entrando no sistema com nome de usuário e senha. Para que você personalize qual
gerenciador de janelas você quer que o comando startx execute edite/crie o arquivo .xinitrc que ficará no
$HOME do usuário.
Veja o exemplo:

# arquivo .xinitrc
exec xterm &
exec gimp &
exec windowmaker

No exemplo o xterm e o Gimp serão carregados juntos com o gerenciador de janelas


WindowMaker.
Para efetuarmos a configuração de vídeo no sistema Linux é simples e fácil. Em princípio é um
pouco diferente do ambiente Windows, no qual você troca de resolução e profundidade de cores dentro do
próprio Windows.

DICA: Para sair do modo gráfico é muito fácil, combine Alt + Backspace, isso também é útil se
alguma deu errado e o modo gráfico é carregado e aparece somente um atela cinza e mais nada,
assim o Linux voltará ao modo texto (runlevel 3) a não ser que ele esteja configurado para já entrar
no modo gráfico (runlevel 5), então você deverá proceder combinando Control+Alt+F2 ou F3, F4 ou
uma outra console que você tenha disponível.

Quando estiver na console, use o comando init 3 para que o modo gráfico seja “derrubado”,
espere alguns segundos e se a console não for liberada combine Control+C que estará tudo certo. Caso você
mais de uma resolução de cor poderá mudar entre uma e outra usando a combinação Control+Alt+*, isso é
particularmente interessante pois há alguns jogos que usam 256 cores, não sei porque sendo que hoje a
qualidade que nós usando é 24 bits de cor.
Depois que você fez isso, poderá usar um dos seguintes comandos:
1. Xconfigurator: Configurador padrão em modo texto para o modo gráfico. É o mais conselhável
pois você poderá efetuar suas configurações atravé de uma interface interativa em modo texto.
2. xf86config: Um dos primeiros configuradores, ele nos faz perguntas e nós respondemos
conforme sabemos as informações sobre o nosso hardware. Esse configurador não configura somente o vídeo,
configura teclado, mouse etc. Ele não foi traduzido, mas você encontrará uma documentação traduzida dele
na Internet.
3. XF86cfg: É um novo configurador chamado pela linha de comando que abre um ambiente
gráfico para você fazer as configurações, aqui também é possível fazer outras configurações além das de
vídeo.
A configuração é muito simples, clique com o botão direito sobre o ícone do monitor para
configurar opções para o monitor e do mesmo modo sobre a placa de vídeo para configurá-la. O modeline
servirá para configurar mais um monitor se necessário e seu display bem como sua posição. Depois de fazer
suas configurações não se esqueça de gravar.

152
Global Sul Informática

Há também o XF86Setup que faz configurações semelhantes ao XF86cfg, mas ele não tem
aparecido mais nas distribuições. E as distribuições mais recentes a configuração já dá-se pelo modo gráfico.
Depois que você já estiver em modo texto, é bom usar uns comandos que buscam informações
sobre sua placa de vídeo e sobre o seu monitor, pois essas informações geralmente não sabemos. Você sabe
qual é a freqüência que seu monitor trabalha? Você sabe qual é a taxa de varredura (atualização) do seu
monitor?
É muito comun quando estamos configurando o modo X, colocarmos a famosa tela virtual, que é
diferente de desktop virtual. Tela virtual é uma tela maior que que a área do seu vídeo, assim quando você
chegar nas bordas deste a tela se deslocará para mostrar mais área de tela . No início é legal mas depois
aborrece e não fica produtivo. Se você quiser retirar a tela virtual do seu ambiente gráfico edito o arquivo
/etc/X11/XF86Config, comente a linha correspondente a sua configuração atual que começa com Virtual e
apenas comente-a com um # no inicio da linha.
Ah! Desktop virtual é como se fosse vários monitores um ao lado do outro assim quando um
encher de janelas você pula para o outro e esse está limpinho. Veja isso na barra do KDE, do Gnome, do
Enlightenment, IceWm, AfterStep enfim, praticamente todos os gerenciadores de janelas do Linux tem o seu
Desktop virtual.
Você pode escolher mais de uma resolução para uma mesma profundidade de cores, 1024x768 e
800x600. Caso tenha sido configurado via comando xf86config por exemplo, a tela sempre irá assumir a
resolução mais alta por padrão e ao se escolher a menor, ficará com tela virtual.
Depois dessas informações é hora de usar o Xconfigurator que é muito simples de usar, pois a
configuração ocorrerá pelo modo interativo, ou seja, ele “tenta” encontrar de forma automática todas as
configurações de sua máquina (monitor e placa de vídeo).
Os usuários do sistema Linux geralmente escolhem qual será a resolução para trabalhar e fim de
papo. Não é como no ambiente Windows, que se pode mudar a resolução a qualquer momento. No entanto,
nada o impede de escolher três resoluções e três profundidades de cores. Para alternar entre as resoluções
você poderá combinar Control+Alt++ ou Control+Alt+— e para mudar entre as profundidades de cores use
Control+Alt+*. Você também poderá carregar o modo gráfico direto na profundidade de cor desejada da
seguinte maneira, mas isso somente se sua placa permitir esse tipo de inicialização:

startx -- -bbp 8 Para 8 bits de cor.


startx -- -bbp 16 Para 16 bits de cor.
startx -- -bbp 24 Para 24 bits de cor.
startx -- -bbp 32 Para 32 bits de cor.

As configurações que são feitas pelo Xconfigurator são gravadas em /etc/X11/XF86Config ou


/etc/X11/XF86Config-4 para o XFree 4.0.

# XFree86 4.0 configuration generated by Xconfigurator


# Área do mouse e do teclado.

Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

# Por padrão Linux não usa o xfs


Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath "/usr/share/fonts/default/TrueType"
FontPath "/usr/share/fonts/default/URW"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
ModulePath "/usr/X11R6/lib/modules"
EndSection

153
Treinamento Linux – Administração, Redes e Serviços

# Área de carregamento de módulos.


Section "Module"
Load "dbe" # Double-buffering
Load "GLcore" # OpenGL support
Load "dri" # Direct rendering infrastructure
Load "glx" # OpenGL X protocol interface
Load "extmod" # Misc. required extensions
Load "freetype"
Load "speedo"
Load "type1"
# Load "pex5" # PHIGS for X 3D environment (obsolete)
# Load "record" # X event recorder
# Load "xie"# X Image Extension (obsolete)
EndSection

# Área de modelo de teclado e layout.


Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbModel" "abnt2"
Option "XkbLayout" "br"
EndSection

# Área de modelo de mouse, portas e resolução.


Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "Microsoft"
Option "Emulate3Buttons" "on"
Option "ZAxisMapping" "4 5"
EndSection

# Área de informações do monitor


Section "Monitor"
Identifier "SAM1035"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30 - 61
VertRefresh 50 - 120
Option "dpms"
EndSection

# Área de modelo da placa de vídeo on-board.


Section "Device"
Identifier "SiS 620"
Driver "sis"
BoardName "Unknown"
EndSection

# Área de frame-buffer
Section "Device"
Identifier "Linux Frame Buffer"
Driver "fbdev"
BoardName "Unknown"
EndSection

# Área que informa a resolução de trabalho e profundidade de cores.


Section "Screen"
Identifier "Screen0"
Device "SiS 620"
Monitor "SAM1035"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "1024x768"
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection

154
Global Sul Informática

Anotações:

155
Treinamento Linux – Administração, Redes e Serviços

Anotações:

156
Global Sul Informática

Capítulo 9

Configuração básica da interface de rede


Agora vamos entrar numa das partes mais interessantes do sistema Linux que é a configuração
da interface de rede e a rede propriamente dita. Ao contrário de que muita gente pensa a configuração de rede
TCP/IP1 no sistema Linux é muito fácil e podemos efetuar uma configuração bem sucedida por diversos
meios:

1. Manual através da edição dos arquivos de configuração.


2. Manual através de comandos de configuração.
3. Interativa pelo modo texto.
4. Interativa pelo modo gráfico.

Nós podemos trabalhar com até 4 (quatro) placas de rede simultaneament no sistema Linux de
modo bem natural e do mesmo modo que você configura o primeiro cartão de rede configura-se o restante
apenas cuida o que cada configuração poderá fazer: muilti IP, firewall, ADSL etc.
Apesar de, nos dias de hoje praticamente todos os computares mesmo em empresas pequenas
estarem conectado em rede, graças as implantações TCP/IP feita pelo Windows, muita gente ainda não tem
uma noção concreta do que é e para quase serve. Uma rede é a conexão de dois ou mais computadores com o
objetivo de compartilhar recursos entre um computador e outro.
E esses recursos podem ser:
1. Compartilhamento diretórios ou todo seu disco rígido com outros computadores/usuários da
rede. Usuários acessarão seu disco rígido como se fosse um disco local. Chamamos isso de servidor de
arquivos.
Ah! Quando falamos em rede o termo servidor e cliente são bem comuns e fáceis de ser
entendido. O servidor “serve” algo, ou seja, se ele for servidor de arquivo o cliente que “busca” os arquivos
poderá e fazer de maneira transparente. O servidor de web, serve páginas solicitadas pelos clientes. O
servidor de impressão, permite que clientes imprimam na impressora desse servidor. E por aí vai. Entendeu?
3. Compartilhamento de acesso a Internet, também chamado de servidor Proxy. Os usuários
poderão navegar, ler/mandar emails, jogar (Counter Strike, Half Life, Unreal, quake 3, 4 etc) de forma fácil e
segura.
4. Compartilhamento de uma impressora com outros usuários. Agora você já sabe o que é.
5. Há uma série de tipos de servidores que podemos fazer como sistema Linux isso vai depender
da nossa necessidade. Uns são bem fáceis de ser configurados, outros dão mais trabalhos. A comunicação
entre computadores em uma rede é feita através do Protocolo de Rede. Há vários tipos de protocolos IPX,
NetBEUI, TCP/IP. O Linux trabalha com todos eles porém o mais usado no mundo inteiro é o TCP/IP até
porque é o protocolo usado na Internet. É esse “carinha” que vamos conhecer nas próxima páginas.

O modelo base OSI


O Modelo de Referência OSI – Open Systems Interconnection, é um modelo de referência de
uma arquitetura estabelecida de modo a possibilitar uma maior compatibilidade entre diferentes
plataformas. O modelo OSI, criado pela ISO – International Organization for Standardization, que divide a
comunicação das redes em camadas essa preocupação surgiu com a necessidade de integração entre
diferentes redes de computadores. A maioria dos protocolos de implementação adotam um menor número de
camadas, agrupando camadas as redundantes facilitando assim a compreensão embora o modelo OSI não
seja difícil de se entender.
Não são todos os sistemas de rede que o utilizam exatamente do forma como ele é oferecido. O
modelo OSI é dividido em 7 (sete) camadas diferentes. Toda informação a ser enviada parte da camada mais

157
Treinamento Linux – Administração, Redes e Serviços

alta que é a camada de “Aplicação” e que é a de número sete. E segue-se então pelas demais camadas que
incluem, uma a uma, novas informações de controle.
Essas informações de controle é que são responsáveis pela maior compatibilização entre
máquinas de tecnologias diferentes, e são encaminhadas juntamente com a informação real para as demais
estações da rede. A camada mais baixa determina o meio físico através do qual a mensagem irá trafegar, logo
percebemos que o modelo OSI, assim como outros, especifica padrões de software e hardware a serem
implementados pelos fabricantes.
Quando a mensagem atinge o seu destino, novamente ela passa através das mesmas camadas, só
que inversamente até chegar ao nível mais alto. Veja a tabela seguinte para um melhor compreensão das
camadas.

Modelo OSI
CAMADA DESCRIÇÃO
7 Aplicação: Serviços de rede
6 Apresentação: Apresentação de dados
Sessão: Estabelece o elo de comunicação entre a
5
origem e o destino
Transporte: Conecta processos em computadores
4
diferentes
Rede: Fornece o endereço de uma máquina na
3
rede
2 Enlace de Dados: Agrupa bits para transmissão
1 Fisica: Hardware que compõe uma rede

No modelo OSI cada camada possui tarefas específicas a serem realizadas, incluindo
informações de controle à mensagem de tal forma que o nó responsável pelo seu envio, e conseqüentemente o
nó que irá recebê-la, saiba como manipulá-la. Essas informações de controle são armazenadas numa área da
mensagem chamada de cabeçalho (header), e podem incluir informações de endereçamento, controles que
bloqueiam a sobrecarga que estações mais lentas eventualmente sofreriam ao tentar receber mensagens
provenientes de estações mais rápidas, informações para controle e depuração de erros e outras mais.
Deve ficar entendido aqui que uma camada somente irá se comunicar com as suas camadas
adjacentes, e toda informação de controle armazenada em uma camada do nó que está enviando a mensagem
será utilizada na decodificação da mensagem na camada equivalente do nó que está recebendo (logo, toda
informação de controle armazenada durante a passagem da mensagem na camada cinco somente será
reconhecida pelo nó destinatário quando aquela estiver atravessando a camada cinco do mesmo).
Muitos protocolos implementados pelos fabricantes não utilizam todas as sete camadas do
modelo OSI, o TCP/IP é um desses casos, o que não impede o funcionamento correto da rede. Um
determinado fabricante pode considerar desnecessário aplicar, à nível de software, toda uma série de testes
na verificação e depuração de possíveis erros por considerar o meio físico de comunicação suficientemente
confiável. Isto eliminaria alguma funcionalidade, mas iria tornar o tráfego da mensagem mais rápido.
Normalmente, as camadas do modelo OSI são agrupadas em três grupos:

1. Camada de Aplicação – responsável pela interface com o usuário, que corresponde à


camada sete;

2. Camadas para Decodificação – responsáveis pela “tradução” da linguagem humana em uma


linguagem compreensível pela máquina, onde as informações de controle são acrescentadas
à informação real, que englobam as camadas seis, cinco, quatro e três; e finalmente as

3. Camadas que providenciam a Conexão Física, que são as de número dois e um. Note que o
sentido parte do emissor que são as camadas mais altas para o receptor que são as
camadas mais baixas.

158
Global Sul Informática

Informações sobre camadas


Camada 7 – Aplicação: A camada de aplicação é usada para aquelas aplicações que são
especificamente escritas para percorrer a rede e também proporciona ao sistema operacional, serviços
completos para suportar aplicações. Deve também providenciar todos os serviços diretamente relacionados
aos usuários.
Camada 6 – Apresentação: A camada de apresentação é responsável por codificar dados
estruturados de acordo com o formato interno do transmissor a um formato adequado à transmissão dos
mesmos e depois decodificá-los.
Camada 5 – Sessão: A camada de sessão permite a usuários em máquinas diferentes
estabelecerem sessões entre eles.
Camada 4 – Transporte : A principal função da camada de transporte é aceitar dados da camada
de sessão, dividí-los se necessário em unidades compactas, transferi-las à camada de rede e garantir que os
pedaços cheguem corretamente do outro.
Camada 3 – Rede: Trabalha com o controle de tráfego dos dados entre todos os dispositivos da
rede e permite que unidades de dados sejam transmitidos para outras redes.
Camada 2 – Enlace: Trabalha com verificação de erros e regulação de tráfego.
Camada 1 – Física: Trabalha com a transmissão pura e simples de bits através de um canal de
comunicação.
O fluxo de dados através das camadas é feito de acordo com a figura seguinte, ou seja, o fluxo
parte da camada mais superior e vai descendo até a camada mais inferior e depois vai subindo até a camada
mais superior novamente até chegar na máquina destino.

:: Fluxo de dados em representação de camadas.

TCP/IP um pouco de teoria


Antes de partirmos para a configuração que eu sei que você está doido para aprender, vamos ter
um pouco de teoria, para entender com oé que tudo isso funciona.
Introdução ao TCP/IP
A plataforma TCP/IP surgiu através dos trabalhos do DARPA – Defense Advanced Research
Projects Agency, dos Estados Unidos, em meados da década de 70, constituindo a ARPANET, que mais tarde
se desmembrou em ARPANET, para pesquisa, e MILNET, para instituições militares. Para encorajar os
pesquisadores universitários a adotar o TCP/IP, o DARPA fez uma implementação de baixo custo,
integrando-o ao UNIX, da Universidade de Berkeley (BSD), já em uso em todas as universidades americanas.
Além disso, teve-se o cuidado de definir aplicações de rede similares às já conhecidas em Unix, como rusers e
rcp.
Mais tarde a NSF – National Science Foundation, estimulou o seu crescimento criando a
NSFNET, que ligava centros de supercomputação espalhados por todo o país, numa rede de longa distância,
também com os protocolos TCP/IP.
Existe um grupo chamado IAB – Internet Activities Board, o qual coordena os esforços de
pesquisa na área, através de vários grupos de trabalho. A documentação dos trabalhos, proposta para novos

159
Treinamento Linux – Administração, Redes e Serviços

protocolos ou alteração de outros já existentes, é feita através de artigos conhecidos como RFCs – Request for
Comments. Propostas ainda em estudos são chamadas de IEN – Internet Engineering Notes ou Internet
Drafts.
Tanto as RFCs quanto as IENs são numeradas seqüencialmente e em ordem cronológica. São
distribuídas pelo SRI-NIC, órgão que executa várias tarefas administrativas na Internet.
Histórico do TCP/IP:

a) Criado pelo DARPA em meados de 1970.


b) Surgimento da ARPANET e da MILNET.
c) Integração ao UNIX/BSD.
d) Surgimento da NSFNET.
e) Comitê Organizador – IAB.
f) Documentação – RFCs e IENs.
g) SRI-NIC.

IP – Internet Protocol
Não é confiável, pois a entrega não é garantida, sem controle de seqüenciamento, não detecta
erros nem informa o transmissor. É orientado a pacote — “connectionless”, como é chamado: cada pacote é
tratado independentemente dos outros. É “bem-intencionado”, os pacotes só são descartados quando todos
os recursos são exauridos.
A unidade básica, que é o datagrama, é quebrada em fragmentos para se adequar ao MTU do
hardware. Apresenta o TTL – Time-To-Live onde cada datagrama tem um campo que diz que após
determinado tempo o datagrama pode ser descartado. Cada gateway decrementa 1 ao recebê-lo e a cada
segundo, se o TTL = 0, o datagrama é retornado.
Compreendendo a numeração dos IP´s
Vamos aprender aqui como funciona a atribuição numérica para a interface de rede. Essa
atribuição numérica, que é chamada de número/endereço IP – Internet Protocol, é simples de ser entendida.
O endereço IP são números que identificam seu computador em uma rede interna (intranet) ou externa
(Internet). Podemos imaginar o IP como um número de telefone. O IP é composto por quatro bytes e a
convenção de escrita dos números é chamada de “notação decimal pontuada”, pois o ponto “.” também faz
parte dessa numeração.
Por convenção e padronização, cada interface que é a placa de rede do computador ou roteador
tem um endereço IP. Também é permitido que o mesmo endereço IP seja usado em mais de uma interface de
uma mesma máquina, mas normalmente cada interface tem seu próprio endereço IP.
As redes do protocolo Internet são seqüências contínuas de endereços IP´s. Todos os endereços
dentro da rede têm um número de dígitos dentro dos endereços em comum. A porção dos endereços, que são
comuns entre todos os endereços de uma rede, são chamados de porção da rede. Os dígitos restantes são
chamados de porção dos hosts que podem também ser entendidos como máquinas. Os números de bits que
são compartilhados por todos os endereços dentro da rede são chamados de netmask (a famosa máscara da
rede) e o papel da netmask é determinar quais endereços pertencem ou não à rede.
Por exemplo, veja esse estudo:

Endereço do Host = 192.168.150.24


Máscara da Rede = 255.255.255.0
Porção da Rede = 192.168.150.
Porção do Host = .24
Endereço da Rede = 192.168.150.0
Endereço Broadcast = 192.168.150.255

Classes de rede IP
Por razões administrativas, após algum pouco tempo no desenvolvimento do protocolo IP alguns
grupos arbitrários de endereços foram formados em redes que foram agrupadas no que foram chamadas de
classes. Essas classes armazenam um tamanho padrão de redes que podem ser usadas.
Sobre o endereçamento IP podemos entender:

a) Distribuídos pelo SRI-NIC.

b) Representados em notação decimal.

160
Global Sul Informática

c) Intervalo de 0.0.0.0 a 255.255.255.255.

d) A máscara separa parte “rede” da parte “máquina” e segue o mesmo padrão numérico do
número IP.

e) Endereço de rede e de máquina com valor 0 (zero) são inválidos.

f) O 127.0.0.0 é reservado para teste de loopback (máquina local).

g) Porções do endereço formada por 1's é considerada um broadcast.

h) São divididos em classes para melhor compreensão e resolução de problemas.

i) Todos pertencem ao protocolo IPV4, mas o IPV6 já está sendo implantado.

Como os endereços IP codificam a rede e a máquina dentro da rede, eles não especificam uma
máquina, mas sim uma conexão à rede. Aí temos um problema: Se uma máquina muda de uma rede para
outra, o seu endereço IP também deve mudar. O endereço IP broadcast é mapeado ao broadcast do hardware.
Os gateways usam o endereço de rede para o roteamento de datagramas IP. A parte “máquina” do endereço
identifica unicamente uma estação dentro de uma rede específica.
As faixas alocadas para redes válidas (Internet) são:

CLASSE MÁSCARA DE REDE ENDEREÇO


A 255.0.0.0 0.0.0.0 – 127.255.255.255
B 255.255.0.0 128.0.0.0 – 191.255.255.255
C 255.255.255.0 192.0.0.0 – 233.255.255.255
MULTICAST 240.0.0.0 224.0.0.0 – 239.255.255.255

As faixas alocadas para redes inválidas (intranet, sua rede) são:

CLASSE MÁSCARA DE REDE ENDEREÇO


A 255.0.0.0 10.0.0.0 – 10.255.255.255
B 255.255.0.0 172.16.0.0 – 172.31.255.255
C 255.255.255.0 192.168.0.0 – 192.168.255.255

DICA: Para evitar problemas futuros, você deve decidir primeiramente qual será a “largura” de sua
rede e então escolher a classe de rede que será usada. Desse modo a administração é muito mais fácil
de ser realizada.

Na implementação atual, que é o IPv4 (Internet Protocol v. 4.0) de números IP, os números
consistem em 4 bytes (8 bits) — dando um total de 32 bits de informação disponível. Isso resulta em números
que são especialmente grandes (mesmo quando escritos em numeração decimal). Então, para leitura e razões
organizacionais, os números IP são usualmente escritos na notação quaternária. O número IP 192.168.1.24 é
um exemplo disso: quatro números (decimais) separados por “.” (pontos).
Então descobrimos que o número IP é um número gigante, por assim dizer, de 32 bits divididos
em quatro partes de 8 bits. Como cada um desses quatro números é a representação decimal de um byte de 8
bits, cada um dos quatro números pode variar de 0 a 255 (isso abrange 256 valores e lembre-se de que zero é
também um valor).
Adicionalmente, parte do número IP de um servidor identifica a rede na qual o servidor reside, e
os ‘bits’ restantes do número IP identificam o servidor, a interface de rede. Exatamente quantos bits são
usados pela rede ID e quantos são disponíveis para identificar servidores (interfaces) nesta rede, determina-
se classe de rede como já podemos constatar pelas tabelas anteriores.

161
Treinamento Linux – Administração, Redes e Serviços

A camada TCP/IP
Como nós já sabemos o termo “protocolo TCP/IP” é utilizado como designação comum para
uma família de protocolos de comunicação de dados, sendo que o Transmission Control Protocol – TCP, e o
Internet Protocol –IP, são apenas dois deles. O protocolo TCP/IP é apresentado em 4 (quatro) camadas
conforme tabela seguinte.

TCP/IP
CAMADA DESCRIÇÃO
4 Aplicação
3 Transporte
2 Internet
1 Rede

Uma arquitetura de rede é definida pelas camadas ou níveis que a compõem, pela interface entre
essas camadas e pelas regras de comunicação entre camadas de mesmo nível em máquinas distintas, regras
estas conhecidas como protocolo.
Isso é importante pois o objetivo dessa divisão em camadas é permitir a modularização do
programa/aplicativo, permitindo que as alterações sejam localizadas e transparentes aos outros níveis não
afetados. Quando um programador desenvolve um sistema multiusuário cliente/servidor, seu aplicativo usa
todas essas camadas mas nem por isso ele precisa ser doutro nesse assunto, apenas precisa dominar seu
programa no nível da aplicação, pois o restante é feito pelo próprio hardware e também o aplicativo em
conjunto com o sistema operacional em uso.
Os módulos de software de protocolo em cada máquina podem ser representados como camadas
empilhadas. Cada camada cuida de uma parte do problema, e pelo menos não é tão difícil de ser entendido.
Existem duas regras importantes para o entendimento da divisão do software de rede em camadas: A camada
inferior fornece serviços á camada superior, aqui as coisas começam por baixo e vai subindo. O protocolo de
nível N no nó destino tem que receber o mesmo objeto enviado pelo protocolo de nível N no nó origem.
Conforme você pode observar na tabela anterior, a arquitetura TCP/IP possui apenas 4 (quatro)
níveis, mas são os 7 (sete) níveis do modelo OSI: O nível 1 é a interface de rede, o nível 2 é camada Internet ou
camada IP, o nível 3 é a camada de transporte e o nível 4 é a camada da aplicação. Compare as duas tabelas
OSI x TCP/IP mas lembre-se que o modelo OSI é o que serve de referência.

Modelo OSI TCP/IP


CAMADA DESCRIÇÃO CAMADA DESCRIÇÃO
7 Aplicação
6 Apresentação 4 Aplicação
5 Sessão
4 Transporte 3 Transporte
3 Rede 2 Internet
2 Enlace
1 Rede
1 Fisica

Quando você se refere ao nível 1, você está trabalhando com o meio de comunicação, utilizando
endereços físicos, ou seja, a parte hardware dessa história toda. Os níveis 2 e 3 são incorporados ao sistema
operacional, deixe que ele cuide disso. O nível 4 pode ser escrito por usuários (programados, analistas etc).
Os níveis 2,3 e 4 usam endereços IP. Você perce claramente a transposição de camadas do modelo OSI e do
TCP/IP. Alguns autores chamam a camada 2 do TCP/IP de camada inter-rede.

162
Global Sul Informática

Resumo das três classes de números IP:


Classe A
A classe A de números de rede IP usa os 8 bits mais a esquerda (o quarto mais à esquerda) para
identificar a rede, deixando 24 bits (os três quartos restantes) para identificar as interfaces de servidores
nesta rede. Endereços classe A sempre têm o bit mais à esquerda do byte mais à esquerda zero (este é um
valor decimal de 0 a 127 do primeiro quarto).
Então, existe um máximo de 128 números de rede classe A disponíveis, com cada um deles
contendo até 33.554.430 possíveis interfaces. Contudo, as redes 0.0.0.0 (conhecidas como rota padrão) e
127.0.0.0 (a rede de repasse) têm significados especiais e não estão disponíveis para uso para identificar
redes.
Logo, existem somente 126 números disponíveis de rede classe A.
Classe B
A classe B de números de rede IP usa os 16 bits mais à esquerda (os dois quartos mais a
esquerda) para identificar a rede, deixando 16 bits (os dois últimos quartos) para identificar interfaces de
servidores.
Endereços da classe B sempre têm os 2 bits mais à esquerda do byte mais à esquerda
determinado para 1 0. Isso deixa 14 bits para especificar o endereço de rede dando 32.767 redes de classe B
disponíveis. A rede de classe B tem, desta forma, uma gama de 128 a 191 para o primeiro dos quartos, com
cada rede contendo até 32.766 interfaces possíveis.
Classe C
Os números de rede IP da classe C usam os 24 bits mais à esquerda (os três bytes mais à
esquerda) para identificar a rede, deixando 8 bits (o byte mais à direita) para identificar as interfaces de
máquina.
Endereços da classe C sempre iniciam com os 3 bits mais à esquerda determinados para 1 1 0 ou
uma gama de 192 a 255 para o quarto mais à esquerda. Assim sendo, existem 4.194.303 números de rede
classe C disponíveis, cada um contendo 254 interfaces (as redes classe C com o primeiro byte maior que 223
são contudo reservadas e indisponíveis para uso).

ICMP – Internet Control Message Protocol


ICMP permite que gateways enviem mensagem de erro ou de controle para outros gateways ou
máquinas e provê comunicação entre o protocolo Internet (IP) em uma máquina e o IP em outra.
Porém, muitas vezes não ajuda a localizar onde está o erro, pois ele responde apenas a máquina
que originou o pacote errôneo e o erro pode estar em algum gateway no caminho. Pode ser perdido como
qualquer outro pacote IP.
Como é que isso funciona
Todo computador precisa ter um nome (gabriel, adilson, mitinik etc), pertencer a um domínio
(edfutura.com.br, uol.com.br, terra.com.br etc) ou a um grupo de trabalho (Linux, Windows, UNIP etc),
precisa também ter uma numeração IP (10.6.12.250, 200.213.197.183 etc), precisa também se necessário de
um servidor DNS que também vai ter nome, dominio, IP etc.
Se necessário mais uma vez, vai precisar de um gateway, ou seja, um outro micro que vai fazer “a
ponte” entre ele uma outra rede ou a Internet. Bom, sabendo de todas essas coisas, acho que você já percebeu
que se você quiser instalar uma máquina Linux em uma rede TCP/IP existente então você precisará saber ou
definir o seguinte:

Endereço IP de sua máquina + dominio


Endereço IP da rede
Endereço IP de broadcast
Máscara da Rede IP
Endereço do Roteador
Endereço do Servidor de Nomes (DNS)

Analogia do OSI com o TCP/IP: A seguir você tem a tabela completa de comparação de
funcionamento entre o modelo OSI e o Modelo TCP/IP, perceba que a compreensão entre ambos é muito
simples, precisando apenas de alguns minutos de estudos.

163
Treinamento Linux – Administração, Redes e Serviços

COMPARAÇÃO DO OSI COM A PILHA DE PROTOCOLOS TCP/IP


Nome da
Nome da Unidades de Protocolos TCP/IP em Utilitários
Nº OSI Nº TCP/IP camada
camada OSI encapsulamento cada camada TCP/IP TCP
TCP/IP

FTP, HTTP usam o TCP


7 Aplicação como transporte
4 Aplicação Dados SMTP, DNS e TFTP Telnet, Rlogin
usam o UDP como
6  Apresentação
transporte
5  Sessão
4  Transporte 3 Transporte Segmentos TCP ou UDP  
3  Rede 2 Internet Pacotes (datagramas)
Enlace de dados
2  (LLC e MAC)
Quadros
IP, ICMP, ARP, RARP
Ping,
Rede Traceroute
1 (interface)
1  Física Bits

Topologia de redes
Elaborar um projeto de rede não é apenas ter os cabos, os hubs, os switches e sair ligando um no
outro. Primeiro é preciso um estudos, para ver desde quantos metros de cabos vão ser gastos até qual é a
melhor estratégia de posicionamento dos computadores. Esse estudo chama-se topologia de rede, e é o que
vamos aprender agora.

Topologia em Estrela
Neste tipo de rede, todos os usuários comunicam-se com uma estação (nodo) central a qual tem
o controle de supervisão do sistema, essa estação central, pode ser chamada de host. Através dessa estação os
usuários podem se comunicar entre si e com processadores remotos ou terminais.
A disposição em estrela é a melhor escolha se o padrão de comunicação da rede for de um
conjunto de estações secundárias que se comunicam com a estação central.
Vai que ocorre uma falha em uma estação ou no elo de ligação com a estação central, apenas esta
estação vai ficar fora de operação. Mas, vai que a falha ocorre na estação central, então todo o sistema pode
ficar fora do ar. O desempenho obtido numa rede em estrela depende da quantidade de tempo requerido pela
estação central para processar e encaminhar mensagens, e da carga de tráfego de conexão, ou seja, é limitado
pela capacidade de processamento da estação central.
Esta configuração facilita o controle da rede e a maioria dos sistemas de computação com
funções de comunicação possuem um aplicativo que implementa esta configuração.

:: Topologia em estrela.

164
Global Sul Informática

Topologia em Barra
Nesta configuração todos as estações se interligam ao mesmo meio de transmissão. A “barra” é
geralmente compartilhada em tempo e freqüência, permitindo transmissão de informação. Nas redes em
barra comum, cada nó conectado à barra pode ouvir todas as informações transmitidas. Esta característica
facilita as aplicações com mensagens do tipo difusão (para múltiplas estações ao mesmo tempo).
Existem uma variedade de tipos de mecanismos para o controle de acesso à barra pode ser
centralizado ou descentralizado. A técnica adotada para acesso à rede é a multiplexação no tempo. Em
controle centralizado, o direito de acesso é determinado por uma estação especial da rede.
Em um ambiente de controle descentralizado, a responsabilidade de acesso é distribuída entre
todas as estações. Nas topologias em barra, as falhas não causam a parada total do sistema.
O desempenho de um sistema em barra comum é determinado pelo meio de transmissão,
número de estações conectadas, controle de acesso, tipo de tráfego entre outros fatores. O tempo de resposta
pode ser altamente dependente do protocolo de acesso utilizado.

:: Topologia por barramento.

Topologia em Anel
A topologia de rede em anel consiste de estações conectadas através de um caminho fechado
onde nessa configuração, muitas das estações remotas ao anel não se comunicam diretamente com o
computador central.
As redes em anel são capazes de transmitir e receber dados em qualquer direção, mas as
configurações mais usuais são unidirecionais, de forma a tornar menos sofisticado os protocolos de
comunicação que asseguram a entrega da mensagem corretamente e em seqüência ao destino.
Quando um mensagem é enviada por um nodo, ela entra no anel e circula até ser retirada pelo
nó destino, ou então até voltar ao nó fonte, dependendo do protocolo empregado. O último procedimento é
mais desejável porque permite o envio simultâneo de um pacote para múltiplas estações. Outra vantagem é a
de permitir a determinadas estações receber pacotes enviados por qualquer outra estação da rede,
independentemente de qual seja o nó destino. Os maiores problemas desta topologia são relativos a sua
pouca tolerância a falhas. Qualquer que seja o controle de acesso empregado, ele pode ser perdido por
problemas de falha e pode ser difícil determinar com certeza se este controle foi perdido ou decidir qual nó
deve recriá-lo.
Erro de transmissão e processamento podem fazer com que uma mensagem continue
eternamente a circular no anel.
Esta configuração requer que cada nodo seja capaz de remover seletivamente mensagens da rede
ou passá-las adiante para o próximo nó. Nas redes unidirecionais, se uma linha entre dois nodos cair, todo
sistema sai do ar até que o problema seja resolvido. Se a rede for bidirecional, nenhum ficará inacessível, já
que poderá ser atingido pelo outro lado.

165
Treinamento Linux – Administração, Redes e Serviços

:: Topologia em anel.

Sistema Linux, a configuração


Bom, agora que nós já temos uma boa base teórica do funcionamento de uma rede e seus
protocolos, vamos por a mão na massa. Caso você queira se aprofundar em redes eu lhe aconselho as
seguintes literaturas:

— Redes de Computadores, Andrew S. Tanenbaum/Editora Campus.


— Guia Completo de Cabeamento de Redes , José Maurício Pinheiro / Editora Campus.
— Networking Redes de Computadores: Teoria e Prática, Bruce A. Halberg / Editora Alta
Books.
— Redes de Computadores: da Ethernet à Internet, Alexandre Fernandes de Moraes e
Antonio C. Cirone / Editora Érica.
— Protocolos e Aplicações para Redes de Computadores, Claude Falbriard / Editora Érica.
— Utilizando na Prática: Internet e Redes de Computadores, Almir Wirth / Editora Alta
Books.
— Projeto E Arquitetura De Redes, J. F. Dimarzio / Editora Campus.
— Redes de Computadores (Curso completo), Gabriel Torres / Editora Axcel.

Você vai descobrir agora nessas próximas páginas que é super simples (agora) a configuração de
uma rede no sistema Linux. Você pode fazer efetuar a configuração editando os arquivos de configuração e
depois derrubando e levantando processos, pode efetuar uma configuração via modo texto interativo e
também pelo modo gráfico. Você vai aprender todos eles, prepare-se.
Para que o Linux funcione em uma rede você vai precisar das seguintes informações, o item 5 e 6
não será necessário se você não os tiver:

1. Endereço IP de sua máquina.


2. Endereço IP da rede.
3. Endereço IP de broadcast.
4. Máscara da Rede IP.
5. Endereço do Roteador.
6. Endereço do Servidor de Nomes (DNS).

A interface de rede
A interface de rede nada mais é do que o seu cartão ou a sua placa de rede. Todas as interfaces
de rede Linux estão no diretório /dev e a maioria é criada dinamicamente pelos aplicativos quando são
requisitadas. Um desses casos é a interfaces ppp e plip que são criadas dinamicamente pelos aplicativos
quando precisam efetuar uma conexão. Veja a identificação de algumas interfaces de rede no Linux.

eth0, eth1...: Placa de rede Ethernet e WaveLan.


ppp0, ppp1...: Interface de rede PPP (protocolo ponto a ponto).
slip0, slip1...: Interface de rede serial.
eql: Balanceador de tráfego para múltiplas linhas.

166
Global Sul Informática

plip0, plip1...: Interface de porta paralela.


arc0e, arc1s..: Interfaces Arcnet.
fddi?: Interfaces de rede FDDI.
nr0: Interface Net Rom.

Para maiores detalhes sobre essas interfaces, leia o documento NET3-4-HOWTO do Linux, ele
tem informações bem mais completas sobre elas.

A interface loopback
Quando você instala o sistema Linux, mesmo que seja em um único computador e esse não tem
acesso a nem um outro, mesmo assim ele comporta-se como se estivesse em rede pois essa é a naturaza do
sistema. A interface loopback é um tipo especial de interface que permite fazer conexões com você mesmo, ou
seja, looback é você.
Para que serve isso, simples, serve para testar conexões, alguns programas “precisa” estar em
rede digamos assim usam a interface loopback, assim, por exemplo, você pode testar vários programas de
rede sem interferir com ninguém em sua rede. O endereço IP 127.0.0.1 foi escolhido especificamente para a
loopback, até mesmo o Windows tem esse endreço, meio camuflado mas tem. Assim se abrir uma conexão
telnet, ftp, ssh parao loopback (127.0.0.1), abrirá uma conexão para o próprio computador local.
A abreviação de loopback é “lo”, e o seu micro local você poderá chamar de localhost e o seu
dominio local você poderá chamar de localdomain. A configuração da interface loopback é super simples e
normalmente feita pelos scripts padrões de inicialização existentes em sua distribuição. Porém se você quiser
configurá-la via linha de comando use:

# ifconfig lo 127.0.0.1

Pronto, com o comando ifconfig você acabou bem rapidino de atribuir o IP 127.0.0.1 para a
interface loopback e para o sei localhost. Mas isso não quer dizer que ela esteja nor ar. Para isso você deverá
digitar:

# ifconfig lo up

Esse comando “levanta” o loopback e

# ifconfig lo down

Esse comando “derruba” o loopback.


Seguindo essa idéia, você poderá fazer isso para qualquer interface em seu sistema, eth0, eth1,
ppp0, ppp1 etc.

DICA: Caso você queira usar algum aplicativo de rede: telnet, ssh, ftp, samba etc eles somente
funcionarão se a interface estiver no ar.

Para testar se o loopback está configurado use o comando ifconfig lo:

lo Encapsulamento do Link: Loopback Local


inet end.: 127.0.0.1 Masc:255.0.0.0
UP LOOPBACKRUNNING MTU:16436 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

O uso do comando ifconfig pode ser entendido da seguinte maneira: ifconfig interface [aftype]
opções | endereços. Onde interface é a interface de rede que você deseja configurar como eth0, eth1 etc. O
[aftype] é o parâmetro que você deverá passar para o comando. As opções são endereços, ou seja, o nome ou
endereço IP da máquina (um nome de máquina será traduzido para um endereço IP) da interface. Esse
parâmetro é necessário, apesar da sintaxe atualmente não requisitá-lo.

167
Treinamento Linux – Administração, Redes e Serviços

Veja um exemplo de configuração com o comando ifconfig:

# ifconfig eth0 192.168.150.5 netmask 255.255.255.0 broadcast 192.168.150.5 up

Caso o seu sistema não inicie as configurações de rede automaticamente, você deverá colocar o
comando acima nos arquivos de inicialização de sua distribuição que ficam em /etc/rc.d/ e deverá usar o
comando ntsysv para habilitar as seguintes opções (o que necessário para você):

a) inet: Cuida dos serviços de rede.


b) network: É a rede em si.
c) httpd: Servidor web básico se for usar recursos via browser.
d) smd: Se for usar o servidor Samba.
e) portmap e nfs: Se for usar NFS.
d) sshd: Se for usar SSH em conexões.

Os principais arquivos
Primeiramente, precisamos saber quem são e onde estão esses arquivos mágicos de
configuração.
a) /etc/hosts
Esse arquivo guarda o IP, o nome+domínio e o apelido de uma máquina na rede e um
comentário para ela. É importante para uma pequena empresa cadastrar suas máquinas nesse arquivo, pois
ele será lido antes de partir para um DNS da vida. Exemplo:

127.0.0.1 localhost
10.6.12.1 mygateway.hackers.net mygateway # Gataway
10.6.12.2 mydns.hackers.net mydns # DNS Server
10.6.12.3 adilson.hackers.net adilson # Mutibetter
10.6.12.4 gabriel.hackers.net gabriel # Extends
10.6.12.5 sonizia.hackers.net sonizia # MyLove
10.6.12.6 mitnick.hackers.net mitnick # TheHacker

b) /etc/resolv.conf
Esse arquivo guarda o IP da máquina servidora e outro IP onde deverá ser feita uma busca
quando se tratar de DNS ou acessos externos da sua rede. Esse arquivo é o “resolvedor” de nomes, nele você
você colocará o endereço de servidores DNS externos. Você poderá passar três informações que são:
1. domain: Especifica aqui qual é o nome do domínio local.
2. search: Especifica aqui uma lista de nomes de domínio alternativos quando efetuando uma
procura por um computador, separados por espaços. A linha search pode conter no máximo 6 domínios ou
256 caracteres.
3. nameserver: Especifica aqui o endereço IP de um servidor de nomes de domínio para
resolução de nomes.

Exemplo:

domain ns1.gsi.edu.br
search ns1.gsi.edu.br globalsul.com
nameserver 200.213.197.183
nameserver 200.213.197.183

c) /etc/host.conf
Esse arquivo é o local onde é possível configurar alguns ítens que gerenciam o código do
resolvedor de nomes. Exemplo:

order hosts,bind
multi on

Este arquivo informa ao resolvedor de nomes para checar o arquivo /etc/hosts antes de tentar
verificar um servidor de nomes e retornar um endereço IP válido para a máquina procurada e multi on

168
Global Sul Informática

retornará todos os endereços IP resolvidos no arquivo /etc/hosts ao invés do primeiro. Podemos ainda
adicionar alguns parâmetros para evitar ataques de IP spoofing (roubo de IP):

nospoof on
spoofalert on

O parâmetro “nospoof on” ativa a resolução reversa do nome da biblioteca resolv (para checar se
o endereço pertence realmente àquele nome) e o spoofalert on registra falhas desta operação no syslog
(lembre-se deixar esse serviço ativo).
d) /etc/HOSTNAME ou /etc/hostname
Esse arquivo guarda o nome da máquina que você está configurando. Quando você usa o
comando hostname a leitura será feita nesse arquivo. Exemplo:

adilson.hackers.net

e) /etc/sysconfig/networks
Esse arquivo tem uma função similar ao arquivo /etc/hosts. Ele guarda um banco de dados
simples de nomes de redes contra endereços de redes. Ele guarda o nome da rede e o IP dessa. Exemplo:

loopnet 127.0.0.0
edfuturanet 213.197.183
bonannet 10.6.12.1

Quando você usar o comado route, será verificado se o destino é uma rede e esta rede se
encontra no arquivo /etc/networks, então o comando route mostrará o nome da rede ao invés de seu
endereço.
f) /etc/sysconfig/network-scripts/ifcfg-lo
Esse arquivo informa o dispositivo local, que é o seu micro (DEVICE=lo), o endereço local
padrão dele (IPADDR=127.0.0.1), a máscara de rede para esse endereço (NETMASK=255.0.0.0), o endereço
de rede (NETWORK=127.0.0.0), o broadcast (BROADCAST=127.255.255.255), se sempre estará ativa
(ONBOOT=yes) e o nome para a interface (NAME=loopback). Exemplo:

DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

f) /etc/sysconfig/network-scripts/ifcfg-etho
Esse arquivo informa o dispositivo da interface, que é o seu micro (DEVICE=eth0), se sempre
estará sempre ativa (ONBOOT=yes), se precisa de protocolo especial para boot (BOOTPROTO=“none”), o
endereço padrão IP configurado da interface (IPADDR=10.0.0.5), a máscara de rede para esse endereço
(NETMASK= 255.255.255.0) e o gateway que poderá ser a sua máquina ou um servidor DNS
(GATEWAY=10.6.12.1).
As configurações da sua primeira placa de rede ou interface de rede que é chamada de eth0
ficam armazenadas em /etc/sysconfig/network-scripts/ifcfg-eth0. Exemplo:

DEVICE="eth0"
ONBOOT="yes"
BOOTPROTO="none"
IPADDR="10.6.12.150"
NETMASK="255.255.255.0"
GATEWAY=10.6.12.1

g) /etc/protocols
Esse arquivo guarda todos os protocolos que sua rede Linux poderá usar para efetuar
comunicação em uma rede interna e externa. Exemplo:

169
Treinamento Linux – Administração, Redes e Serviços

# /etc/protocols:
# $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $
#
# Internet (IP) protocols
#
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers

ip 0 IP # internet protocol, pseudo protocol number


icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF #Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation

h) /etc/services
Esse arquivo guarda todos os serviços que a máquina loval poderá usar, conhecido como
mapeamento de serviços. Cada serviços está disponibilizado em uma porta, que poderá estar ouvindo (listen)
pedidos de conexões de usuários. Caso você não queira disponibilizar um serviço momentaneamente mas
precisa da rede no ar, edite esse arquivo e comente “#” a linha do serviço que voce quer desabilitar naquele
momento. A seguir parte co arquivo, para que você entenda seu conteúdo pois ele é muito extenso. Exemplo:

# /etc/services:
# $Id: services,v 1.4 1997/05/20 19:41:21 tobias Exp $
#
# Network services, Internet style
#
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp
compressnet 2/tcp # Management Utility
compressnet 2/udp
compressnet 3/tcp # Compression Process
compressnet 3/udp
echo 7/tcp # Echo
echo 7/udp
...
systat11/tcp users # Active Users
systat11/udp users
...
ftp-data 20/udp
ftp 21/udp # File Transfer [Control]
ftp 21/tcp
#fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet23/tcp # Telnet
telnet 23/udp
#
#
smtp 25/tcp mail # Simple Mail Transfer
smtp 25/udp mail
sql*net 66/tcp # Oracle SQL*NET
sql*net 66/udp
bootps67/tcp # BOOTP server

170
Global Sul Informática

gopher70/tcp # Internet Gopher


gopher70/udp
...
finger 79/tcp # Finger
finger 79/udp
www-http 80/tcp www http # WorldWideWeb HTTP
www-http 80/udp www http
hosts2-ns 81/tcp # HOSTS2 Name Server
hosts2-ns 81/udp
...
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5
...
linuxconf 98/tcp # Linuxconf web interface
...
hostnames 101/tcp hostname # usually from sri-nic
hostnames 101/udp hostname
...
pop-2 109/tcp postoffice # POP version 2
pop-2 109/udp postoffice
pop-3 110/tcp pop3 # POP version 3
pop-3 110/udp
sunrpc111/tcp portmapper # RPC 4.0 portmapper TCP
sunrpc111/udp portmapper
...
ntp 123/tcp # Network Time Protocol
ntp 123/udp
...
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
sql-net 150/tcp # SQL-NET
sql-net 150/udp
...
vmnet 175/tcp # VMNET
vmnet 175/udp
...
https 443/tcp # MCom
https 443/udp # MCom
cups 631/tcp # cups
cups 631/udp
doom 666/tcp # doom Id Software
doom 666/tcp # doom Id Software
lotusnote 1352/tcp # Lotus Note
lotusnote 1352/udp # Lotus Note
linx 1361/tcp # LinX
linx 1361/udp # LinX
ms-sql-s 1433/tcp # Microsoft-SQL-Server
ms-sql-s 1433/udp # Microsoft-SQL-Server
ms-sql-m 1434/tcp # Microsoft-SQL-Monitor
ms-sql-m 1434/udp # Microsoft-SQL-Monitor
...
mysql 3306/tcp # (not in RFC1700) MySQL
mysql 3306/udp # (not in RFC1700) MySQL
...

Bom, acho que com esse arquivo exemplo já dá para entender como é que funciona, coisa que é
muito simples. Nesse arquivo cada coluna separada por uma tabulação ou por espaço, isso vai depender de
como você edita esse arquivo, significa o seguinte:
a) Coluna 1 – Nome do serviço: É o nome que o daemon (processo) usará quando estiver no ar.
b) Coluna 2 – Porta: Número de porta é como se fosse o número de uma casa em uma rua, sendo
o nome do sistema de computadores, o nome da rua. Normalmente, a porta é um número bem conhecido que
está associado a um serviço particular.
c) Coluna 3 – Protocolo: O protocolo especifica a forma através da qual o serviço pode ser
alcançado e como a comunicação entre o cliente e o servidor é efetuada. Geralmente isso é tcp para conexões
e udp para mensagens.

171
Treinamento Linux – Administração, Redes e Serviços

d) Coluna 4 – Aliases para serviço: O serviço pode ser conhecido por outros nomes. Eles são
especificados aqui.

DICA: As portas “conhecidas” vão até 1.024 depois dessas até a porta 65.535 você poderá usar a
porta que quiser e nomeá-las a gosto. Mas cuidado com programas que usam portas acima de 1.024
para que não entrem em conflito com as que você definir.

São exemplos de serviçõs de rede com suas respectivas portas:

Porta 21: FTP – transferência de arquivos.


Porta 23: Telnet – terminal virtual remoto.
Porta 25: Smtp – envio de e-mails.
Porta 53: DNS – resolvedor de nomes.
Porta 79: Finger – detalhes sobre usuários do sistema.
Porta 80: Http – www – transferência de páginas da web.
Porta 110: Pop-3 – recebimento de mensagens.

i) /etc/inetd.conf
Esse arquivo cuida dos serviços que são carregados para a memória somente quando são
solicitados. Há um processo (daemon) que é chamado inetd que lê as configurações deste arquivo e
permanece residente na memória, esperando pela conexão das máquinas clientes, se uma conexão é
solicitada, o daemon inetd verifica as permissões de acesso nos arquivos /etc/hosts.allow e /etc/hosts.deny e
carrega o programa servidor correspondente no arquivo /etc/inetd.conf. Um arquivo também importante
neste processo é o /etc/services que faz o mapeamento das portas e nomes dos serviços o qual nós já vimos.
Alguns programas servidores como é o caso de servidores ftp, telnet, talk, etc oferecem a opção
de serem executados como daemons ou através do do arquivo /etc/inetd.conf. É recomendável escolher inetd
se o serviço não for solicitado freqüentemente. Para habilitar um serviço, descomente a linha que ele se
encontra. Veja a seguir uma listagem desse arquivo:

...
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
#
# These are standard services.
#
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#pop3s stream tcp nowait root /usr/sbin/ipop3d ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#imaps stream tcp nowait root /usr/sbin/imapd imapd
#
...
...

172
Global Sul Informática

#
# Authentication
#
auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
#
# Linuxconf Web Interface:
#
linuxconf stream tcp wait root /bin/linuxconf linuxconf —http
#
# End of inetd.conf

Os módulos da interface de rede


No sistema Linux nós temos os módulos que podem ser “derrubados” e “levantados”, ou seja,
eles funcionam de modo semelhante aos “drivers” do ambiente Windows, mas com a diferença de que aqui
você pode usá-los apenas quando precisar realmente deles, tornando-se assim um melhor gerenciamento.
Por exemplo, se você só vai usar o zip-drive no final do expediente, por que então ficar com ele
carregado e gastando memória o dia inteiro? Levante-o apenas no fim da tarde e faça o seu backup,
entendeu?
Módulo kmod (KDE): Este é o programa usado para carregar os módulos automaticamente
quando são requeridos pelo sistema. Ele é um processo (daemon) que funciona constantemente fazendo a
monitoração. Quando verifica que algum dispositivo ou programa está solicitando o suporte a algum
dispositivo, ele carrega o módulo correspondente.
Exibindo informações sobre módulos
O relacionando de módulos é feito com o comando lsmod. Se você quiser saber quais módulos
estão carregados, basta usar o comando que relaciona quais módulos estão carregados atualmente pelo
kernel. A listagem feita pelo comando lsmod é uma alternativa ao uso do comando cat/proc/modules, onde
também você encontrará informações sobre módulos no seu sistema.
O diretório /proc não existe fisicamente gravado em seu sistema, ele é na verdade um diretório
“lógico” montado pelo kernel para gerenciamento de um monte de informações. Veja o comando lsmod em
ação:

Module Size Used by Not tainted


appletalk 23492 1 (autoclean)
ipx 19748 1 (autoclean)
sis900 14028 1 (autoclean)
nls_iso8859-1 3452 1 (autoclean)
nls_cp437 5084 1 (autoclean)
vfat 11404 1 (autoclean)
fat 34520 0 (autoclean) [vfat]
i810_audio 21896 0
soundcore 5892 2 [i810_audio]
ac97_codec 11880 0 [i810_audio]
w9968cf 19808 0 (unused)
videodev 7488 0 [w9968cf]
lvm-mod 57664 0
usb-ohci 18888 0 (unused)
usbcore 67904 1 [w9968cf usb-ohci]
ext3 60544 3
jbd 45524 3 [ext3]
ide-disk 11140 5
ide-probe-mod 9864 0
ide-mod 176192 5 [ide-disk ide-probe-mod]

A coluna Module indica o nome do módulo que está carregado; a coluna Size indica o tamanho
que esse módulo usará em memória; a coluna Used mostra quais módulos estão usando aquele recurso.
O parâmetro (autoclean) no final da coluna indica que o módulo foi carregado manualmente
através do comando insmod ou modprobe ou através do kmod, e será automaticamente removido da
memória quando não for mais usado.
O comando modinfo é útil para mostrar informação sobre um módulo do kernel e tem o seu
funcionamento entendido da seguinte maneira # modinfo [opções] <arquivo_de_módulo>.
Ele examina o arquivo objeto <arquivo_de_módulo> associado com um módulo do kernel e
mostra qualquer informação que ele possa reunir. Veja como usar o comando modinfo para extrair mais
informações do módulo cmpci, que é o módulo de uma placa de som CMI8339 on-board.

173
Treinamento Linux – Administração, Redes e Serviços

# modinfo cmpci
filename: /lib/modules/2.4.5-9cl/kernel/drivers/sound/cmpci.o
description: "CM8x38 Audio Driver"
author: "ChenLi Tien, cltien@cmedia.com.tw"
parm: mpu_io int, description "(0x330, 0x320, 0x310, 0x300) Base of MPU-401, 0 to
disable"
parm: fm_io int, description "(0x388, 0x3C8, 0x3E0) Base of OPL3, 0 to disable"
parm: spdif_inverse int, description "(1/0) Invert S/PDIF-in signal"
parm: spdif_loop int, description "(1/0) Route S/PDIF-in to S/PDIF-out directly"
parm: speakers int, description "(2-6) Number of speakers you connect"
parm: use_line_as_rear int, description "(1/0) Use line-in jack as rear-out"
parm: use_line_as_bass int, description "(1/0) Use line-in jack as bass/center"
parm: joystick int, description "(1/0) Enable joystick interface, still need joystick
driver"

Os módulos no sistema Linux são arquivos já compilados que têm extenção “.o”; por exemplo o
arquivo “cmpci.o” é um arquivo de módulo e quando ele não está compilado geralmente tem como extensão
“.c”, ou seja, arquivo de programa fonte em linguagem C. Outro comando útil é o lspci que exibe uma listagem
do seu hardware pci:

00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0740 (rev 01)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] 5591/5592 AGP
00:02.0 ISA bridge: Silicon Integrated Systems [SiS]: Unknown device 0962 (rev 25)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE]
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] SiS7012 PCI Audio
Accelerator (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS]: Unknown device 7002
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet
(rev 91)
00:0e.0 Communication controller: Lucent Microelectronics: Unknown device 048c (rev 02)
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS]: Unknown device 6325

Removendo módulos
Para remover um módulo do sistema é super-simples; primeiro você deverá usar o comando
lsmod para saber o nome do módulo e depois usar o comando rmmod <módulo> para que o módulo seja
removido da memória. Veja exemplos:

# rmmod cmpci
# rmmod rtl8139
# rmmod ne2k

Inserindo módulos
O comando insmod carrega um módulo manualmente. Para carregar módulos que dependem de
outros módulos para que funcionem, você tem duas opções: carregar os módulos manualmente ou usar o
modprobe que verifica e carrega as dependências correspondentes. O comando insmod funciona da seguinte
maneira insmod [módulo] [opções_módulo]. Onde: módulo: É o nome do módulo que será carregado.
Onde opções_módulo: Opções que serão usadas pelo módulo. Variam de módulo para módulo,
alguns precisam de opções outros não, tente primeiro carregar sem opções; caso seja mostrada uma
mensagem de erro verifique as opções usadas por ele. Exemplo:

# insmod ne io=0x300 irq=10


# rmmod cmpci
# rmmod rtl8139

Carregando módulos
O comando modprobe carrega um módulo e suas dependências manualmente. Esse comando
permite carregar diversos módulos e dependências de uma só vez. O comportamento do comando modprobe
é modificado pelo arquivo /etc/modules.conf, o qual você poderá verificar na listagem a seguir:

alias parport_lowlevel parport_pc


alias block-major-58 lvm-mod

174
Global Sul Informática

alias block-major-109 lvm-mod


alias block-major-43 off
alias loop0 loop
alias char-major-108 ppp_generic
alias /dev/ppp ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias ppp ppp_async
alias rtl8139 8139too
alias autofs autofs4
alias sound-slot-0 i810_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1
alias usb usb-ohci
alias eth0 sis900

O comando modprobe funciona da seguinte maneira modprobe [módulo] [opções_módulo].


Onde módulo: É o nome do módulo que será carregado.
opções_módulo: Opções que serão usadas pelo módulo e também variam de módulo para
módulo. Alguns precisam de opções outros não; tente primeiro carregar sem opções. Caso seja mostrada uma
mensagem de erro verifique as opções usadas por ele.

DICA: Nem todos os módulos são carregados corretamente pelo comando modprobe. O módulo plip,
por exemplo, mostra uma mensagem sobre porta I/O inválida; mas não mostra no caso de ser
carregado pelo comando insmod. Exemplo: modprobe ne io=0x300 irq=10; modprobe sb io=0x220
irq=5 dma=1 dma16=5 mpuio=0x330.

Verificando dependência de módulos


O comando depmod verifica a dependência de módulos. As dependências dos módulos são
verificadas pelos scripts em /etc/init.d usando o comando depmod -av e o resultado gravado no arquivo /lib/
modules/versão_do_kernel/modules.dep. Essa checagem serve para que todas as dependências de módulos
estejam corretamente disponíveis na inicialização do sistema. O comportamento do depmod pode ser
modificado através do arquivo /etc/modules.conf.
Exemplo depmod -av. Isso executará uma verificação completa de dependência de módulos no
seu sistema Linux e isso poderá chegar a dezenas de linhas, mas fique tranquilo: tudo isso é muito rápido,
pode chegar a uns cinco segundos no máximo.
Configuração de módulos
O comando modconf permite um meio mais fácil de configurar a ativação de módulos e opções
através de uma interface através de menus. Selecione a categoria de módulos através das setas acima e
abaixo e pressione Enter para selecionar os módulos existentes. Serão pedidas as opções do módulo (como
DMA, IRQ, I/O) para que sua inicialização seja possível.
O comando modconf apresenta uma auto-detecção, mas isso deixa o sistema um pouco mais
lento, porque ele fará uma varredura na faixa de endereços especificados pelo módulo para achar o
dispositivo.

Configurando no braço
Vamos começar logo então? Vamos começar pelo micro 01. Vamos fazer um passo-a-passo, tudo
que você fizer, faça no micro 02 também mas lembre-se que se você colocar um gateway, esse gateway é do
micro 01, caso queria poderá usar o comando netconfig para lhe ajudar a setar mais rapidamentes os IPS dos
micros. Vamos ao passo a passo:
1. Edite o arquivo /etc/hosts e coloque as seguintes informações, que são o IP da sua máquina
(loopback), a IP da inteface de rede eth0 e o IP do outro micro, pois a procura por máquina será feita
iniciando-se por esse arquivo, acompanhe:

127.0.0.1 localhost
10.6.12.250 adilson.hackers.net adilson # Dad
10.6.12.150 gabriel.hackers.net gabriel # Son

175
Treinamento Linux – Administração, Redes e Serviços

2. Se você pretender usar a Internet (duvido que não vá), edite o arquivos /etc/resolv.conf:

# Para a máquina que estiver como servidor na rede


# No nosso caso pode ser o micro 01 IP: 10.6.12.250
search seu.provedor.com.br
nameserver IP.seu.provedor.com.br

# Somente para as máquinas que estiverem como clientes


# No nosso caso pode ser o micro 02 IP: 10.6.12.150
search adilson.hackers.net # Nome do servidor
nameserver 10.6.12.150 # IP do servidor

3. Agora edit o arquivo /etc/HOSTNAME, ele guarda o nome + domínio de sua máquina para
que, quando você digitar o comando hostname ele devolva o seu nome. Faça isso para cada máquina,
colocando o mesmo domínio para todas mas um nome distinto para cada uma.

adilson.hackers.net

4. Vamos para o quarto? Eu estou falando do quarto arquivo. :-) Edite o arquivo /etc/sysconfig/
network. Lembra? Esse arquivo tem uma função similar ao arquivo /etc/hosts. No nosso exemplo, desejamos
a rede no ar, o micro 02 já tem nome e domínio, e ele aponta para o micro 01 que vai servir de gateway.

NETWORKING=yes
# FORWARD_IPV4=no # Não é mais usado.
HOSTNAME="gabriel.hackers.net" # Esse é o micro 02
GATEWAY="10.6.12.1"
GATEWAYDEV="eth0"

5. Verifique agora com o comando ifconfig. Se for necessário use os comandos ifconfig lo up;
ifconfig eth0 up. Você também poderá configurar diretamente como comando ifconfig conforme o exemplo
de configuração com o comando ifconfig:

# ifconfig eth0 10.6.12.150 netmask 255.0.0.0 broadcast 10.255.255.255 up

6. Se for preciso “levante” a rede com os comandos:


/etc/rc.d/init.d/inet start
/etc/rc.d/init.d/network start

7. Faça o mesmo procedimento para o segundo micro tomando o cuidade de mudar o IP deste e
se for colocar um gateway, faça com que ele aponte para o gateway do primeiro micro. Depois diso faça pings
em ambas as máquinas e não esqueça de habilitar os serviços e protocolos que você for usar nos arquivos
/etc/service e /ect/protocols. Viu que fácil?
Vamos pingar agora:

# ping -c5 gabriel.hackers.net


PING gabriel.hackers.net (10.6.12.250): 56 data bytes
64 bytes from 10.6.12.250: icmp_seq=0 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=1 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=2 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=3 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=4 ttl=64 time=0.0 ms

— gabriel.hackers.net ping statistics —-


5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

[root@gabriel root]# ping -c5 10.6.12.250


PING 10.6.12.250 (10.6.12.250): 56 data bytes
64 bytes from 10.6.12.250: icmp_seq=0 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=1 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=2 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=3 ttl=64 time=0.0 ms
64 bytes from 10.6.12.250: icmp_seq=4 ttl=64 time=0.0 ms

176
Global Sul Informática

— 10.6.12.250 ping statistics —-


5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

Se você quiser ver a tabela de roteamento use o comando netstat -rn, assim:

Tabela de Roteamento IP do Kernel


Destino Roteador MáscaraGen. Opções MSS Janela irtt Iface
10.6.12.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
0.0.0.0 10.6.12.1 0.0.0.0 UG 40 0 0 eth0

8. OK! Vai ter roteamento entre as duas máquinas? Seria interessante se tivesse mais máquinas,
mas tudo bem. O processo de roteamento é muito simples: um datagrama, ou seja, um pacote IP é recebido, o
endereço de destino, para quem ele vai ser entregue, é examinado e comparado com cada item da tabela de
roteamento. O item que mais corresponder com o endereço é selecionado e o datagrama é direcionado a
interface especificada.
Se o campo gateway estiver preenchido, então o datagrama é direcionado para aquele
computador pela interface especificada, caso contrário o endereço de destino é assumido sendo uma rede
suportada pela interface. Para saber se há um gateway padrão use o comando route -n.
Para adicionar uma rota é simples e podemos fazer através do co mando route. Para
adicionarmos então essa rota para a rede 10.6.12.1 e torná-la acessível através da interface eth0 basta digitar
o comando:

route add -net 10.6.12.1 eth0

Caso você desejar apagar essa rota apenas troque o add pelo del. O parâmetro -net quer dizer
que 10.6.12.1 é um endereço de rede, porém se você quiser especificar uma máquina de destino, use o
parâmetro -host.
Para adicionar uma rota padrão para um endereço que não se encontre na tabela de roteamento,
deveremos usar o gateway padrão da rede porque através dele, o gateway padrão, é possível especificar um
computador (normalmente outro gateway) que os pacotes de rede serão enviados caso o endereço não confira
com os da tabela de roteamento.
Para especificar o computador 10.6.12.250 como gateway padrão usamos, com o comando que já
tínhamos, usamos:

route add -net 10.6.12.0 eth0


route add default gw 10.6.12.1 eth0

Se você der uma olhada dentro do /etc/sysconfig/network-scripts poderá perceber que existem
vários arquivos de scripts destinado à tarefas de rede, eles são:

chat-ppp0: Conexão discada ppp via padrão chat.


if-down.d, if-up.d: Script para levantar de derrubar.
ifcfg-eth0, ifcfg-eth0.OLD: Arquivo de configuração da interface eth0.
ifcfg-lo: Arquivo de configuração do loopback.
ifcfg-ppp0: Arquivo de configuração de acesso dicado ppp0.
ifdown, ifup: Script para derrubar e levantar interfaces.
ifdown-ppp: Script para derrubar o ppp.
ifup-aliases: Arquivo de configuração dos aliases.
ifup-ipx, ifup-plip, ifup-post
ifup-ppp: Arquivo de configuração para levantar o ppp.
ifup-routes: Arquivo de configuração para levantar as rotas.
network-functions: Scripts que guarda funções executáveis de rede.

Monitoramente de rede

177
Treinamento Linux – Administração, Redes e Serviços

Como já vimos anteriormente, para verificarmos o tráfego em nossa rede via modo texto
poderemos usar o comando tcpdump, que nos informará os pacotes que estão trafegando por ela, também
podemos usar o iptraf que informa quais máquinas estão trocando informações. O trafshow que informa de
onde veio, o endereço, a porta e quanto já foi efetuado da transferência. Mas existe também um outro
programa muito interessante para fazer análise em tempo real do que está passando pela nossa rede. O
programa netpeek é muito interessante, pois oferece uma série de tipos de verificações, como pings na rede,
host lookup (pesquisa em DNS), verificar a interface de rede, atividades TCP e UDP, domínio Unix, verificar
tabelas de roteamento verificar tabelas ARP e serviços RPC (NFS).
Um outro comando interessante de ser usado é o comando netstat que nos fornece uma estatísca
de nossa rede, ou seja, ele mostra conexões de rede, tabela de roteamento, estatísticas de interfaces, conexões
masquerade e mensagens.
Se não for especificada nenhuma opção, os detalhes das conexões atuais serão mostrados ou
você poderá passar os parâmetros que precisar conforme a listagem a seguir:

Tabela de Roteamento IP do Kernel


Destino Roteador MáscaraGen. Opções MSS Janela irtt Iface
10.6.12.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
0.0.0.0 10.6.12.1 0.0.0.0 UG 40 0 0 eth0

O comando nmap: O comando nmap é uma ferramenta de exploração e escaneamento de


informações de redes, ele é muito útil quando queremos “xeretar” um IP qualquer, porque ele nos devolve
informações preciosas, como: nome do sistema operacional em uma máquina remota, quais portas estão
abertas etc.

# nmap -O 10.0.0.5
Starting nmap V. 2.54BETA21 ( www.insecure.org/nmap/ )
Insufficient responses for TCP sequencing (3), OS detection may be less accurate
Insufficient responses for TCP sequencing (3), OS detection may be less accurate
Insufficient responses for TCP sequencing (3), OS detection may be less accurate
Interesting ports on adilson.hackers.net (10.2.12.250):
(The 1532 ports scanned but not shown below are in state: closed)
Port State Service
21/tcpopen ftp
22/tcpopen ssh
23/tcpopen telnet
98/tcpopen linuxconf
513/tcp open login
514/tcp open shell
515/tcp open printer
901/tcp open samba-swat
1024/tcp open kdm
6000/tcp open X11

No exact OS matches for host (If you know what OS is running on it, see
http://www.insecure.org/cgi-bin/nmap-submit.cgi).
TCP/IP fingerprint:
SInfo(V=2.54BETA21%P=i686-pc-linux-gnu%D=12/
...
Uptime 0.007 days (since Wed Dec 12 09:35:20 2001)
Nmap run completed -- 1 IP address (1 host up) scanned in 6 seconds

Agora se você quiser realmente analisar o que se passa pela sua rede poderá usar o ethereal que
vem com a maioria das distribuições. Ele é muito interessante pois permite capturar e analizar todos os
pacotes que passa pela sua rede.

178
Global Sul Informática

Anotações:

179
Treinamento Linux – Administração, Redes e Serviços

Anotações:

180
Global Sul Informática

Capítulo 10

NFS - Cliente e Servidor


Neste capítulo aprenderemos como configurar um servidor e um cliente NFS e vamos descobrir
que isso é muito fácil de fazer. Há também uma pequena passagem sobre segurança, que será técnica, e vai
exigir alguns conhecimentos sobre redes TCP/IP e outros termos usados.
Do mesmo modo que você pode compartilhar arquivos em uma rede Windows usando o
protocolo SMB, aqui em ambiente Unix/Linux e demais variantes, nós podemos fazer também através do
NFS e então depois de tudo configurado e definido como serão os acessos, para entrar em qualquer ponto de
montagem é igual a um ponto qualquer e até parece que o diretório é da nossa máquina; mas na verdade ele
pode estar em uma outra máquina de sua rede local ou até mesmo ser um ponto em uma máquina remota
que estiver na Internet.
Porém, vale lembrar que o tempo de acesso e de resposta é o tempo da velocidade da rede ou de
sua conexão que pode ser lento ou rápido. Porém como hoje em dia redes de 100 Mbps é comum assim como
a banda larga, quase não percebemos a diferença.

DICA: Para saber mais leia o networking-HOWTO, ou pode adquirir um livro sobre administração de
rede TCP/IP para se familiarizar com os protocolos TCP/IP.

Como configurar clientes e servidores NFS


Já sabemos que o NFS é um sistema para compartilhamento de arquivos de rede. Serviço de
rede que permite o compartilhamento transparente de sistemas de arquivos ou diretórios entre os nós de uma
rede. Implementado usando RPC – Remote Procedure Call, cujos protocolos são descritos usando XDR –
eXternal Data Representation.
Antes de mais nada, NFS tem três importantes características:

a) Faz o compartilhamento de arquivos em uma rede,


b) Funciona bem o suficiente para você poder trabalhar e
c) Abre brechas na segurança, que são bem compreendidas pelos crackers e facilmente
exploradas para conseguir acesso aos seus arquivos (para ler, escrever e apagar).

Configurando um servidor NFS


Pré-requisitos: Antes disso precisaremos ser capazes de executar um telnet entre a máquina que
está configurada como servidor e a máquina configurada como cliente; então, a nossa rede precisa estar
configurada corretamente, estar no ar e operante.
Primeiros passos: Antes que possamos fazer qualquer coisa, precisamos de um servidor de NFS
configurado. Depois que você definir a política de exportação via NFS em sua rede, é aconselhável que você
deixe isso automático na hora da inicialização do seu servidor. Isso é feito através do comando ntsysv ou
editando os arquivos de inicialização local.

Os daemons (processos) que você deverá marcar no ntsysv são:

181
Treinamento Linux – Administração, Redes e Serviços

1. netfs: Monta e desmonta todos os pontos de montagem NFS, SMB (Lan Manager/Windows) e
NCP (NetWare).

2. nfs: O NFS é um protocolo popular para compartilhar arquivos através de redes


TCP/IP. Este serviço provê a funcionalidade de um servidor NFS, que é configurado
através do arquivo /etc/exports.

3. nfslock: Este serviço provê a funcionalidade de bloqueio de arquivos (file locking).

4. portmap: O portmapper gerencia conexões RPC, que são usadas por protocolos como NFS e
NIS. O servidor portmap deve estar executando em máquinas com servidores para protocolos
que usem o mecanismo RPC.

Esse daemons (processos) são na verdade shell scripts para verificar se é possível colocar um
servidor NFS no ar. Vamos ver aqui onde estão cada um deles e como são esses shell scripts. Se você não sabe
programar ou não entende nada de shell scripts, não tem importância, pois eles já estão prontos e foram
colocados aqui para que você obtenha mais conhecimento técnico da situação. Vamos localizar o primeiro,
que é o netfs:

/etc/rc.d/init.d/netfs
/etc/rc.d/rc0.d/K75netfs
/etc/rc.d/rc1.d/K75netfs
/etc/rc.d/rc2.d/K75netfs
/etc/rc.d/rc3.d/S25netfs
/etc/rc.d/rc4.d/S25netfs
/etc/rc.d/rc5.d/S25netfs
/etc/rc.d/rc6.d/K75netfs
/var/lock/subsys/netfs

Você poderá perceber aqui que para cada nível de inicialização (runlevel) do sistema temos um
netfs e que o arquivo principal está em /etc/rc.d/init.d/netfs e que para ele nós podemos passar os seguintes
parâmetros: {start|stop|restart|reload|status}.
Se você tem conhecimentos de programação em shel script poderá ver o conteúdo com o
comando cat /etc/rc.d/init.d/netfs, e ainda poderá personalizar algumas mensagens que estão em Inglês.
Também poderá ver o o conteúdo do outro shell script com o comando cat /etc/rc.d/init.d/nfs. É
esse script que você deverá “levantar” depois de “levantar” o portmap. Do mesmo modo que você tem o netfs
para os níveis de inicialização (runlevel), também tem o portmap para esses níveis. Use o comando locate
para encontrar os arquivos do portmap ou também podemos passar os parâmetros: {start|stop|restart|
reload|status}.

/usr/share/doc/portmap-4.0
/usr/share/doc/portmap-4.0/BLURB
/usr/share/doc/portmap-4.0/CHANGES
/usr/share/doc/portmap-4.0/README
/usr/share/man/man8/portmap.8.gz
/etc/rc.d/init.d/portmap
/etc/rc.d/rc0.d/K89portmap
/etc/rc.d/rc1.d/K89portmap
/etc/rc.d/rc2.d/K89portmap
/etc/rc.d/rc3.d/S11portmap
/etc/rc.d/rc4.d/S11portmap
/etc/rc.d/rc5.d/S11portmap
/etc/rc.d/rc6.d/K89portmap
/lib/modules/2.4.21-28872cl/modules.parportmap
/var/lock/subsys/portmap
/sbin/portmap

Criando os locais para montagem NFS


No servidor você poderá adicionar o arquivo /etc/exports, que é o arquivo que vai guardar os
volumes e quem poderá montar esses volumes via rede. Os volumes poderão ser exportados para uma
máquina específica, uma faixa da rede (intranet) ou para todo mundo (Internet).
Porém, cuidado em exportar para todo mundo, pois é possível montar um volume NFS via
Internet e acessá-lo como se fosse um volume local e se por ventura dentro desse volume o usuário que

182
Global Sul Informática

montou tiver poder para executar programas e se tiver algum programa que roda com SUID root, ou seja, o
programa vai rodar com poderes do usuário root e isso poderá significar tragédias em seu sistema. O modo
mais rápido e simples de adicionarmos a configuração no arquivo /etc/exports é:

# echo “/usr/mp3/ /mnt/mp3 (ro) # músicas em mp3” > /etc/exports


# echo “/usr/jpg/ /mnt/jpg (ro) # fotos em jpg” >> /etc/exports

Claro, se você tiver muita coisa para adicionar nesse arquivo é melhor editá-lo com seu editor de
textos preferido.

/ amigos(rw) hackers (rw,no_root_squash)


/home/adilson/fotos amigos(ro) hackers (no_root_squash)
/home/adilson/mp3 musicas*.local.domain(rw)
/home/sonizia/doc 10.6.12.250(ro) @amigos(rw)
/home/luzia/trabalhos/ 10.6.12.33(rw)
/home/universidade/odonto *.odonto.net.br(rw)
/home/universidade/sistemas *.sistema4.net.br(rw)
/home/universidade/direito *.direitro3.net.br(rw)
/home/universidade/jornalismo *.jornalismo2.net.br(ro)

Analisando o arquivo exemplo:


A primeira linha exporta o sistema inteiro (isso é muito perigoso) para as máquinas “amigos”
que pode ler e gravar (rw) e para a máquina “hackers” com poder de ler e gravar, mas o usuário root não pode
executar programas (rw, no_root_squash).
A segunda exporta o diretórios de fotos do usuário adilson para as mesmas máquinas mas
tomando-se os devidos cuidados.
A terceira e quarta linha nos mostra que podemos usar coringas “*” e efetuar uma exportação
para um dominio local interno, nesse caso provavelmente para troca de arquivos mp3.
A quinta linha define a exportação para uma máquina específica por IP e pra um grupo de
usuários. Exceto para o grupo de usuários que podem efetuar atualizações (rw) toda a máquina somente
poderá ler (ro).
A sexta linha é semelhante a linha anterior mas refere-se a todas as máquinas do domínio
.contabil.net.br e que pode efetuar atualizações (rw).
A sétima linha é para uma máquina específica por IP e com atualizações (rw).
A oitava, nona e décima linha é semelhante à sexta linha e a décima primeira linha também é
semelhante mas o pessoal do jornalismo só vai poder pesquisar (ro), ou seja, somente leitura.

O portmapper
O portmapper no Linux é chamado de portmap ou rpc.portmap. Sua página do manual do
sistema diz que ele é a DARPA port to RPC program number mapper. Esta é a primeira falha na segurança
que você conhecerá lendo este capítulo. Algumas maneiras de sanar essas falhas estão na seção de segurança.
Inicie o portmapper. Ele tem o nome de portmap ou rpc.portmap e deveria estar no diretório
/usr/sbin (em algumas máquinas tem o nome rpcbind). Poderemos iniciar o portmapper manualmente, mas
será preciso iniciá-lo toda vez que sua máquina for inicializada, para que isso seja feito automaticamente você
precisará fazer ou editar um script rc.
Os scripts rc estão explicados na página init do manual, normalmente eles ficam no diretório
/etc/rc.d, ou /etc/init.d ou /etc/rc.d/init.d. Se existir algum script com o nome parecido com inet,
provavelmente é o script certo a ser editado. Mas o que fazer no script está fora do contexto deste capítulo.
Inicie o portmap e verifique se está rodando usando ps aux. Veja como fazer isso:

[root@gabriel /]# /etc/rc.d/init.d/portmap start


Iniciando portmapper: [ OK ]

[root@gabriel /]# ps -aux | grep portmap


bin 1414 0.0 0.1 1532 408 ? S 06:32 0:00 [portmap]
root 1422 0.0 0.3 1852 724 pts/0 S 06:32 0:00 grep portmap

183
Treinamento Linux – Administração, Redes e Serviços

Mountd e nfsd
Os próximos programas que nós precisaremos executar são mountd e nfsd, mas antes nós
precisaremos editar outro arquivo: o /etc/exports.
Suponhamos que eu queira compartilhar o meu sistema de arquivo /home/adilson/fotos da
máquina adilson.hackers.net com a máquina gisele.hackers.net com direitos de leitura e gravação no local.
Então, deveremos colocar a seguinte linha de comando no arquivo/etc/exports da máquina
adilson.hackers.net:

...
/home/adilson/fotos gisele.hackers.net(rw)

A linha acima dá a gisele.hackers.net acesso de leitura e escrita em /home/adilson/fotos. Em vez


de (rw) poderíamos ter colocado (ro), o que significaria somente de leitura. Depois que o portamap foi
inicializado agora é a vez de inicializar o nfs:

[root@gabriel /]# /etc/rc.d/init.d/nfs start


Iniciando quotas (NFS) [ OK ]
Iniciando mountd (NFS) [ OK ]
Iniciando statd (NFS) [ OK ]
Iniciando nfsd (NFS) [ OK ]
Iniciando os serviços NFS: [ OK ]

Verifique com o comando a seguir:

[root@gabriel /]# ps -aux | grep nfs


root 1475 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1476 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1477 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1480 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1481 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1482 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]
root 1483 0.0 0.0 0 0 ? SW 06:32 0:00 [nfsd]

E agora usaremos o comando ps -aux | grep rpc para verificar as chamadas rpc:

[root@gabriel /]# ps -aux | grep rpc


root 1435 0.0 0.3 1940 840 ? S 06:32 0:00 rpc.rquotad
root 1448 0.0 0.2 1568 520 ? S 06:32 0:00 rpc.mountd
root 1461 0.0 0.3 1596 696 ? S 06:32 0:00 rpc.statd
root 1479 0.0 0.0 0 0 ? SW 06:32 0:00 [rpciod]

Use também o comando rpcinfo -p 10.6.12.250, que nesse caso é a máquina servidora para ver
como é que está sendo usado os protocolos.

[root@gabriel /]# rpcinfo -p 10.6.12.250


programa versão protocolo porta
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 764 rquotad
100011 2 udp 764 rquotad
100011 1 tcp 767 rquotad
100011 2 tcp 767 rquotad
100005 1 udp 32768 mountd
100005 1 tcp 32768 mountd
100005 2 udp 32768 mountd
100005 2 tcp 32768 mountd
100005 3 udp 32768 mountd
100005 3 tcp 32768 mountd
100024 1 udp 32769 status
100024 1 tcp 32769 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100021 1 udp 32770 nlockmgr

184
Global Sul Informática

100021 3 udp 32770 nlockmgr


100021 4 udp 32770 nlockmgr
100021 1 tcp 32770 nlockmgr
100021 3 tcp 32770 nlockmgr
100021 4 tcp 32770 nlockmgr

Se não for especificado nada para a exportação NFS, por padrão, o acesso será somente de
leitura (ro). Existem outras opções que podemos usar: vamos discutir sobre a segurança dessas opções mais
adiante. Essas opções estão todas listadas na página de manual do comando exports, a qual você que quer
aprender a usar NFS já deveria ter lido pelo menos três vezes.
Use o comando showmount -e para saber o que está exportado e quem poderá usar. Isso pode
ser feito na máquina cliente e na máquina servidor.

[root@gabriel /]# showmount -e


Export list for gabriel.hacker.net:
/home/gabriel/mp3 musicas*.local.domain
/home/adilson/mp3 musicas*.local.domain
/home/gilmara/planilhas *.contabil.net.br
/home/universidade/odonto *.odonto.net.br
/home/universidade/direito *.direitro3.net.br
/home/universidade/sistemas *.sistema4.net.br
/home/universidade/jornalismo *.jornalismo2.net.br
/home/sonizia/doc @amigos,gabriel.hacker.net
/home/luzia/trabalhos/ 10.6.12.33

O showmount tem os seguintes parâmetros que você poderá usar:

-a ou --all: Lista todas as máquina cliente e seus pontos de montagem.


-d ou --directories: Lista apenas alguns diretórios montados por alguns clientes.
-e ou --exports: Mostra a lista de exportação do servidor NFS.

Veja a saída com esses parâmetros:

[root@gabriel /]# showmount -a


All mount points on gabriel.hacker.net:

[root@gabriel /]# showmount -d


Directories on gabriel.hacker.net:

Veja como é que ficaria o arquivo /etc/fstab:

/dev/hda5 / ext3 defaults 1 0


/dev/hda6 swap swap defaults 0 0
/dev/hda7 /home ext3 defaults 1 0
/dev/hda8 /usr ext3 defaults 1 0
/dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0
/dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda1 /mnt/winxp vfat user,owner,exec,dev,suid,rw 1 1
gabriel.hackers.net:/home/gabriel/mp3 /mnt/gabriel/mp3 nfs
user,owner,noexec,nodev,nosuid,ro 1 1

adilson.hackers.net:/home/adilson/fotos /mnt/adilson/fotos nfs


user,owner,exec,dev,suid,ro,soft 1 1

ufo.com.br:/home/fotos/ufos /mnt/ufos/fotos
nfs exec,dev,suid,rw 1 1

Como você pode constatar temos algumas coisas nova nesse arquivo mas que são simples de
serem entendidas, vamos a elas pegando a linha da máquina do gabriel:

gabriel.hackers.net:/home/gabriel/mp3 /mnt/gabriel/mp3

185
Treinamento Linux – Administração, Redes e Serviços

É o nome da máquina mais (:) o seu ponto de exportação e para a máquina cliente o seu ponto
de importação.

nfs user,owner,noexec,nodev,nosuid,ro 1 1

É o tipo de sistema de arquivo que no nosso caso será NFS, pode ser montado pelo usuário, pode
ser montado pelo dono do dispositivo, não poderá ser executado programas aqui, sem dispositivos especiais,
não executa programas com suid root, é somente para leitura e com as checagem de montagem na
inicialização. Viu só como não tem muito mistério?
Somente para lembrar, há também melhores maneiras para listar todos as máquinas que estão
no arquivo /etc/exports. Por exemplo, podemos usar grupos de rede. Mas se estivermos usando NIS (ou NYS,
o NIS era conhecido como YP – Yellow Pages, páginas amarelas) e sempre especifica o domínio de placas e
subredes IP como máquinas que têm permissão para montar algo, devemos considerar que alguém pode
conseguir acesso ao servidor sem autorização pelo uso dessas autorizações gerais.
O arquivo /etc/exports não tem a mesma sintaxe usada em outros Unixes. Ele se apresenta um
pouco diferente em máquinas Solaris, FreeBSD, QNX etc. Mas é fácil de ser compreendido.
Agora nós iniciaremos o mountd (que também pode se chamar rpc.mountd) e então o nfsd (que
pode se chamar rpc.nfsd). Ambos ‘lerão’ o arquivo /etc/exports. Se editarmos o arquivo /etc/exports teremos
que fazer o nfsd e o mountd “saberem” que o arquivo foi mudado. A maneira tradicional é rodar o comando
exportfs. Mas em várias distribuições do Linux o programa exportfs não está presente. Se você não tem o
exportfs pode instalar o seguinte script em sua máquina:

#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo “Ok! Sistema de arquivos re-exportado.”

Grave-o em /usr/sbin/exportfs, e não se esqueça de configurar as permissões com o comando


chmod a+rx. Agora, toda vez que você mudar o arquivo exports, deverá executar, como root, o script exportfs
depois. Agora você deve verificar se o mountd e nfsd estão rodando apropriadamente. Primeiro com o
comando rpcinfo -p, que deve mostrar algo desse tipo:

[root@gabriel /]# rpcinfo -p 10.6.12.250


programa versão protocolo porta
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 764 rquotad
100011 2 udp 764 rquotad
100011 1 tcp 767 rquotad
100011 2 tcp 767 rquotad
100005 1 udp 32768 mountd
100005 1 tcp 32768 mountd
100005 2 udp 32768 mountd
100005 2 tcp 32768 mountd
100005 3 udp 32768 mountd
100005 3 tcp 32768 mountd
100024 1 udp 32769 status
100024 1 tcp 32769 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100021 1 udp 32770 nlockmgr
100021 3 udp 32770 nlockmgr
100021 4 udp 32770 nlockmgr
100021 1 tcp 32770 nlockmgr
100021 3 tcp 32770 nlockmgr
100021 4 tcp 32770 nlockmgr

Como podemos ver, o portmapper anunciou os serviços, e assim temos o mountd e o nfsd. Se o
rpcinfo retornou a mensagem: “Can’t contact portmapper: RPC: Remote system error – Connection refused”
ou algo similar, então o portmapper não está rodando. Faça funcionar. Se o rpcinfo retornou: “No remote
programs registred”, então o portmapper não quer falar com você, ou algo está falhando. Então pare o nfsd, o
mountd, e o portmapper e tente novamente a seqüência desde o início.

186
Global Sul Informática

Depois de verificar que o portmapper relata os serviços (mountd e nfsd), você pode verificar se
eles estão rodando com comando ps também. Porque o portmapper continua relatando os serviços mesmo
depois que os programas terminaram. Então, uma verificação com comando ps é uma coisa inteligente se
algo está falhando. Também poderemos usar o comando top ou em modo gráfico o ktop, gtop, kpm etc., todos
eles nos informam situações com processos.
É claro que precisaremos modificar os scripts rc´s para iniciar o mountd e o nfsd, bem como o
portmapper no boot da máquina ou então configurá-los através do linuxconf. É provável que os scripts já
existam em sua máquina, você deve descomentar ou ativar a seção correta do runlevel. As páginas portmap,
mountd, nfsd e exports do man devem ser familiares agora. Bem, se foi feito tudo exatamente do modo
correto deveremos estar com tudo configurado para iniciar o cliente NFS.
Há um comando muito útil, o nfsstat que carrega e exibe informações atuais do Kernel NFS.
Essas informações (estatísticas) apenas são suportadas do lado do servidor devido ao fato de máquinas
cliente não coletarem dados ainda. A seguir temos algumas opções que podemos usar:

-s: Exibe estatísticas do lado servidor e da máquina cliente.


-c: Exibe informações apenas do lado cliente.
-n: Exibe apenas informações estatísticas do NFS e informações RPC.
-r: Exibe apenas informações estatísticas do RPC.

Configurando o cliente NFS


Para configurarmos os clientes NFS, primeiro precisaremos de um kernel com suporte a sistema
de arquivo NFS ou compilado para suportá-lo como módulo. Isso é configurado antes de compilarmos o seu
kernel.
Agora poderemos, como root, entrar com o comando mount apropriado e o sistema de arquivo
“aparecerá”. Continuando o exemplo da seção anterior, onde nós queríamos montar o /home/adilson/fotos
da máquina adilson.hackers.net para a máquina gisele.hackers.net. A linha de comando para isso, que deve
ser executada na máquina trzciak, é:

# mount -o rsize=1024,wsize=1024 adilson:/home/bonan


/mnt/gisele/fotos

Veja a seguir um pequeno exemplo de um arquivo /etc/fstab que guarda a máquina e os devidos
pontos de exportação:

...
gabriel.hackers.net:/home/gabriel/mp3 /mnt/gabriel/mp3 nfs
user,owner,noexec,nodev,nosuid,ro 1 1

adilson.hackers.net:/home/adilson/fotos /mnt/gisele/fotos
nfs user,owner,exec,dev,suid,ro,soft 1 1

ufo.com.br:/home/fotos/ufos /mnt/ufos/fotos
nfs exec,dev,suid,rw 1 1

Nós voltaremos a discutir as opções rsize e wsize. Agora o sistema de arquivo está disponível
em /mnt/gisele/fotos da máquina gisele.hackers.net e poderemos entrar com cd, usar o ls e ver cada arquivo
individualmente.
Perceberemos que não é tão rápido como um sistema de arquivo local, mas é bem mais
conveniente que o ftp, que depois de um certo tempo tende a ficar inativo ou se tiver muito fluxo pela rede
fica muito lento rapidamente. Se em vez da montagem do sistema de arquivo, o comando mount produzir
uma mensagem de erro do tipo:

“adilson.hackers.net:/home/adilson/fotos failed, reason given by server: Permission


denied”,

...então o arquivo /etc/exports está errado ou foi esquecido de executar o comando exportfs
depois que o arquivo foi modificado. Se a mensagem de erro retornada pelo comando mount for algo do tipo:

“mount clntudp_create: RPC: Program not registered”

187
Treinamento Linux – Administração, Redes e Serviços

...isso significa que o nfsd ou o mountd não está rodando no servidor. Para desmontar o sistema
de arquivo é muito simples, basta usar o comando:

# umount /mnt/gisele/fotos

Para fazer o sistema montar um sistema de arquivo NFS na inicialização devemos editar o
arquivo /etc/fstab. Para o nosso exemplo, a linha a ser adicionada a esse arquivo seria:

adilson.hackers.net:/home/adilson/fotos /mnt/gisele/fotos nfs rsize=1024,wsize=1024 0 0

Uma idéia interessante é o compartilhamento da uma unidade de CD/DVD, assim algumas


coisas não precisarão ficar gravadas na máquina e gastando espaço. Quer uma idéia? Quantas músicas
padrão mp3 cabem em um CD? Acho que com boa qualidade umas 200 (duzentas), se for em DVD acho que
umas 1000 (mil) ou mais. Podemos trabalhar ouvindo música o dia inteiro.

Opções de montagem
Existem algumas opções que devem ser consideradas e adicionadas ao que foi visto até aqui.
Elas controlam a maneira que o cliente NFS trata uma queda no servidor ou na rede. Uma das coisas legais
sobre o NFS é que ele pode tratar esses contratempos de maneira elegante, se configurarmos o cliente
corretamente aplicando em nosso exemplo anterior, a entrada no nosso arquivo /etc/fstab seria:

...
adilson.hackers.net:/home/adilson/fotos /mnt/gisele/fotos nfs rsize=1024,wsize=1024,
hard,intr 0 0
...

Otimizando o NFS
Normalmente, se as opções rsize e wsize não são especificadas, o NFS lerá e escreverá em blocos
de 4096 ou 8192 bytes. A combinação do kernel do Linux com algumas placas de rede não podem manipular
blocos tão grandes, e isso não é bom. Então nós iremos experimentar e encontrar um tamanho para o rsize e
para o wsize que trabalhe tão rápido quanto possível. Nós podemos testar a velocidade das opções com um
comando simples.
Dê o comando mount de maneira que tenha acesso para escrita no disco, usando a linha seguinte
para testar o desempenho da escrita seqüencial:

time dd if=/dev/zero of=/mnt/arquivo_teste bs=16k count=4096

Essa linha criará o arquivo “arquivo_teste” de 64 MB de bytes nulos (que deve ser
suficientemente grande para que o caching não seja significante para o desempenho, use um arquivo maior se
tiver muita memória). Faça isso algumas vezes (de 5 a 10) e calcule a média. Esse é o elapsed ou wall clock do
tempo, e é o que nos interessa nessa conexão. Então poderemos testar o desempenho de leitura ao ler o
arquivo criado com a linha abaixo:

time dd if=/mnt/testfile of=/dev/null bs=16k

Faça várias vezes e calcule a média. Então desmonte e monte novamente com um rsize e um
wsize maior. Eles devem ser múltiplos de 1024 e não devem ser maiores que 16.384 bytes, pois esse é o
tamanho máximo para o NFS versão 2. Imediatamente depois da montagem com um tamanho maior, entre
no sistema de arquivo montado (comando cd) e execute comandos como o ls, explore um pouco o sistema de
arquivo para ter certeza de que tudo está como deveria.
Se rsize/wsize está muito grande, os sintomas são muito estranhos e não muito óbvios. Um
sintoma típico é obter listas de arquivos incompletas sem nenhuma mensagem de erro quando usar o ls.
Depois de verificado que os valores de rsize/wsize usados funcionam, você pode realizar os testes de
velocidade novamente. Provavelmente em servidores de plataformas diferentes, o wsize/rsize terão valores
diferentes para um desempenho melhor. O SunOs e o Solaris são mais rápidos com blocos de 4096 bytes do
que com blocos de outro tamanho.
Lembre-se de editar o arquivo /etc/fstab para refletir o rsize/wsize que foi encontrado nos
testes.

188
Global Sul Informática

Uma dica para melhorar o desempenho de escrita do NFS é desabilitar a escrita síncrona no
servidor. A especificação do NFS diz que a requisição de escrita não pode ser considerada acabada antes que
os dados estejam em uma mídia não volátil (normalmente o disco). Isso restringe o desempenho de escrita.
Escritas assíncronas irão aumentar a velocidade de escrita do NFS. O nfsd do Linux não usa escrita síncrona,
pois a implementação do sistema de arquivo do Linux não permite, mas em servidores não Linux poderemos
melhorar o desempenho desta maneira, com a seguinte linha no seu arquivo /etc/exports: /diretório
-async,access=distribuição linux.
Ou algo semelhante. Por favor procure a página de manual do exports. Perceba, também, que
isso aumenta o risco de perda de dados.

NFS e segurança
Aqui vai alguns conselhos para que você tenha uma segurança consciente. Mas fique avisado:
essa não é uma lista completa dos problemas relatados do NFS e se você pensa que está seguro porque leu e
implementou tudo isso, tome cuidado.
Esta seção não leva em consideração se você está em uma rede fechada na qual confia em todos
os usuários, ou se não confia em quem tem acesso às máquinas da rede, não deveria haver nenhuma maneira
de entrar na rede, e ela não deveria estar conectada de nenhuma maneira a outras redes onde você não confia
em ninguém que a usa, bem como na sua segurança.
O NFS tem um problema básico em que o cliente, se não for de outro modo, confia no seu
servidor e vice-versa. Isso pode ser ruim. Significa que, se a conta do root do servidor for quebrada, pode ser
muito fácil quebrar a conta de root do cliente também e vice-versa. Existem várias estratégias contidas aqui,
das quais nós voltaremos a falar.

Segurança no cliente
No cliente nós podemos decidir o quanto queremos confiar no servidor; também, com as opções
de montagem. Por exemplo, nós podemos proibir que programas suid trabalhem fora do NFS com a opção
nosuid. Isso é uma boa idéia e você deverá considerar o uso dela em todos os sistemas NFS montados.
Significa que o usuário root do servidor não pode usar um programa suid-root do sistema de arquivos, para
logar no cliente como se fosse um usuário comum e então usá-lo para se tornar superusuário no cliente
também.
Nós também poderíamos proibir completamente a execução de arquivos do sistema de arquivos
montado com a opção noexec. Mas isso, provavelmente, é uma idéia pior do que a opção nosuid, pois é
provável que um sistema de arquivos tenha alguns scripts e programas que precisam ser executados. Nós
colocamos essas opções na coluna de opções, como o rsize e wsize, separadas por vírgula.

Segurança no servidor: nfsd


No servidor nós podemos decidir o quanto queremos confiar no superusuário do cliente. Nós
podemos fazer isso usando a opção root_squash no arquivo /etc/exports:

...
/home/adilson/fotos amigos(ro) hackers (no_root_squash)
...

Agora, se um usuário no cliente com UID 0 tentar acessar (ler, escrever, deletar) o sistema de
arquivo do servidor, o UID é substituído pelo UID de nobody do servidor. O que significa que o usuário root
do cliente não pode acessar ou modificar arquivos que somente o root do servidor pode acessar ou mudar. O
que é bom, e você deve usar root_squash em todos os sistemas de arquivos exportados. Outro cuidado que
deveremos ter é se o usuário root no cliente puder usar o comando su para se tornar qualquer usuário para
acessar e modificar os arquivos desse usuário. Isso é verdade e é um dos perigos em se ter Unix/Linux com
NFS.
Isso tem uma importante implicação: todos os binários e arquivos importantes devem ser do
root, e não de outro usuário não root, pois somente assim o usuário root do cliente não poderá acessar o
servidor como root. Na página de manual do nfsd existe várias outras opções squash listadas, então
poderemos decidir em confiar (ou não) no cliente. Há também opções de squash para qualquer faixa de UID e
GID que você queira. Tudo isso está descrito na página de manual do nfsd, então eu já vou lhe falar LEIA OS
MANUAIS.
A opção root_squash é ativada como padrão no NFS do Linux e para garantir o acesso do root ao
sistema de arquivo use a opção no_root_squash. Outra coisa importante é assegurar que o nfsd verifique
todos os pedidos que venham de uma porta privilegiada. Se o pedido for aceito de qualquer porta

189
Treinamento Linux – Administração, Redes e Serviços

desprotegida no cliente, um usuário sem privilégios especiais pode rodar um programa facilmente obtido na
Internet.
Esse programa fala com o protocolo nfs e reivindica ser qualquer usuário que queira.
Assustador. O nfsd do Linux faz essa verificação por padrão, em outros sistemas operacionais você tem que
ativar a verificação. Isso deve estar descrito nas páginas NFSd do man do Sistema Operacional em questão.

DICA: Nunca exporte um sistema de arquivo para o localhost ou para 127.0.0.1 com privilégio total,
pois se um hacker com más intenções conseguir acesso a essa exportação do seu localhost, acredite,
você estará perdido.

Segurança no servidor portmapper


O portmapper básico, em combinação com o nfsd, tem um problema de projeto que torna
possível a captura de arquivos no servidor NFS sem nenhum privilégio. Felizmente, o portmapper que o
Linux usa é relativamente seguro contra esse ataque, e pode ficar mais seguro com a configuração dos dois
arquivos de lista de acesso.
Primeiro nós editaremos o /etc/hosts.deny. Ele deve conter a linha portmap: ALL, que irá negar
o acesso para todos. Isso talvez seja um pouco radical, então nós permitiremos o acesso editando o arquivo
/etc/hosts.allow. Mas primeiro precisamos entender o porquê disso. O arquivo lista basicamente todas as
máquinas que devem ter acesso ao seu portmapper. Na execução do sistema Linux existem algumas
máquinas que precisam de algum acesso por qualquer razão.
O portmapper administra o nfsd, o mountd, o ypbind/ypserv, o pcnfsd e os serviços “r” como
ruptime e rusers. Desses somente o nfsd, o mountd, o ypbind/ypserv e talvez o pcnfsd são de alguma
importância. Todas as máquinas que precisam acessar serviços na sua máquina devem ter permissão para
isso. Suponhamos que o endereço da sua máquina seja 10.6.12.250 e que está na subrede 10.6.12.0, que deve
ter acesso a ela (nos termos que foram introduzidos pelo networking-HOWTO, volte e refresque sua memória
se precisar).
Então nós escreveremos no hosts.allow:

portmap: 10.6.12.0/255.255.255.0

Isso é o endereço da rede dado para o roteador e a máscara que você deu para o comando
ifconfig. Para o dispositivo eth0 o ifconfig dessa máquina deverá mostrar:

eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56


inet addr:129.240.223.254 Bcast:129.240.223.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:360315 errors:0 dropped:0 overruns:0
TX packets:179274 errors:0 dropped:0 overruns:0
Interrupt:10 Base address:0x320

E o comando netstat -rn deverá mostrar:

Tabela de Roteamento IP do Kernel


Destino Roteador MáscaraGen. Opções MSS Janela irtt Iface
10.6.12.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
0.0.0.0 10.6.12.254 0.0.0.0 UG 40 0 0 eth0

O endereço da rede está na primeira coluna. Os arquivos hosts.deny e hosts.allow são descritos
nas páginas de seus nomes do man.

190
Global Sul Informática

DICA: Não coloque nada além de números de IP na linha do portmap desses arquivos. Lookups em
nomes de hosts pode causar indiretamente atividade do portmap o qual desencadeará um lookups em
nomes de hosts, que pode causar indiretamente atividade do portmap o qual desencadeará.

Com as coisas vistas, devemos fazer da sua máquina uma máquina segura. O único problema
(Yeah, certo!) é alguém quebrar a senha do root (ou usando o MS-DOS) de uma máquina em que se confia e
usar esse privilégio para enviar pedidos de uma porta segura como qualquer usuário que queira.

NFS e firewalls
É uma boa idéia usar firewall para as portas de nfs e portmap no seu roteador ou firewall. O nfsd
opera na porta 2049, para os protocolos udp e tcp. O portmapper opera na porta 111, para o udp e o tcp, e o
mountd na porta 32768 para o tcp e 747 para o udp e o nlockmgr na porta 32770. Normalmente. Você deve
verificar as portas com o comando rpcinfo -p.

[root@gabriel /]# rpcinfo -p 10.6.12.250


programa versão protocolo porta
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 764 rquotad
100011 2 udp 764 rquotad
100011 1 tcp 767 rquotad
100011 2 tcp 767 rquotad
100005 1 udp 32768 mountd
100005 1 tcp 32768 mountd
100005 2 udp 32768 mountd
100005 2 tcp 32768 mountd
100005 3 udp 32768 mountd
100005 3 tcp 32768 mountd
100024 1 udp 32769 status
100024 1 tcp 32769 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100021 1 udp 32770 nlockmgr
100021 3 udp 32770 nlockmgr
100021 4 udp 32770 nlockmgr
100021 1 tcp 32770 nlockmgr
100021 3 tcp 32770 nlockmgr
100021 4 tcp 32770 nlockmgr

Se por outro lado você quiser que o NFS passe através do firewall, existem opções para os novos
NFSds e mountds para fazer o uso de uma porta específica (nonstandard) a qual pode ser aberta em um
firewall. Em resumo, se você usa o hosts.allow/deny, root_squash, nosuid e características de privilégios nas
portas do software portmapper/nfs, evita muitos dos bugs conhecidos do nfs e pode se sentir quase seguro.
Mas, afinal: quando um invasor tem acesso à sua rede, ele pode fazer comandos desconhecidos
aparecer em seu /var/spool/mail montado dentro do NFS. Por essa razão, você nunca deve ter acesso à sua
chave privada PGP dentro do NFS. Ou então deve ter total conhecimento dos riscos que isso implica. E agora
você já conhece um pouco disso.
O NFS e o portmapper formam um subsistema complexo e, portanto, não é totalmente
improvável que novos bugs serão descobertos, ou em seu projeto básico ou na implementação que nós
usamos. Pode, talvez, existir falhas conhecidas agora, a qual alguém está atacando.
Qual é a vantagem de se usar NFS? Simples, você pode exportar uma unidade de um CD para
uma máquina que não tenha CD-ROM e esta poderá usar como se fosse um CD-ROM local, ou todas as
máquinas poderão usar essa unidade também.

191
Treinamento Linux – Administração, Redes e Serviços

Anotações:

192
Global Sul Informática

193
Treinamento Linux – Administração, Redes e Serviços

Capítulo 11

SAMBA – Cliente e Servidor


Você provavelmente já ouviu fala em “samba” no sistema Linux e com certeza, assim como todo
mundo faz você fez a analogia ao samba que conhecemos. Mas não nada disso, sambódromos a parte, o
samba1 no sistema Linux nada mais é servidor do que um poderoso servidor o que permite que uma rede
windows converse de modo transparente com uma rede Linux.
Com o servidor samba é possível compartilhar serviços (arquivos, diretório, impressão) através
do protocolo SMB – Server Message Block e CIFS – Common Internet File System, equivalentes a
implementação NetBEUI no Windows. O servidor samba é uma das soluções em ambiente Linux capaz de
interligar redes heterogênea e é de graça, licenciado pelo GPL, você não vai precisar pagar R$ 1.000,00 (mil)
por um servidor de impressão.
Usuários de redes Windows poderão enxergar e navegar, apagar, copiar mover, criar e remover
diretórios, executar programas etc em uma máquina Linux como se esta fosse uma extensão de seu
computador e vice-versa de modo transparente.
Aqui vamos aprender o básico de como é que devemos proceder para fazer com que micros
pertencentes a uma rede Linux e micros pertencentes a uma rede Windows possam compartilhar
informações. Se for configurado de modo correto é perfeitamente possível e fica totalmente transparente para
o usuário, pois esse tipo de tarefa é feita pelo administrador da rede; portanto, prepare-se para ser um deles.
Na atualidade, redes locais tornaram-se um padrão e uma necessidade em grande parte, senão
na maioria, das organizações desde micro, média e grandes empresas. Em inúmeros casos, essas redes são
compostas por clientes Windows que utilizam um servidor Windows NT, Windows 2000, Netware, Unix etc.
como repositório de dados, controlador de acesso às informações e gerenciador de tarefas de impressão.
Com a popularização do sistema Linux, em especial no mercado latino-americano, muitas redes
passaram a utilizar o Linux como cliente ou estação de trabalho, pois é muito mais confiável e seguro pelo
fato de não cair, “não ter tela azul”, ou seja, aquilo que todos nós já sabemos, em redes mistas com servidores
ou clientes Windows.
O quadro pode ser extremamente heterogêneo, onde as funcionalidades e facilidades de cada
plataforma podem ser exploradas pelo usuário de forma produtiva e adequada às suas necessidades.
Aspectos como robustez, performance, estabilidade, baixo custo e farta disponibilidade de
aplicativos inerentes ao Linux podem ser aproveitados na sua plenitude, sem que isso signifique uma
mudança radical de plataforma num primeiro momento.

DICA: A escalabilidade do SAMBA é muito boa eu diria até excelente. Empresas então usando com
mais de 500 (quinhentos) clientes e obtendo uma performance excelente. Cada cliente SAMBA ocupa
cerca de 600 a 800 K de memória no servidor dependendo do tipo de utilização, use esse parâmetro
para cálculo da memória do seu servidor. Desta forma, ele vem substituindo os servidores Windows,
OS2, Netware e Unix, devido à sua estabilidade e à necessidade de pouco em termos de hardware.

Outra grande vantagem é dele e de ser licenciado pelo GPL, de livre distribuição, sem limite de
usuários ou custos por licença. Tecnicamente também há ganhos em performance e segurança de dados.

194
Global Sul Informática

Características do servidor
O servidor samba possui inúmeras características muito boas e interessante para o
administrador, a seguir veja algumas delas:
— Ele compartilha arquivos entre as máquinas Windows e Linux ou de máquinas Linux (sendo o
servidor SAMBA) com outro SO que tenha um cliente NetBEUI (Macintosh, OS/2, LanManager, etc).
— Ele permite montar um servidor de compartilhamento de impressão no Linux que receberá a
impressão de outras máquinas Windows da rede, isso é você pode perfeitamente ter seus documentos e
mandar imprimir remotamente em uma máquina Linux onde há uma impressora compartilhada.
— Controle de acesso aos recursos compartilhados no servidor através de diversos métodos
(compartilhamento, usuário, domínio, servidor). Controle de acesso leitura/gravação por compartilhamento
e também po usuário autenticado.
— Possibilidade de definir contas de “Convidados”, que podem se conectar sem fornecer senha.
Isso é interessante pois não é necessário ter que cadastrar um usuário para que ele só de vez em quando
acesse uma máquina Linux. O samba pode usar o banco de dados de senha /etc/passwd.
— O samab permite que o conteúdo de determinados diretórios fiquem ocultos, também permite
auditoria tanto dos acessos a pesquisa de nomes na rede como acesso a compartilhamentos. Entre os detalhes
salvos estão a data de acesso, IP de origem, etc.
— O samba permite montar unidades mapeadas de sistemas Windows ou outros servidores
Linux como um diretório no Linux, conforme você poderá confirmar nas figuras desse capítulo.
— O samba permite a configuração de recursos simples através de programas de configuração
gráficos, tanto via sistema, como via web. A configuração poderá ser feita pelo linuxconf, pelo webmin, pelo
swat e por outros programas gráficos que você encontrar pela Internet.
— Permite executar comandos no acesso ao compartilhamento ou quando o acesso ao
compartilhamento é finalizado. Tal como smbtar e outros. E mais um monte de outras coisas legais.

Arquivos de configuração do Samba


O servidor samba é divido em duas partes :

1. Arquivo de configuração /etc/samba/smb.conf.


2. Serviços SMBD e NMBD.

O arquivo smb.conf está localizado no diretório /etc/samba , sendo responsável por toda a
configuração nos acessos aos diretórios, arquivos e impressão. Dentro do arquivo /etc/samba/smb.conf
existem algumas subdivisões que devem ser respeitadas para uma correta configuração.
O processo SMBD verifica a porta 139 (porta usada pelo samba) e replica-se a cada solicitação do
cliente na realização de tarefas de impressão e compartilhamento de arquivos. O protocolo SMB foi originado
na plataforma MS-DOS e se dispõem a cobrir os aspectos de segurança de forma direta. Todo o recurso
compartilhado pode estar protegido por uma senha, a qual pode ser implementada de duas formas distintas:

1. Senha por compartilhamento: Onde cada item compartilhado como discos, diretórios,
impressora etc. tem uma senha própria.

2. Senha por Usuário: Neste caso todo o usuário deve identificar-se no servidor através
de um nome e de uma senha. Após uma validação positiva, o servidor fornecerá os acessos
de acordo com as permissões predefinidas para o usuário.

O processo NMBD recebe todo o tráfego da porta UDP/137 e UDP/138 para os serviços de
nomes, registros e browsing (navegação). A diferença entre os dois métodos é definida no próprio servidor,
não podendo coexistir para um mesmo recurso compartilhado através da rede. Se você pretende diariamente
usar o Samba em sua intranet é bom deixá-lo ativo logo na inicialização. Para isso pode use ntsysv e marque
os serviços do samba. Conforme sua distribuição você poderá encontrar duas linhas: smbd e nmbd ou então a
opção samba. O importante é que você marque essas opções.

195
Treinamento Linux – Administração, Redes e Serviços

Principais arquivos do servidor samba


O servidor samba possui vários arquivos mas nós usaremos poucos deles para aprendermos
nesse capítulo. Para saber quais são digite smb e pressione duas vezes a tecla TAB e você terá a listagem
abaixo:

[root@gabriel root]# smb


smbadduser smbcontrol-srv smbpasswd smbstatus
smbcacls smbd smbpasswd-srvsmbstatus-srv
smbclient smbd-srv smbprint smbtar
smbclient-srv smbmnt smbspool smbumount
smbcontrol smbmount smbspool-srv

A seguir eu lhe apresento um resumo de alguns deles para que você saiba o que cada um faz:
smbadduser: Permite o cadastramento de novos usuários no servidor e segue a seguinte regra:
unixid:ntid ou seja bonan:adilsonbonan. Um nome válido padrão Unix para um nome válido padro NT.
Exemplo:

[root@gabriel futura]# smbadduser sulamita


ERROR: Must use unixid:ntid like -> zak:zakharoffm

[root@gabriel futura]# smbadduser sulamita:sulamita


Adding: sulamita to /etc/samba/smbpasswd
----------------------------------------------------------
ENTER password for sulamita
New SMB password:
Retype new SMB password:
Password changed for user sulamita.
Password changed for user sulamita.
[root@gabriel futura]# smbadduser janaina:janaina
Adding: janaina to /etc/samba/smbpasswd
----------------------------------------------------------
ENTER password for janaina
New SMB password:
Retype new SMB password:
Password changed for user janaina.
Password changed for user janaina.

[root@gabriel futura]# cat /etc/samba/smbpasswd


adilson:500:134D56C76640A683AAD3B435B51404EE:822F3F0C6A348CC441EE7
E3C30FBF0FD:[UX]:LCT-3F6CF4DB:
gabriel:501:E974D02472809498AAD3B435B51404EE:1D6154A0227577A83164B
24184EC7C00:[UX]:LCT-3F6CF4D5:
sulamita:503:ECB2A658A1353072AAD3B435B51404EE:F406178D9213F304E5FB
9D28D1CB4AB2::/home/sulamita:/bin/bash
janaina:506:C04F781A2CDE10A3AAD3B435B51404EE:DD1BACC2C216A4B694B82
F62CBE8A498::/home/janaina:/bin/bash

O arquivo cat /etc/samba/smbpasswd guardará os usuários es suas respectivas senhas criada


pelo samba.
smbpasswd: Depois que você criou usuários, permite que você adicione senhas de acessos para
esses usuários. Exemplo:

# smbpasswd -a adilson
New SMB password:
Retype new SMB password

Passe as duas senhas corretas e o usuário adilson passará a valer no sistema e poderá usar o
servidor samba. Uma dica interssante seria, se você quiser, use o comando mksmbpasswd /etc/passwd /etc/
samba/smbpasswd para converter toda a base de usuários do /etc/passwd e gerar um arquivo
/etc/samba/smbpasswd contendo as contas destes usuários. Por padrão, todas as contas são DESATIVADAS
por segurança quando este novo arquivo é criado. O novo arquivo terá o seguinte formato:

196
Global Sul Informática

adilson:500:134D56C76640A683AAD3B435B51404EE:822F3F0C6A348CC441EE7
E3C30FBF0FD:[UX]:LCT-3F6CF4DB:
gabriel:501:E974D02472809498AAD3B435B51404EE:1D6154A0227577A83164B
24184EC7C00:[UX]:LCT-3F6CF4D5:
sulamita:503:ECB2A658A1353072AAD3B435B51404EE:F406178D9213F304E5FB
9D28D1CB4AB2::/home/sulamita:/bin/bash
janaina:506:C04F781A2CDE10A3AAD3B435B51404EE:DD1BACC2C216A4B694B82
F62CBE8A498::/home/janaina:/bin/bash

Vaja algumas opções do smbpasswd:


– smbpasswd -U anarosa: Para ativar a conta do usuário anarosa depois a senha do usuário e
repita para confirmar. Assim que a senha for definida, a conta do usuário é ativada.
– smbpasswd -U áurea: Para Adicionando usuários do smbpasswd.
– smbpasswd -x fabiano: Para remover um usuário fabiano do arquivo smbpasswd. Se desejar,
você pode manter o usuário no /etc/passwd ou removê-lo com o userdel. Se você remover um usuário deste
arquivo fará que ele não tenha mais acesso ao SAMBA.
– smbpasswd -d henrique: Para desabilitar temporariamente o usuário henrique no smbpasswd
caso ele estaja usando “demais” sua conta, ou seja, enchendo o HD de MP3, fotos e downloads de Windows.
– smbpasswd -e luzia: Para habilitar uma conta no smbpasswd que foi desativada com o uso do
comando smbpasswd -d. Agora a usuária luzia poderá usar o sistema novamente, conforme os agrados, é
claro. :-)
– smbpasswd -r servidor -U andersom: Para alterar a senha do usuário remoto andersom. A
opção -r servidor pode ser o IP ou um nome remoto, porém a senha antiga do usuário sempre será solicitada
para troca, pois lembre-se que o usuário root de uma máquina pode não ser o mesmo de outra.
– smbpasswd -n adilson: Para fazer o usuário adilson acessar sem senha. Não é uma coisa muto
interessante pois é necessário que a opção null passwords da seção [global] no arquivo /etc/samba/smb.conf
esteja ajustada para yes (que NÃO é o padrão).
Mas eu lhe pergunto: — Para quê entrar sem senha, só para não termuita segurança e ficar mais
vulnerável? Lembre-se do velho ditado: – Quanto menos souberem do teu sucesso, mas rápido você o
alcaçará. Pois tem menos para puxar o teu tapete.

smbstatus: Mostra o status do servidor samba. O programa smbstatus informa a situação atual
das conexões Samba. Pode ser usado na linha de comando com as seguintes opções:

-b: fornece uma saída resumida e -d: fornece uma saída comentada.
-L: faz com que o programa relacione somente os recursos em uso.
-p: relacione os processos servidores smbd e finaliza. Útil para ser usado em programas.
-S: relacione todos os compartilhamentos definidos.
-s arquivo de configuração: permite que seja utilizado um arquivo de configuração
diferente do definido em tempo de compilação.
-u nome do usuário: relaciona as informações relevantes sobre o usuário informado.

smdb e nmdb: São os processos (daemons) que colocarão o samba no ar. Eles devem ser
usados depois que o arquivo de configuração /etc/samba/smb.conf foi editado com as regras para os
usuários. Toda vez que você fizer uma alteração nesse arquivo você deverá “derrubar” e “levantar” esses
processos para a nova configuração seja válida
smbclient: Depois de tudo configurado certinho, mostra os compartilhamentos disponíveis
para uso. Exemplo:

# smbclient -L 10.6.12.150
Can't find include file /etc/samba/smb.conf.
added interface ip=10.6.12.250 bcast=10.255.255.255 nmask=255.0.0.0
session request to 10.6.12.150 failed (Called name not present)
session request to 10 failed (Called name not present)
Password:
Domain=[EDFUTURA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename Type Comment


--------- ---- -------
Impressora Printer hp deskjet 656c series
IPC$ IPC IPC remoto
SharedDocs Disk
print$ Disk Drivers de impressora

197
Treinamento Linux – Administração, Redes e Serviços

NOTEBOOK (C) Disk


DVD-NOTEBOOK Disk
TEMP Disk
ADMIN$ Disk Administra remota
DOWNLOAD-5 Disk
C$ Disk Recurso compartilhado padrão

Server Comment
--------- -------
NOTEBOOK NOTEBOOK

Workgroup Master
--------- -------
EDFUTURA NOTEBOOK
LINUX GABRIEL

O comando smbclient -L 10.6.12.150 mostrou os compartilhe-mentos da máquina 10.6.12.150 e


nós ficamos sabendo no notebook (10.6.12.150) tem impressora compartilhada, tem DVD compartilhado, tem
a pasta TEMP e o disco C (isso não é muito aconselhável) e também tem uma pasta DOWNLOAD-5
compartilhada. Há dois grupos de trabalhos, o da máquina GABRIEL com grupo LINUX e NOTEBOOK com
EDFUTURA como grupo.
E ficamos sabendo também que o notebook usa o Windows XP (Windows 5.1) e seu servidor
Windows 2000 conforme: Domain= [EDFUTURA] OS=[Windows 5.1] Server=[Windows 2000 LAN
Manager].
Se o arquivo /etc/samba/smb.conf tiver erros de configuração ou o samba não estiver no ar
(samba start) o comando smbclient não funcionará. Exemplo:

[root@gabriel root]# smbclient -L 10.6.12.250


Can't find include file /etc/samba/smb.conf.
added interface ip=10.6.12.250 bcast=10.6.12.255 nmask=255.255.255.0
error connecting to 10.6.12.250:139 (Connection refused)
Error connecting to 10.6.12.250 (Connection refused)
Connection to 10.6.12.250 failed

smbprint: Permite que seja usado recursos de impressão.


smbtar: Do mesmo modo que você usa o comando tar poderá usar o comando smbtar. Isso é
útil para que você faça backup´s. Este programa possibilita a geração de cópias de segurança de
compartilhamentos SMB/CIFS diretamente em fitas magnéticas sob o Unix. Pode ser acionado através da
linha de comando com as seguintes opções:

–s servidor: Gera a cópia de segurança do servidor SMB informado.


–x serviço: Gera a cópia de segurança dos arquivos residentes no serviço
(compartilhamento).
–X : Modo de exclusão, onde se pode omitir arquivos na criação ou restauração.
–d diretório: Altera o diretório inicial antes de restaurar ou copiar os arquivos.
–v: Modo informativo.
–p senha: Informa a senha de acesso ao recurso.
–u usuário: A identificação a ser usada na conexão.
–t : Dispositivo de saída. Pode ser um arquivo regular ou um dispositivo de fita. O
padrão é igual à variável de ambiente TAPE.
–b tamanho de bloco: Define o tamanho do bloco a ser utilizado no arquivo de saída.
–n nome do arquivo: Copiar somente os arquivos que são mais recentes que o arquivo
definido. Pode ser usado para a criação de cópias de segurança incrementais.
–i modo incremental: Arquivo tar somente serão copiados caso tenham o bit de
configuração ativos e -r restaurar: os arquivos serão copiados do arquivo tar para a
área compartilhada.

Uma interessante aplicação do smbclient é a produção de cópias de segurança em um formato


padrão e comum a todas as plataformas. Todos os arquivos da máquina SMB/CIFS serão guardados no
formato de arquivo tar. Por exemplo, para criar um arquivo chamado copia.tar contendo todos os arquivos
sob o diretório usuarios/docs do serviço windows01/usuarios, pode-se executar o seguinte comando:

# smbclient //notebook/temp “” -N -Tc copia.tar usuarios/docs

198
Global Sul Informática

smbmount e smbumount: Use o comando smbmount para criar pontos de montagens


padrão samba e o comando smbumount para desmontar esses pontos de montagens. Também é possíel usar
o comando smbmount para montar. Seu uso é simples:

# mount -t smbfs -o username=<nome_usuário>,password=<senha_usuário>


//origem/diretório /destino/diretório

Viu como é simples? Só não é interessante você passar o nome de usuário e senha pela linha de
comando. O melhor é fazer assim:

# mount -t smbfs //notebook/c /mnt/notebook

Esse comando monta o disco C do notebook no /mnt/notebook após ser informada a senha
correta. Para testar se o servidor está funcionando, digite o seguinte comando smbclient -L servidor -U
usuario e digite a senha de usuário quando solicitado. Caso a senha for informada errada não haverá conexão.
Exemplo:

[root@gabriel MP3]# mount -t smbfs //notebook/c /mnt/notebook/


INFO: Debug class all level = 1 (pid 2545 from pid 2545)
Password:
2545: tree connect failed: ERRDOS - ERRnosuchshare (You specified an invalid share name)
SMB connection failed

9. smbstatus: Use-o para saber a situação atual das conexões do servidor samba do seguinte
modo:
– smbstatus -b: Lista o PID, usuário, nome da estação e data de acesso de quem está neste
momento conectado no servidor.
– smbstatus -p: Lista os processos smbd e finaliza em seguida. Útil quando utilizado em
programas.
– smbstatus -S: Lista todos os compartilhamentos definidos e smbstatus -s: Permite utilizar
outro arquivo de conffiguração (smb.conf2 por exemplo), que deve ser especificado após a opção.
– smbstatus -u: Lista as informações rellevantes sobre o usuário, que deve ser especificado após
a opção.
10. Os utilitários testparm e testprns: O programa testparm é utilizado na verificação da
configuração do arquivo /etc/samba/smb.conf. Ele pode ser utilizado na linha de comando, e caso o
programa indique que não há problemas com o arquivo, pode ser utilizado na configuração de um servidor
smb. Para testar se seu arquivo de configuração está certo use o assim:

# testparm /etc/samba/smb.conf

E então leia atentamente o resultado apresentado na tela, se algo estiver errado você poderá
voltar e configurar editar o arquivo novamente.
O programa testprns verifica o nome da impressora junto ao servidor smbd, a fim de determinar
se há um nome válido sendo informado para uso pelo serviço de impressão. Válido nesse contexto significa
que pode ser encontrada uma entrada em printcap para a impressora informada e que pode ser ativado da
seguinte forma:

testprns nome_da_impressora [nome_do_arquivo_printcap]

Caso seja encontrada uma impressora válida, será apresentada a mensagem “Impressora <nome
da impressora> é válida”. O arquivo de definições de impressoras pode ser normalmente encontrado em /etc/
printcap.

199
Treinamento Linux – Administração, Redes e Serviços

Executando os servidores
Antes de mais nada você deve lembrar que o serviço de rede inetd deverá estar no ar. Caso não
esteja, isso poderá ser feito pelos comandos:

# /etc/rc.d/init.d/inet stop
# /etc/rc.d/init.d/inet start

Os dois servidores SMB são denominados /usr/sbin/smbd e /usr/sbin/nmbd. Para que a rede
possa funcionar, esses servidores devem estar permanentemente ativos. Caso algum deles seja finalizado por
qualquer motivo, há uma forma de fazer com que ele seja reinicializado imediatamente. Para tanto eles
devem ser executados a partir do servidor de rede inetd. Neste caso insira ou edite as seguintes linhas no
arquivo /etc/inetd.conf:

# Serviços NetBIOS e SAMBA


# (para compartilhamento de arquivos e impressoras)
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Para inicializar os servidores automaticamente quando todo o sistema for iniciado, acione o
programa ntsysv e torne a opção smb ou samba ativa, mas isso vai depender de sua distribuição. Após alterar
algum parâmetro de configuração, esteja seguro de reinicializar o servidor para que os parâmetros sejam
ativados. Esse procedimento é realizado a partir dos seguintes comandos:

# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb start

Após feitas todas as configurações que aprenderemos na seqüência para colocar o samba no ar,
que é muito simples, o comando samba start já é o suficiente. Porém, se sua distribuição não tem esse script,
você poderá criá-lo e colocá-lo em /usr/sbin/, veja como (Após criar o seu script use o comando chmod 755 /
usr/sbin/samba. Desse modo ele será um executável):

#!/bin/sh
# Gerencia os servidores do Samba (smbd e nmbd)
# usados para fornecer os serviços de rede SMB.

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ ${NETWORKING} = "no" ] && exit 0
[ -f /etc/smb.conf ] || exit 0
unset TMP TMPDIR
case "$1" in
start)
gprintf "Iniciando %s servicos: " "SMB"
daemon smbd -D
echo
gprintf "Iniciando %s servicos: " "NMB"
daemon nmbd -D
echo
touch /var/lock/subsys/smb
;;
stop)
gprintf "Parando %s servicos: " "SMB"
killproc smbd
echo
gprintf "Stopping %s services: " "NMB"
killproc nmbd
echo
rm -f /var/lock/subsys/smb
;;
status)
status smbd
status nmbd
;;
restart)
$0 stop

200
Global Sul Informática

$0 start
;;
*)
gprintf "Use: %s {start|stop|status|restart}\n" "samba"
exit 1
esac

:: Ambiente de rede do XP e compartilhamentos Windows e Linux

Como podemos ver aqui no ambiente Windows XP, há compartilha-mentos em uma máquina
Linux chamada Gabriel que usa o servidor samba. Nessa máquina temos vários compartilhamentos, entre
eles o GabrielHD, JanainaHD, AdilsonHD etc.
Olha só que moleza! Depois que você configurou o servidor samba, usando o konqueror (KDE),
você poderá acessar transparentemente uma máquina Windows sem nenhum problema, desde que você
tenha autorização para isso, é claro. Na próxima figura a estação Windows foi montada pelo samba e o
konqueror é usado para fazer as tarefas rotineiras de disco: copiar, colar, pesquisar, exibir, apagar etc.

Figura X: Ambiente Linux acessando ambiente Windows.

Algo interessante de ser observado é que como estamos falando de redes TCP/IP nós poderemos
montar uma estação que poderá estar fora na nossa “jurisdição”, seguindo essa idéia é como se tivéssemos
um cliente de ftp na nossa frente. Na internet você vai encontrar inúmeras dicas legais para uso do samba em
conjunto com o Windows.
É bom lembrar que você precisa ter diretos de conexão em um compartilhamento samba, não é
porque você o poderá estar vendo que já entrando assim numa boa. Algumas pastas são visíveis. porém o seu
conteúdo não, é preciso de autorização para ver o que tem lá dentro da área 51. :-)

201
Treinamento Linux – Administração, Redes e Serviços

E não se esqueça que, agora podendo ver o conteúdo de um compartilhamento, esse poderá ser
somente para leitura, e não será autorizado a exclusão de arquivos. No samba, alguns usuários podem ter
acesso somente leitura e outros pode ter leitura e escrita.

Configurando o Samba
Hoje é possível fazer a configuração do Samba por vários meios, desde a configuração “braçal”,
ou seja, editando o /etc/samba/smb.conf com o editor vi, pico, joe, jed, kedit, gedit, emacs, gvim etc. eu lhe
aconselho o bom e velho vi pois ele colore as tags de configuração do arquivo smb.conf e facilita muito a
configuração. Ou através de uma edição mais “amigável” usando o linuxconf ou o swat com o netscape ou
mesmo outros utilitários que existem por aí.
Porém, o que importa é que a coisa funcione bem, e que não seja preciso pagar uma fortuna por
um servidor de impressão sob o Windows NT, sendo que existe o Samba e é gratuito. Pense na economia que
isso irá gerar em qualquer empresa.
O arquivo /etc/samba/smb.conf
O arquivo smb.conf é constituído por seções e parâmetros. Seções são iniciadas por um nome
encerrado entre colchetes, como por exemplo [global], [homes], [printers], [temp] etc. Parâmetros estão
inseridos em seções e são definidos no formato “nome=valor”.
Cada seção do arquivo de configuração descreve um compartilha-mento específico, exceto a
seção [global] que é aplicada a todos os compartilhamentos do servidor. O nome da seção é igual ao nome do
recurso compartilhado. Há três seções com nomes especiais:

1. [global]
2. [homes]
3. [printers]

As permissões de acesso ao servidor são definidas de acordo com os padrões Unix.

Configurando pelo modo texto


A configuração do Samba pelo modo texto é feita geralmente por usuários mais experientes que
sabem exatamente onde é que devem ser feitas as alterações ou adicionar novas informações para que o
servidor Samba funcione da maneira adequada. A configuração é feita editando o arquivo
/etc/samba/smb.conf.
Os “#” e “;” são comentários. Para ativar a opção apenas tire o comentário. O arquivo
apresentado aqui não é necessariamente a configuração que você irá fazer, pois aqui ele está apresentado com
explicações para fins didáticos, que através dele você vai preparar o seu arquivo de configuração para as suas
reais necessidades:
[global]
A Seção [global] significa que a configuração especificada abaixo aplica-se ao servidor ou são
gerais. Enfim, é a base para o funcionamento do Samba.
; shared mem size = 1048576
Especifica a quantidade de memória do servidor SAMBA quanto mais melhor, mas 10 MB já é
bastante para cinco a dez estações.
workgroup = LINUX
Nome do workgroup que as estações Windows irão mostrar.
server string = Servidor Samba %h - Versão %v
Observação que irá aparecer sobre o computador, e caso a observação do compartilhamento
esteja vazio o compartilhamento usará essa observação.
; announce as = NT Server
Especifica o tipo de servidor nmbd (Servidor de Nomes NetBIOS) que será divulgado na rede. O
padrão é igual a Windows NT. As opções válidas são "NT", "NT Server", "NT Workstation", "Win95" ou
"WfW".
; logon script = %U.bat
O diretório-base dos logon scripts é o volume [netlogon]. No exemplo, se o diretório de
compartilhamento netlogon for igual a ‘/home/samba/netlogon’, o script do usuário ‘adilson’ seria procurado
em /home/samba/netlogon/adilson.bat.
; hosts allow = 150.203. EXCEPT 150.203.6.66 150.203.15.0/255.255.255.0

202
Global Sul Informática

Este parâmetro define o conjunto de máquinas que podem acessar o servidor Samba. Pode-se
utilizar o nome ou o endereço IP da máquina. É possível, por exemplo, restringir o acesso a somente uma
sub-rede de classe C, como em ‘allow hosts = 150.203.5.’. Pode-se ainda usar o sub-parâmetro "EXCEPT"
para excluir alguma(s) máquina(s), como por exemplo:
; hosts allow = edfutura @academicos
Abaixo abre acesso para edfutura e somente hosts no NIS com o grupo da net: academicos
; hosts deny = 150.203.5. microsoft.com microsoft.com.br
Exatamente o oposto do parâmetro anterior, pois aqui podem ser listadas todas as máquinas que
não devem ter acesso aos serviços.
printcap name = /etc/printcap
load printers = yes
Carrega a configuração das impressoras que estão instaladas no servidor Samba
; printing = bsd
Tipo de impressão padrão, caso não funcione normalmente, bsd, sysv, plp, lprng,aix, hpux, qnx.
Se usar CUPS coloque cups.
; guest account = guest
Transforma todos os usuários que de algum modo foram indicados como visitantes em usuário
guest.
log file = /var/log/samba/log.%u
Criará um arquivo de log para cada usuário. Ex. log.adilson. É possível usar %m para obter logs
por máquinas.
max log size = 50
Tamanho máximo permitido para um log.
debug level = 1
Nível do log, enquanto maior mais detalhes são mostrados. É recomendado usar até 2 e o nível 0
representa nenhum.
keepalive = 20
...

Máquinas Windows tendem a travar de tempos em tempos. Este parâmetro é utilizado para
verificar o estado da conexão, a cada 20 segundos.

Autenticação de usuários — modalidade de segurança


A seguir vamos falar um pouco sobre segurança no Samba:
security=share
Sem segurança. Todo e qualquer usuário será aceito. As operações de arquivo e impressão serão
executadas com as permissões do usuário Unix associado ao hóspede (guest account = ...). Se você escolher
essa modalidade, verifique se o usuário Unix terá permissões suficientes para acessar arquivos e, se for o
caso, imprimir. Assim, senhas de acesso são solicitadas por recurso compartilhado e não por usuário. Ou seja:
cada diretório ou impressora poderá ter uma senha única conhecida por todos os usuários autorizados.
security=user
Segurança por usuário, local. A senha do usuário é reduzida a letras minúsculas e confrontada
com a senha Unix. Essa modalidade de segurança obriga que os usuários sejam cadastrados no Linux, e suas
senhas sejam atribuídas corretamente. As operações sobre arquivos e de impressão serão feitas com a
permissão do respectivo usuário Unix. Todavia, pode-se abrir aos hóspedes o acesso a determinados volumes
ou impressoras — para esses objetos, a segurança operará no estilo SHARE.
security=server
Segurança por usuário, remota. O Samba pega o nome de usuário e a senha, e autentica junto a
outro servidor, que poderá ser outro Linux rodando Samba, ou um Windows NT. Apesar da autenticação ser
remota, ainda é necessário criar os usuários Unix localmente em determinados casos.
security=domain
Segurança por usuário, remota. Praticamente idêntica à modalidade SERVER, porém convive
com instalações mais complexas onde existem computadores NT operando como PDCs (primary domain
controllers) e BDCs (backup domain controllers). Nesse modo, mais de um servidor de autenticação pode ser
especificado na linha password server do arquivo de configuração.

203
Treinamento Linux – Administração, Redes e Serviços

Continuação do /etc/samab/smb.conf:
map to guest = Bad User
Quando tentarem efetuar um login, e o usuário ou a senha não sejam válidos, será repassado
para o usuário visitante: Onde são válidos: “Bad User” (mau usuário), “bad password” (má senha)ou “never”
(não será repassado para o usuário visitante).

; password server = Senhs_server


Servidor de senhas, ou seja, o NetBIOS da máquina a qual o Samba vai fazer autenticações.
; password server = <NT-Server-Name>
Especifica o nome do servidor de usuários e senhas, quando especificado security = server.
; password level = 8
; username level = 8
Quando a senha não for válida tente oito modos diferentes. Ex.: Para uma senha ou usuário
“abcdefgh”, tente abcdefgh Abcdefgh aBcdefgh ... ABCDEFGh ABCDEFGH.
; encrypt passwords = yes
; smb passwd file = /etc/smbpasswd
O Windows 98, bem como versões mais recentes do Windows NT Workstation, transmitem
senhas criptografadas no processo de autenticação. Como não é possível usar o mesmo padrão de
criptografia, é necessário executar o programa smbpasswd para a criação de senhas criptografadas.
; unix password sync = Yes
; passwd program = /usr/bin/passwd %u
; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully*
; username map = /etc/smbusers
É usado para sincronizar a alteração de senhas feitas no Windows, para o servidor linux.
Usuários UNIX não precisam necessariamente ter o mesmo nome dos usuários NetBIOS. A tabela
/etc/smbusers permite estabelecer equivalências entre nomes de semelhantes.
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
Esta opção é um tuning de performance. Em muitos casos ela realmente melhora o desempenho.
; max xmit = 16384
É o tamanho do pacote de dados enviado para as estações, normalmente é melhor deixar tudo
com 16 KB em se tratando de interfaces de rede tipo NE2000.
; remote announce = 192.168.2.255/GABRIEL
Esta opção indicará para as máquinas da rede 192.168.2.255, que esta máquina estará no grupo
de trabalho GABRIEL, além do grupo original.
; remote browse sync = 192.168.3.25 192.168.5.255
Esta opção vai anunciar para outra rede, que existe o workgroup remoto e que pode ser
acessado.
local master = yes
Navegador-mestre local (local master browser). É um servidor onde são guardados os nomes das
máquinas que existem na rede windows. Configure a seguinte opção como “no” se você não quiser que o
Samba se torne um mestre local. Do contrário, as regras normais de eleição é que valerão (ou seja, local
master = yes NÃO garante que o Samba seja o mestre local).
os level = 33
Nïvel do sistema operacional, que determina sua preferência em tornar-se mestre local. Quanto
maior o número, maior a chance de o servidor tornar-se um mestre. O padrão do Windows NT é 32. Evite
colocar o mesmo número de alguma máquina Windows, pois a mesma não gosta de perder eleições para
máquinas Linux que tenham o mesmo número.
; domain master = yes
Se a seguinte linha for configurada como “yes”, o Samba será o navegador-mestre do DOMÍNIO.
Não use esta opção se você já tem um servidor NT que seja o PDC.
preferred master = yes
Esta opção força uma eleição para mestre local quando o Samba é acionado, e lhe dá uma
pequena vantagem na disputa. Não habilite esta opção em mais de uma máquina, do contrário os diversos
'preferred masters' vão ficar promovendo eleições para mestre o tempo todo; isso causará tráfego inútil de

204
Global Sul Informática

rede e pode prejudicar a qualidade das listas de navegação; por exemplo: elas poderão não conter todas as
máquinas da rede e não ficará tão lento, se tudo estiver configurado corretamente.
; domain controller = <NT-Domain-Controller-SMBName>
Use somente se existe um NT SERVER em sua rede, configurado para ser o primeiro domínio de
controle.
; domain logons = yes
Caso seja habilitado, tornará o linux um domínio de login, para estações windows 95
time server = True
Sicroniza a data do sevidor para as estações. Interessante para ter controle sobre data/hora de
criação de arquivos e coisas do gênero. E em sua máquina Windows/MS-DOS digite para configurar a hora:
net time /set /yes.
name resolve order = wins lmhosts bcast
É a forma de como será procurada a máquina: As opções são: lmhosts, host, wins e bcast
lmhosts – Tenta usar um arquivo de configuração do Samba. Hosts - Tenta resolver o nome pelo ip, usando
o /etc/hosts, o NIS ou o DNS. Wins – Procura o ip no servidor wins. Bcast – Procura a máquina por
Broadcast. É recomendável deixar sempre o bcast como último recurso, pois assim pelo menos a rede local
continuará funcionando se por acaso ficar isolada das demais redes.
; wins support = yes
A comunicação inter-redes Wins grava as informações repassadas pelos servidores masters de
cada rede e possibilita que uma rede converse com outra. Ao retransmitir essas informações do mestre de
domínio, o mestre obtém a lista de servidores mestre do servidor Wins. Essa retransmissão demora em média
15 minutos, e usa endereços IP.
; wins server = 10.120.1.26
Indique aqui o IP do servidor WINS da instalação. Se o computador for ele mesmo o servidor
WINS (a linha “wins support = yes” está ativa), não use esta opção, pois do contrário o Samba acabará
conectando a si mesmo, recursivamente, e *travará*.
; wins proxy = yes
Se o nmbd responder às perguntas do nome da transmissão em nome de outras máquinas. Você
pode necessitar ajustar este a “sim” para alguns clientes mais velhos.
dns proxy = no
Diz ao Samba se é ou não para tentar resolver nomes netbios, através do nslookup do DNS.
; preserve case = yes
Diz para o SAMBA preservar o nome do arquivo como foi enviado pela estação.
; short preserve case = yes
Diz para o SAMBA interpretar minúsculas como minúsculas.
; interfaces = 168.1.1.1/24 10.120.1.24/16
Se a máquina possuir mais de uma placa de rede, é necessário estabelecer em que interface(s) o
Samba vai atuar. Note que isso NÃO é suficiente para evitar conexões originárias de redes diferentes da(s)
especificada(s), pois os soquetes UDP do Samba ‘ouvem’ em todas as interfaces. Veja a linha “hosts allow”,
mais acima, para configuração de segurança. No exemplo abaixo, a máquina tem 2 intefaces, cujos números
IP e netmasks estão bem óbvios.
[homes]
comment = Diretórios Pessoais
A seção [homes] especifica que deve ser ativado um serviço que permite o acesso aos diretórios
pessoais de seus respectivos usuários. Isso permite que os usuários acessem seu home.
browseable = no
Evita que os diretórios pessoais sejam vistos por outros usuários
read only = no
Samba proíbe por padrão a gravação em recursos exportados. O parâmetro a seguir permite que
os usuários possam gravar em seus diretórios pessoais.
guest only = no
Permite que apenas o hóspede(convidado) tenha acesso ao volume ou impressora que contiver o
parâmetro guest only = yes.
writeable = yes
Permite que exista gravação no compartilhamento.

205
Treinamento Linux – Administração, Redes e Serviços

[printers]
A seção [printers] especifica como se configura uma impressora, para ser usada pelo Samba, ou
faz o sistema ler as configurações do printcap. A configuração abaixo fará com que os usuários das estações
Windows vejam todas as impressoras do servidor.
; printer name = laserwriter
comment = Spool de Impressão
path = /var/spool/samba
Este parâmetro define o nome da impressora para a qual os serviços de impressão serão
enviados. Exemplo:
browseable = no
Controla se o compartilhamento será visualizado na lista de recursos disponíveis. O padrão é:
guest ok = no
Caso este parâmetro seja definido como “yes” para um serviço, então nenhuma senha será
solicitada ao usuário. Os privilégios serão iguais aos definidos para a conta “guess account” definida no
parâmetro anterior. Exemplo:
; read only = no
; writeable = yes
; write ok = yes
Caso este parâmetro seja definido como "no", não será permitida a criação ou modificação de
arquivos no diretório compartilhado. Note-se que o parâmetro "printable = yes" sempre permitirá a gravação
através de operações de geração de arquivos temporários de impressão. Exemplos:
São iguais
printable = yes
Caso public seja = yes não é necessário possuir uma senha para entrar no compartilhamento.
public = no
read only = yes

Este parâmetro permite que a seção atual seja uma cópia de qualquer seção anterior. Caso haja
necessidade de alterar um parâmetro, basta informá-lo na seção atual. Esta funcionalidade é muito útil para a
criação de modelos que podem ser replicados e rapidamente alterados para todos os recursos
compartilhados.

[home]
copy = homes
guest ok = yes
read only = yes

Especifica o diretório ao qual o usuário do serviço terá acesso. No caso de impressoras, será o
diretório de arquivos temporários de impressão. Exemplo:

[PUBLICO]
comment = Diretorio Publico
path = /home/samba
public = yes
guest ok = yes
printable = no

Permite configurar o número máximo de conexões simultâneas a esse serviço. Exemplo:


; max connections = 10
Permite definir um limite aparente da área em disco que pode ser utilizada pelo
compartihamento. A unida de padrão é igual a Mb (megabytes). Exemplo:
; max disk size = 250

206
Global Sul Informática

Para compartilhar o CD-ROM do servidor nas estações. Usa o mesmo princípio do diretorio
PUBLICO.

[CDROM]
comment = CD-ROM SAMBA
path = /mnt/cdrom
read only = yes
public = yes

Permite a gravação no spool.

printable = no
guest ok = yes
browseable = yes

; admin users = adilson, gabriel, katia


Permite definir os usuários que terão privilégios de administração do compartilhamento, ou
seja, terão poderes de superusuário. E pode ser usado a qualquer seção de compartilhamentos.

; [netlogon]
; comment = Network Logon Service
; path = /home/netlogon
; guest ok = yes
; writable = no
; share modes = no

Descomentando essas linhas seguintes será criado o diretório do netlogon para login's de uma
sessão do domínio.

; [fredsprn]
; comment = Fred's Printer

A impressora privada será usada somente por fred. Os dados do spool serão colocados no
diretório home, usado somente por fred. Abaixo o usuário terá acesso de gravação para o diretório spool.

; invalid users = @user


; valid users = fred
; path = /homes/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes

Valid users é usado para especificar quais os usuários que podem usar o serviço. E invalid users
expecifíca quais não têm acesso. Caso deseje trabalhar com um grupo use @.

; force create mode = 775


; force directory mode = 2775
Quando o sistema for carregar um arquivo é para ele utilizar as permissões informadas
aqui.
; [pchome]
; comment = PC Directories
; path = /usr/pc/%m
; public = no
; writable = yes
...

No próximo compartilhamento, cada máquina terá um compartilhamento diferente. Pode ser


usado uma configuração por usuários, para isso, basta substituir o %m por %u.
Calma, são apenas umas “trezentas” linhas, veja que tem bastante comentários “#” para que o
usuário saiba o que faz aquela parte da configuração e o que tiver “;” também é um comentário, mas se for
retirado o “;” aquela linha valerá na configuração do seu servidor Samba. Lembra?

207
Treinamento Linux – Administração, Redes e Serviços

Esse é o arquivo original /etc/samba/smb.conf com umas pequenas mudanças, por isso que ele é
grande desse jeito, mas depois que o usuário fizer suas configurações, ficará bem pequeno, talvez não chegue
nem a cinqüenta linhas. O ideal é que antes de editarmos esse arquivo, façamos uma cópia dele com o
comando cp -v /etc/samba/smb.conf /etc/samba/smb.conf.bkp.
Assim teremos o arquivo /etc/samba/smb.conf.bkp que é o arquivo original, qualquer coisa que
dê errada é só fazer o processo ao contrário que recuperaremos o arquivo original.
Veja ainda neste capítulo como é que fica o arquivo /etc/samba/smb.conf depois de editado
certinho e apenas com as mudanças necessárias; isso será feito no subtópico “Configurando pelo modo texto
— Swat”— lá o leitor poderá acompanhar as mudanças com mais exatidão e por enquanto é só ler os
ensinamentos aqui e depois colocar em prática.
Com o Samba um usuário poderá acessar máquinas Windows e máquinas Linux, imprimir em
máquinas Windows e/ou Linux de um modo totalmente transparente e fácil de ser entendido e algumas vezes
pode ser solicitado uma senha ou não.
Adicionando o SAMBA a um Domínio Windows NT/2000
Vamos supor que sua rede já possui um servidor PDC (WindowsNT) e você deseja adicionar um
servidor samba, então será necessário antes de tudo configurar o samba agora com algumas pequenas
mudanças, porém simples de entender. Não podemos aqui utilizar o parâmetro “domain master” e “domain
logons”, como vimnos anteriormente e também devemos manter o parâmetro “os level” inferior a 65.
O nome NetBios do servidor samba deve também ser adicionado ao PDC do Domínio NT, isso é
feito através do Gerenciador de Servidores para Domínios. Assim, uma conta será criada para o samba no
PDC.
Como exemplo, vamos citar um servidor samba como o nome NetBios “Meu Samba” e o
Domínio chamado “COMERCIAL”. O PDC terá o nome “File_Server” e vamos supor que também existam
também dois controladores de backup´s com os nomes “Meu_Backup1” e “Meu_Backup2”.
Agora para juntar-se ao Domínio, o servidor SAMBA deve executar o comando:

smbpasswd -j COMERCIAL -r File_Server

Caso tenha dado certo, você terá a mensagem:

smbpasswd: Joined domain COMERCIAL

Porém, se algo der errado, confira o nome NetBios dos servidores, se o samba está ativado e os
parâmetros do arquivo /etc/samba/smb.conf e tente novamente. O comando anterior ativa o protocolo de
mudança de senhas, gerando um nova conta aleatória para o servidor samba e normalmente guardada em:
/usr/local/samba/private.
O nome do arquivo será semelhante a “COMERCIAL.Samba.mac”. Edite o /etc/samba/smb.conf
e inclua os seguintes parâmetros na seção [global]:

# O SAMBA agora pertence a um Domínio existente.


security = domain
# Nome do Domínio utilizado.
workgroup = COMERCIAL
# Para logon com criptografia.
encrypt passwords = yes
# Para a autenticação no domínio.
password server = File_Server Meu_Backup1 Meu_Backup2

Reinicialize o servidor samba para validar as mudanças.


Adicionando estações NT e 2000 em domínio SAMBA
Agora a situação aqui é um pouco diferente, vamos supor que você possui um PDC SAMBA e
estações Windows NT Workstation ou Windows 2000, deve seguir o modelo abaixo para criar contas
específicas para estas estações. Somente podemos adicionar estações NT Workstations e 2000 a um domínio
samba se a encriptação de login estiver habilitada sendo no servidor samba, necessário especificar o
parâmetro encrypt passwords = yes.
Se o arquivo smbpasswd ainda não existir vamos criá-lo:

touch /usr/local/samba/private/smbpasswd
chmod go-rwx /usr/local/samba/private/smbpasswd

208
Global Sul Informática

DICA: É interessante destacar que dependendo da distribuição este arquivo pode estar no diretório
/etc como link (ou não) para seu diretório original, guardando muitas vezes a configuração sem nada
escrever em /usr/local/samba/private/smbpasswd. Confira a localização correta do arquivo e só então
siga em frente.

Agora vamos adicionar a conta NT/2000. Veja que o “$” foi adicionado ao final do nome mas
para servidores samba posterior a versão 2.0.7, isso não é mais necessário. Ficaria assim:

adduser -g ESTACOES -c ALIAS_ESTACAO_1 -m -s /bin/false NOME_ESTACAO_1$

Agora lá o /etc/passwd há uma conta semelhante essa:

...
nome_estacao1:x:505:501:apelido_estacao1:/dev/null:/bin/false
...

Feito isso, agora vamos criar uma conta da estação no Samba:

smbpasswd -a -m NOME_ESTACAO_1

Simples não? Crie uma conta válida do usuário no Linux:

useradd -G grupo1,grupo2 -n <nome_do_usuario> ou


useradd -g grupo -n <nome_do_usuario>

Não vamos esquecer da senha né? Comando passwd <nome_do_usuario>. Quase lá, crie esta
conta do usuário no samba utilizando a mesma senha, comando smbpasswd -a <nome_do_usuario>.
Para que a estação NT/2000 possa agora participar do Domínio, vá até o Painel de Controle do
Windows e selecione Network - Identification Tag. Mude o Domínio para o qual você especificou em
/etc/samba/smb.conf (workgroup = “nome_do_dominio”). Não marque a opção “Create a Computer
Account in the Domain” pois não irá funciona. Pressione OK e após alguns segundos a mensagem “Welcome
to Whatever Domain” aparecerá na tela. reinicialise (como sempre), e “voi-a-lá” o logon estará disponível.
Atenção: há outras técnicas se se fazer isso, existem utilitários que melhoram a maneira de se
configurar, mas é mais ou menso por aí.
Resumo das seções
Seção [global]: Os parâmetros nesta seção aplicam-se ao servidor como um todo ou como
padrões para que todas as seções não necessitem especificá-los novamente.
Seção [homes]: Caso uma seção com essa denominação seja incluída no arquivo de
configuração, os serviços de conexão de clientes com os seus diretórios pessoais serão disponibilizados
automaticamente. No Linux eles serão iguais a /home/nome_do_usuário.
É sugerido o uso do parâmetro ‘browsable = no’ nesta seção, evitando assim que um usuário
comum possa visualizar os diretórios pessoais alheios.
Seção [printers]: Seção dedicada a impressoras, permitindo que os clientes (Linux, Windows,
DOS, ...) possam utilizar uma impressora conectada à máquina local, configurada através do utilitário
printcap.
Uma típica seção de impressora terá o seguinte aspecto:

[printers]
path = /usr/spool/public
writeable = no
guest ok = yes
printable = yes

Parâmetros: Parâmetros definem os atributos das seções em que se encontram, sendo que
alguns deles são específicos e podem ser usados somente em determinadas seções.
Varíaveis: Muitos valores definidos para um parâmetro podem ser substituídos por um valor
definitivo somente no momento do acesso ao recurso compartilhado. Por exemplo: a opção “path = /tmp/

209
Treinamento Linux – Administração, Redes e Serviços

%u” pode ser interpretada como “path = /tmp/adilson”, caso se tenha acessado o sistema com o nome de
usuário igual a adilson. Dentre as diversas variáveis disponíveis, apresentamos a seguir as mais
significativas:
Modelos de compartilhamento
Olha, aqui eu vou apresentar alguns modelos de compartilhamento que você poderá estudar
para melhorar os seus modelos. Mas você poderá encontrar exemplos bem interessantes na Internet para
usar na sua Intranet.
Somente Leitura
Qual a importância desse tipo de compartilhamento? Isso é útil quando não desejamos que
pessoas alterem o conteúdo de um compartilhamento. Vai que você já está com quase 1 GB de MP3 como eu e
dai vai um “carinha” lá e dá um delete, sim, pois ele pode ver e acessar o compartilhamento pelo Windows,
lembra? Já foi para o espaço semanas de garimpagem na Internet atrás de bons Mp3. Como se proteger
então?
Simples, podemos fazer de duas formas:
a) negando o acesso de gravação para todo o compartilhamento ou
b) permitindo leitura somente para algumas pessoas, as “mais chegadas” sabe como é né? O
parâmetro usado para fazer a restrição de acesso somente leitura é o read only = yes ou seu antônimo
writable = no.
Exemplos:

[MP3]
comment = Acesso a leitura para todos
path = /home/mp3
read only = yes
public = yes

No exemplo, o diretório/home/mp3 foi compartilhado com o nome [MP3], de forma pública,


acesso sem senha: public = yes, e todos podem apenas ler seu conteúdo read only = yes. Pronto acabou a festa
do delete.

[DIVIX]
comment = Acesso a gravação para todos com excessões
path = /home/divix
read only = no
read list = @chefia, adilson, gabriel, aurea, sonizia
invalid users = root, katia

Neste, o compartilhamento[DIVIX] foi definido como acesso leitura/gravação para todos, read
only = no, mas os usuários do grupo @chefia (claro!) e os usuários adilson, gabriel, aurea, sonizia terão
sempre acesso leitura, read list = @chefia, adilson, gabriel, aurea, sonizia.
Observe também que foi colocado uma proteção para que o superusuário não tenha acesso a ele,
invalid users = root e também uma usuária katia, alias essa não vai ter direito nunca mais. Sempre que você
não quiser que um usuário compartilhe, coloque-o aqui.
Leitura e escrita
Aqui já fica interessante as coisas, vai que você é da turminha do MP3, e a sua missão é baixar
por dia no mínimo umas 2o (vinte) músicas MP3, veja só quantas você vai ter no fim do mês, isso sem contar
com os seus amigos das salas ao lado.
Então é interessante que você e seus amigos sugadores de MP3 possa gravar no acesso do samba
não é mesmo?
Isso é bem simples de ser feito e pode ser feito de duas formas:
a) acesso total de gravação para os usuários e
b) acesso de gravação apenas para determinados usuários. Este controle é feito pela opção read
only = no e seu antônimo equivalente writable = yes. Exemplos:

[FESTAMP3]
comment = Acesso de gravação para todos.
path = /home/mp3
writable = yes
public = yes

210
Global Sul Informática

No exemplo, o diretório /home/mp3 foi compartilhado com o nome teste [FESTAMP3], de


forma pública, acesso sem senha, public = yes e todos podem ler/gravar dentro dele, writable = yes que é o
que nos interessa.

[FESTADIVIX]
comment = Acesso a leitura para todos com excessões
path = /home/divix
writable = no
write list = @chefia, adilson, gabriel, aurea, sonizia

Neste, o compartilhamento path = /home/divix foi definido como acesso de leitura para todos,
writable = no, mas os usuários do grupo @chefia e os usuários adilson, gabriel, aurea, sonizia serão os únicos
que terão também acesso a gravação.
Modo oculto
A idéia de criar um compartilhamento invisível ou oculto é muito importante, pois algumas
vezes precisamos do compartilhamento mas não queremos que todos o vejam, entendeu? Para não exibir um
compartilhamento da lista de compartilhamentos das máquinas é simples, utilize o parâmetro browseable =
no. Exemplo:

[FOTOS]
path = /home/fotos
comment = Diretório temporário de “arquivos fotográficos”
read only = yes
browseable = no

Neste exemplo, o diretório path = /home/fotos foi compartilhado através de [FOTOS] com
acesso somente leitura, read only = yes e ele não será mostrado na listagem de compartilhamentos do
ambiente de rede do Windows.
Mas como é que você vai acessá-lo? Veja que o compartilhamento continua disponível, porém
ele poderá ser acessado da estação Windows, especificando a \\máquina\compartilhamento. Lembre do
caminho compartilha e no Windows Explorer ou pelo menu executar use:

\\nome_do_servidor_samba\teste

Ao contrário das máquinas Windows onde é necessário adicionar um “$” do nome de


compartilhamento para criar um compartilhamento oculto (como FOTOS$) o SAMBA cria um
compartilhamento realmente oculto, não aparecendo mesmo na listagem do smbclient. Que interessante né?
Sem pedido de senha
Bom, logo de início eu já vou lhe avisando que isso não é nada interessante, mas como é possível
e precisamos aprender, vamos lá. Aconte em algumas situações onde uma hora precisamos tornar um
compartilhamento acessível publicamente, exemplos disto incluem um diretório que contém drivers de
impressoras, arquivos comuns, um diretório temporário, diretório geral de download da Internet, êta festa
danada hein? etc.
Para fazer isso ao publico é muito simples use a opção public = yes ou guest ok = yes. O UID
utilizado no acesso público é especificado pelo parâmetro guest account, portanto ele deverá ser um usuário
válido do sistema, então esses “carinha” deverá estar cadastrado. Caso você queira somente definir acesso
guest a um compartilhamento, especifique a opção guest only para o serviço, desta forma, mesmo que o
usuário tenha acesso, ele será mapeado para o usuário guest.
Você sabia ? Que uma boa medida de segurança é usar o usuário nobody pois a maioria das
distribuições de Linux seguras adotam-o como padrão como usuário que não é dono de quaisquer
arquivos/diretórios no sistema, não possui login, senha ou sequer um diretório home, o apache por exemplo é
um caso desses.
Veja um exemplo disponibilizando o compartilhamento [download] para acesso público com
acesso a gravação:

[global]
guest account = nobody
...
...
[download]

211
Treinamento Linux – Administração, Redes e Serviços

path = /downloads
comment = Jaz aqui os downloads de Usuários. Oh Festa.
guest ok = yes (aqui poderá ser também "public = yes").
writable = yes
follow symlinks = false

O parâmetro guest account também poderá ser especificado no compartilhamento, isto é útil
quando não quiser que o usuário que acesse o compartilhamento não seja o mesmo usado na diretiva
[global].

DICA: O compartilhamento funciona de modo recursivo, ou seja, todos os arquivos e subdiretórios


dentro do diretório que compartilhou serão disponibilizados, portanto tenha certeza da importância
dos dados que existem no diretório, verifique se existem links simbólicos que apontam para ele, etc.

Pontos de montagem com Samba


Supondo-se que temos uma máquina Windows com IP 10.6.12.150, para isso use o comando
smbclient -L 10.6.12.150 para saber o que está compartilhado nessa máquina. Agora que nós já obtivemos
aquelas informações com o comando smbclient poderemos perfeitamente montar a estação Windows na
estação Linux depois acessá-la normalmente, como se fosse um diretório qualquer. Vamos montar o
notebook (Windows) no micro gabriel, que é o micro 02 (Linux) onde o micro 01 que é o notebook tem o seu
disco “C” compartilhado:

[root@gabriel MP3]# mount -t smbfs //notebook/c /mnt/notebook/


INFO: Debug class all level = 1 (pid 2545 from pid 2545)
Password:

O comando smbmount serve para montar o notebook no micro gabriel. Não é preciso passar o
parâmetro “-t smbfs” como faríamos, se estivéssemos usando o comando mount, ou seja, seria assim mount -
t smbfs //notebook/c /mnt/notebook/. Será solicitada a senha que deve ser uma senha válida na máquina
Windows.
Depois para ver se foi montado certinho use o comando df. E você verá que a notebook pronto
para ser acessado, tando pelo modo texto quanto pelo modo gráfico.
Depois que você tiver o acesso ao notebook que é o nosso caso, todas as operações de
gerenciamento de arquivos, como renomear, copiar, duplicar, copiar, colar, apagar, mover, métodos de
visualização, preview etc. são válidas aqui; basta que você conheça o gerenciador que está usando no sistema
Linux.

DICA: Depois que estiver tudo montado você poderá por exemplo, copiar qualquer arquivo/pasta de
qualquer lugar para os ponto de montagens controlados pelo servidor samba, no caso da figura
anterior. A sua única limitação se você tiver essa permissão será o espaço em disco.

Windows imprimindo em Linux


Se você que configurar o Linux como um servidor de impressão Windows, é simples, será
necessário ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo /etc/samba/smb.conf:

[IMPRESSORA]
path = /tmp
printer name = Minha Impressora
printable = yes
print command = lpr -r -h -P %p %s
valid users = adilson gabriel sulamita
create mode = 0700

O compartilhamento acima tornará disponível a impressora local, conhecida como “lp” para
máquinas Windows com o nome “Minha Impressora”. Caso você esteja configurando esse arquivo na mão,

212
Global Sul Informática

coloque aqui o nome de sua impressora, exemplo “HP 656 Seria c”. Também uma impressora alternativa
pode ser especificada modificando a opção “–P” da linha de comando do comando lpr. No noss caso somente
os usuários “adilson gabriel sulamita” poderão usar esta impressora, pois está muito caro o cartucho novo de
tinta.
Os arquivos de spool (para gerenciar a fila de impressão) serão gravador em /tmp e o
compartilhamento [IMPRESSORA] será mostrado como uma impressora, printable = yes.
Mas não é só isso você precisará instalar o driver sua impressora no Windows e escolher
impressora instalada via rede e seguir os demais passos de configuração que todos nós já sabemos. Para
imprimir em uma máquina Linux é muito fácil. Você apenas precisa certificar queo servição de impressão
está no ar, hoje o mais usado é o CUPS – Commom Unix Printing System, que é uma idéia muito boa de
impressão local e remota, pois com o cups é possível imprimir pela Internet, claro, deixe-o configurado e a
impressora ligada.
Linux imprimindo em Windows
Para imprimir em uma máquina Windows estado em uma estação Linux você faz a mesma coisa.
Instale sua impressora no Linux e depois na hora de imprimir é só apontar para o IP da máquina Windows
correspondente. Existem vários utilitários de impressão, desde o velho printtool, mas eu recomendo que você
use o CUPS, pois a grande maioria das distribuições estão o adotando como configurador oficial.
O CUPS além de ser moderno permite uma série de configurações que somente ele tem para
oferecer. Como o CUPS é um servidor você deverá “levatar” e/ou “derrubar” seus serviços lembre-se disso.
Caso você precise de um driver de impressora que não tiver no CUPS, tente verificar em www.linuxprint.org
ou www.cups.org,lá com certeza você vai achar pois tem mais de 2000 (doi mil) drivers, para tudo quanto é
tipo de impressora.
Você já aprendeu com configurar sua impressora no Linux, porém vamos relembrar bem
rapidinho. Use o comando cupsdconf para carregar o configurador do servidor de impressão. Lembre-se: —
uma coisa é configurar o servidor e outra coisa é configurar a impressora, essa você poderá configura pelo
centro de controle do KDE, comando kcontrol ou pelo centro de controle da Conectiva, comando kclcontrol.
Algumas distribuições apresentam o kprint, kprinwizard que é um assistente bem legal de
configuração de impressora no sistema. Caso você ussae o gnome, saiba também que ele apresenta alguns
utilitários para configuração de impressoras.
Eu lhe aconselho que configure sua impressora com calma, pois o configurado oferce inúmeras
possibilidade de impressão, dentre elas a impressão em postscript muito usado em impressoras laser e
impressão diretamente em formato PDF da adobe, muito útil para a criação de documentão para leitura on-
line. Depois que você configurar su impressora, a partir de qualquer programa você poderá imprimir, pode
ser para uma impressora lccal ou para um impressora remota como é o nosso caso.
Para quem usa o LPRng+SMB
Há usuários que usa o formato de impressão LPRng, ao invés do tradicional lpr e do CUPS.
Então você vai precisar fazer umas mudanças em seu arquivo de configuração. Além de alterar a variável
“printing” no /etc/samba/smb.conf (altere de bsd para lprng), são necessárias algumas outras alterações.
Vamos supor que a sua impressora está sendo compartilhada via samba seja “MinhaImpressora”, você deverá
mudar o dono e as permissões do diretório de spool dela que é /var/spool/lpd/MinhaImpressora:

chown root.root /var/spool/lpd/MinhaImpressora


chmod 1777 /var/spool/lpd/MinhaImpressora

Agora você deverá colocar na seção [printers] do seu /etc/samba/smb.conf os seguintes


comandos para a impressão e depois é só testar:

print command = /usr/bin/lpr -U%U@%M -P%p -r %s


lpq command = /usr/bin/lpq -U%U@%M -P%p
lprm command = /usr/bin/lprm -U%U@%M -P%p %j
lppause command = /usr/sbin/lpc -U%U@%M hold %p %j
lpresume command = /usr/sbin/lpc -U%U@%M release %p %j
queuepause command = /usr/sbin/lpc -U%U@%M -P%p stop
queueresume command = /usr/sbin/lpc -U%U@%M -P%p start

Outra coisa que você deve saber é que o spool de impressão vai ficando cheio, pois o samba vai
deixando todos os arquivos impressos no diretório de spool, e com o tempo diretório vai ficar lotado e dái não

213
Treinamento Linux – Administração, Redes e Serviços

tem como você e os outros usuários imprimirem. Mas isso é simples de ser resolvido com o comando
seguinte:

find /var/spool/lpd/MinhaImpressora -type f -mtime 1 -exec rm -f {} \;

Esse comando apago “o lixo” que tenha pelo menos um dia. Agora para não ter digitar esse
comando todo dia você pode colocá-lo nos arquivos de incialização para que quando você entre no sistema ele
já faça uma limpeza ou no diretório /etc/cron.daily.

Configurando o samba através do Swat no Linux


O SWAT é uma ferramenta Web de Administração do Samba onde nós poderemos usar um
navegador para que as configurações necessárias do servidor Samba sejam feitas, pode ser qualquer
navegador, Netscape, Mozilla, Galeon, Konqueror etc. Ele é disponibilizado em conjunto com o pacote Samba
e está presente em praticamente todas as distribuições Linux.
Para usarmos o SWAT deveremos editar o arquivo /etc/services, adicionando-se a seguinte linha
ou descomentando-a caso esteja comentada:

swat 901/tcp

A escolha do número da porta não é importante, porém não deve ser menor que 1024 e não pode
estar em uso no momento. Depois deveremos editar o arquivo /etc/inetd.conf e adicione o descomentar à
seguinte linha:

swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat

Pronto. A seguir pare e reinicie o inetd para que as mudanças tenham efeito. Isso poderá ser
feito por um dos seguintes comandos:

/etc/rc.d/init.d/inet stop;
/etc/rc.d/init.d/inet start;

ou

# killall -HUP inetd

Para acessar o swat, carregue o navegador de sua preferência. Geralmente usamos o Netscape e
digite na linha de endereço http://localhost:901/. Então vai aparecer uma caixa onde você deverá entrar
como usuário root e sua devida senha. Depois de entrar com a senha correta, o navegador carregará o SWAT
e agora pelo modo visual e intuitivo você poderá fazer as configurações do servidor Samba.
Bom, o restante da configuração permanece igual, a única diferença é que agora estamos dentro
do Netscape e o SWAT é que irá gerar o arquivo /etc/smb.conf somente com as opções configuradas. O
arquivo final fica bem enxuto e compreensível e desse jeito é muito mais fácil ler e interpretar as
configurações.

Anotações:

214
Global Sul Informática

215
Treinamento Linux – Administração, Redes e Serviços

Capítulo 12

Conexões remotas
Vamos aprender neste capítulo, o básico sobre conexões remotas1 em ambiente Linux. Essas
conexões podem ser testadas em seu próprio micro e em outros micros, é claro. As conexões remotas mais
utilizadas são conexões do tipo Telnet que não oferece criptografia, SSH que tem uma boa criptografica,
conexões ftp para fazer download e upload de arquivos, conexões do tipo rLogin etc.
No sistema Linux Linux, isso já está implementado nativamente bastando que você apenas tenha
os pacotes/programas instalados e “levantes” os serviços necessários. Nada de ficar comprando programas e
pagando licenças, certo?

Usando o Telnet
Acho que você já ouviu falar em serviço telnet, esse tipo de serviço oferece login remoto em outro
computador ou no seu, e permite que você trabalha conectado como se estivesse em frente ao seu micro.
O problema é que ele é um pouco lento e não oferece criptografia, e se você estiver sem sorte
uma pessoa mais esperta com um bom sniffer poderá varrer os seus pacotes pela rede e capturar informações
que poderão revelar seu nome de login e sua senha de acesso e daí para fazer um estrago e apenas questão de
tempo. Ele substitui o rlogin e possui muitas melhorias em relação a ele, como o controle de acesso,
personalização de seção e controle de terminal.
O telnet é nada mais do que uma conexão entre duas máquinas com o objetivo de se fazer
alguma coisa nelas, que pode ser uma manutenção, execução de programas etc. Então para que usar telnet?
Eu diria apenas para aprender um pouco sobre conexões remotas , “pegar o jeitinho” e depois partir para algo
mais seguro, como um SSH por exemplo.
As principais características do telnet que você deve saber é que sua conexão é “rápida” porque
não utiliza transmissão de dados criptografada, recomendado para ambientes seguros, nesse sentido. O telnet
poderá ter suporte a criptografia se for via via SSL e ele possui controle de acesso tcpd feito pelo uso do
/etc/hosts.allow e /etc/hosts.deny os quais permitem ou impedem certos tipos de acessos.
O telnet é popular, pois maioria dos sistemas operacionais trazem este utilitário por padrão
como sistema de acesso remoto e também oferece suporte a terminais ANSI, tais como cores e códigos de
escape especiais para o console e uma grande variedade de outros terminais. Ele é muito simples, basta
digitar telnet IP Porta, onde IP é o IP da máquina, exemplo 10.6.12.150 e Porta é a porta 23 mas poderá ser
uma outra que esteja livre e aceita conexões por ela.

Habilitando telnet entre máquinas


Para usar o telnet, primeiro sua rede deverá estar configurada e estar no ar e o outro micro para
onde você está fazendo telnet deverá permitir sua conexão, senão não adianta falar que o telnet não está
funcionando. Feito isso procure a linha: # telnet 23/tcp no arquivo /etc/services e retire o comentário “#”
para que seja possível habilitar o serviço.
Os arquivos inetd precisão estar no ar; para isso use o comando:

/etc/rc.d/init.d/network restart
/etc/rc.d/init.d/inet restart

Outro fato importante é que os tcpwrappers precisam liberar uma entrada ou saída de telnet, ou
seja, no micro destino (onde vai conectar) o arquivo /etc/host.deny não poderá negar um conexão de telnet,
senão essa não ocorrerá. Depois para conectar ao servidor use o comando telnet [endereço] [porta] para
realizar conexões com uma máquina rodando o servidor telnet.

216
Global Sul Informática

:: Telnet de Windows para uma máquina Linux.

Você também poderá usar alguns parâmetros como:

-l [usuario]: Envia o nome de usuário ao computador remoto. Muito útil se você estiver
usando com o telnet-ssl.

-E: Desativa o caracter de escape

-a: Tenta fazer o login automático usando o nome de usuário local. Se o login falhar,
será solicitado o nome de usuário. Esta opção é usada por padrão com o cliente telnet-
ssl.

Você pode efetuar um teste em você mesmo com o comando telnet localhost, automaticamente
será usada a porta 23. Para conectar em outro micro veja esse exemplo telnet -l fabiano 192.168.150 24000.
Aqui está sendo feita uma conexão no servidor telnet com o nome de usuário fabiano e a porta usada será a
24000.
Depois que estiver tudo OK, execute o comando telnet <máquina> <porta>. Onde <máquina> é
o IP ou nome da máquina que você que acessar e <porta> é a porta de conexão que geralmente é a 23.
Veja aqui o usuário adilson se conectando no diagramacao de uma intranet. Para que o usuário
adilson possa entrar na máquina, ele precisará informar o seu login de acesso e sua senha, caso contrário ele
não terá acesso ao micro05.

[adilson@micro05 adilson]$ telnet diagramacao


Trying 10.6.12.250...
Connected to diagramacao.hackers.net.
Escape character is '^]'.
Conectiva Linux 9.0
kernel24-2.4.21-28872cl

login: adilson
Password:
Last login: Mon Sep 17 10:12:28 from 10.6.12.150
[adilson@diagramacao adilson]$

Agora, a partir desse ponto já é possível executar qualquer comando no servidor.

217
Treinamento Linux – Administração, Redes e Serviços

Usando o SSH
Vamos aprender aqui a usar o SSH — Secure Shell, como o próprio nome diz, é um shell seguro
para usar e trabalhar, pois oferece métodos de criptografia que o simples telnet não faz.
Um administrador poderá utilizar o SSH para acessos remotos substituindo serviços que
apresentam problemas graves de segurança como FTP, Telnet, POP3, X11 e outros. Vale lembrar que esses
serviços não possuem nenhum mecanismo de encriptação, facilitando a captura de dados por sniffers. O SSH
é muito parecido com o Telnet, mas possui suporte a criptografia de dados tornando a técnica de sniffer
ineficiente, evitando que logins, senhas, cartões de créditos e outros dados sejam grampeados por
hackers/crackers com más intensões.
O SSH possui atualmente várias implementações cliente e servidor, entre elas podemos destacar
ssh, openssh, ossh, sftp (Secure FTP) e outras. Os clientes são distribuídos para quase todas as plataformas
existentes e possuem interface gráfica ou trabalham em modo texto. A grande vantagem do SSH é o grande
suporte que possui em listas de discussão, profissionais, documentações, news group e diversas
implementações.
O SSH é uma fantástica ferramenta de administração remota, e vamos ver através de exemplos
práticos como ele pode substituir não só outras ferramentas de administração remota como telnet, rlogin, rsh
etc. como também serviços como, por exemplo, o FTP. Tudo isso com a certeza de que quem está conectando
na outra ponta está seguro, pois tem criptografia dos dados.
O que é SSH?
Esta ferramenta foi originalmente desenvolvida pela empresa finlandesa de mesmo nome
www.ssh.fi e surgiu como uma maneira de suprir as deficiências não só do telnet que não oferece criptografia,
mas como também do rlogin (Remote Login) e do rsh (Remote Shell). Com o tempo acabou transformando-
se na ferramenta padrão para a administração de sistemas no mundo Unix/Linux, substituindo totalmente o
telnet, tanto que o nome SSH é usado hoje não só para designar o programa e a empresa que o criou como
também suas variantes e clones (como era de se esperar).
A grande vantagem do SSH está em encriptar os dados que são transmitidos durante a sessão e
provavelmente ninguém gosta da idéia de ter suas informações transitando pela rede totalmente abertas,
principalmente senhas. Além disso, é possível que o SSH agregue outros serviços como, por exemplo, o SCP
(Secure Copy) que substitui com tranqüilidade e até com mais praticidade o bom e velho FTP.

Clientes SSH para Windows e Linux


Existem diversos clientes disponíveis, desde o original da SSH, que é um produto comercial com
versões para várias plataformas e sistemas operacionais, até versões gratuitas. Aqui vamos utilizar do
OpenSSH em www.openssh.org, que é originário do projeto OpenBSD www.openbsd.org, que é uma versão
adaptada do SSH de livre distribuição desenvolvido por Tatu Ylonen, mas com a inclusão de novos recursos e
outros algoritmos de encriptação que são o RSA e DES, como o Blowfish.
Caso você possua um outro cliente SSH, saiba que os comandos e a utilização são praticamente
idênticos, portanto, se você já possui uma outra versão não fique preocupado. Em virtude da política de
exportação de software de criptografia nos Estados Unidos, as versões internacionais, distribuições
originárias de lá, não podem conter o SSH, ficando com o usuário a tarefa de instalá-lo.
Caso você queira utilizar um cliente SSH a partir de uma estação Windows, para administrar
suas estações, saiba que existem clientes SSH para Windows, como o PuTTY, o TeraTERM ou o SecureTTY,
basta uma leve pesquisa no google www.google.com.br e você encontrará inúmeros utilitários para esse fim.
O utilitário PuTTY é o mais usado para fazer conexões telnet e SSH, pois ele é extremamente
leve e rápido e permite uma série de configurações além de ser muito simples de ser usado. O PuTTY tem
versões para Windows 95, 98, ME, NT, 2000 e XP e Linux e por isso vou falar um pouco sobre ele.
Você poderá obter o Putty em http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Os principais arquivos do PuTTY são:

a) PuTTY: O próprio utilitário para telnet e SSH.


b) PSCP: Um pequeno cliente SCP de linha de comando para cópia segura de arquivos.
c) PSFTP: Outro pequeno cliente de linha de comando para tranferências de arquivos tipo
FTP.
d) PuTTYtel: Um cliente apenas para telnet.
e) Plink: Interface para linha de comando para o Putty.
f) Pageant: Um agente SSH autenticador para PuTTY, PSCP e Plink.
g) PuTTYgen: Utilitário para geração de chaves RSA.

218
Global Sul Informática

Para usar o PuTTY é muito simples, execute-o e em Host Name or IP Adress digite o nome do
servidor ou IP, escolha a porta (23 ou 23), escolha o protocolo Raw, Telnet, Rlogin ou SSH. Quando a
conexão for efetua será solicitado uma nome de usuário e sua senha. Lembre-se que no servidor os serviços
(daemons) para o protocolo escolhido deverá estar no ar.
Lembra da idéia de executar remotamente aplicativos gráficos? Então, com o SSH também é
possível e não precisa fazer nenhum malabarismo. A vantagem é que como nós já sabemos a conexão está
criptografada.

:: Utilitário Putty para conexões Telnet e SSH.

Preparando o servidor
O pacote do SSH traz tanto o cliente como o servidor, o SSHD (ou SSH Daemon). No caso de
uma instalação a partir de pacotes RPM ou DEB, um script estilo System V (ou seja, funciona com os
parâmetros start, stop, restart etc.) será criado no respectivo diretório /etc/rd.d/init.d.
Na maioria das distribuições o arquivo de configuração SSH está no /etc:

###### $OpenBSD: ssh_config,v 1.10 2001/04/03 21:19:38 todd Exp $


...
# Host *
# ForwardAgent no
# ForwardX11 no
# RhostsAuthentication no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# BatchMode no
# CheckHostIP yes
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port 22
# Protocol 2,1
# Cipher 3des
# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
# EscapeChar ~

Os parâmetros desse arquivo serão explicados mais adiante. Após instalar o SSH, vamos utilizá-
lo. Para quem está usando o SSH pela primeira vez, é interessante criar o par de chaves públicas e privadas
para a sua estação. Isso é feito pelo comando ssh-keygen, basta executá-lo do seguinte modo ssh-keygen -b

219
Treinamento Linux – Administração, Redes e Serviços

512 -t rsa dentro do $HOME do usuário para que a chave criada seja para esse usuário, nesse caso a chave
será por padrão de 512 bits e usará criptografia RSA:

[gabriel@gabriel gabriel]$ ssh-keygen -b 512 -t rsa


Generating public/private rsa key pair.
Enter file in which to save the key (/home/gabriel/.ssh/id_rsa):
Created directory ‘/home/gabriel/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gabriel/.ssh/id_rsa.
Your public key has been saved in /home/gabriel/.ssh/id_rsa.pub.
The key fingerprint is:
53:19:3f:3a:ce:5d:76:e7:a9:ef:16:ec:39:3a:4b:af gabriel@gabriel.hackers.net
[gabriel@gabriel gabriel]$

Nesse exemplo, o usuário gabriel que tem direito de usar o ssh acabou de gerar uma chave
pública e poderá efetuar suas conexões agora a partir de qualquer máquina que operar com ssh tanto em
ambiente Windows, Linux, Unix, QNX, OpenBSD, FreeBSD etc.
Ele poderá efetuar conexão a partir de uma máquina Windows ou Linux. Para efetuar conexões
de uma máquina Linux ele deverá usar o comando SSH <nome_ou_IP>.
Na linha que informa “Enter file in which to save the key (/home/gabriel/.ssh/id_rsa):”, o
usuário gabriel poderia informar um arquivo para conter as informações do SSH ou simplesmente pressionar
[ENTER], para que os arquivos de configuração sejam criados automaticamente no diretório .ssh. Depois é
sugerido uma frase de identificação que poderá auxiliá-lo mais tarde quando da perda da senha.
Resumindo, será criado o par de chaves RSA que serão gravadas, por padrão, em seu diretório
HOME. Esse procedimento não é obrigatório, mas pode facilitar bastante a sua vida. Para testar se tanto o
cliente quanto o servidor estão funcionando corretamente, tente conectar-se em sua própria estação usando
ssh localhost. Usar o SSH é bastante simples, bastando incluir o nome (ou endereço IP) da máquina que se
deseja usar.
Aqui poderemos verificar como é uma chave pública que está fortemente criptografada e é
muito difícil de ser quebrada até mesmo por programas hackers consagrados.

[gabriel@gabriel gabriel]$ cat .ssh/id _rsa


——BEGIN RSA PRIVATE KEY——-
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,E3687E79E75B5657

M/B9KIw/nxHU4PG8PRTmfQwonguWLoblQnfC5FYPA/6zoyZTi4ju1c9BjNgTF8JX
qMEzsWH+0TswcmnIGYO7r8aNlCV2N/SMUUni7PfcTZs+axAUaWDEtcLWbzpDHx0S
3+S0G53xws0sIaZoYCDKTxFUGzGcQgaxQ1TecoUimwZP9sPGNUNpu90hFBkZltc0
qxtATdtY+OFrMYLy/lg3WEGCjQ2QPh+MnExHzhF83+XDHyDFJIJzZx4B0qPfQ/vr
VHqh6Rv/IGAwsaD8jQmFgezu7/OGYqag3OzYr4GGuQ2xISN1oeJDT3g+D5n/p/E7
YCXxFCkHwU9wxT8yert3OdvY5dZk8cziT0Rsy5BdzaO2Ep1xh8ufYVC6eJEQu2aK
2t8D7iR1fwcrNzjiJczBK8z5dycV36oP2O7avKFb9JE=
——END RSA PRIVATE KEY——-
[gabriel@gabriel gabriel]$

O utilitário ssh-agent serve para guardar a autenticação da chave pública (RSA, DSA). A idéia é
que o ssh-agent é iniciado em uma seção X (modo gráfico) ou em uma seção de login modo texto e em todas
as outras janelas e programas que são iniciadas como cliente do programa ssh-agent. Depois que a conexão
ocorreu com sucesso você estará pronto para “brincar” com o SSH.
Quando da primeira conexão em uma determinada estação, ele perguntará se deseja adicioná-la
à sua lista de hosts conhecidos (.ssh/know_hosts). E geralmente o SSH irá tentar se conectar na estação
remota usando a mesma conta que você está usando no servidor local. Para contornar esse problema, use o
parâmetro “-l” ou então “usuário@host” para especificar quem você deseja usar na conexão remota.

Execução de comandos no servidor


Depois de conectado a um servidor SSH nós temos algusn comandos que poderemos usar para
trabalharmos com arquivos.
a) Secure Copy: Pelo que foi mostrado até agora é bastante fácil substituir o telnet pelo SSH na
tarefa de administração de suas estações. Porém, o SSH permite que você utilize outros serviços usando a
conexão segura. O exemplo mais conhecido é o scp (Secure Copy) que permite a transferência de arquivos
entre estações.

220
Global Sul Informática

Supondo que você queira enviar um arquivo local para o seu servidor scp [arq_local]
[usuario@servidor_remoto]:[arq_servidor] ou supondo que você queira na sua máquina um arquivo que está
no servidor use o comando scp usuario@servidor_remoto:arq usuario@sua_maquina:arq.
Flagramos aqui uma tentativa de conexão sem sucesso; acompanhe:

[gabriel@micro05 gabriel]# ssh -l regina 10.6.12.5 regina@hackers.net ls | less


The authenticity of host '10.6.12.5 (10.6.12.5)' can't be established.
DSA key fingerprint is fc:aa:e7:5f:4c:d9:23:c6:a5:8f:60:83:91:96:af:1c.
Are you sure you want to continue connecting (yes/no)? Warning: Permanently
added '10.6.12.5' (DSA) to the list of known hosts.
regina@10.6.12.5's password:
Permission denied, please try again.
regina@10.6.12.5's password:
bash: regina@hackers.net: command not found

O usuário gabriel de alguma forma tentou executar um comando na máquina com IP 10.6.12.5;
mas, como ele não tem posse de todas as informações de que necessita, não conseguiu.
NOTA: O comando scp, como padrão de conexão, usa o rsh para fazer seu trabalho de cópias de
arquivos. Você tem, a seguir, uma descrição encontrada nas páginas de manual do rsh.
O comando rsh é um shell remoto que executa comandos na máquina que aceito sua conexão. O
rsh copia sua entrada padrão para o comando remoto, a saída padrão do comando remoto para a saída
padrão, e a saída padrão de erro do comando remoto para sua saída padrão de erro. O rsh normalmente
termina quando um comando remoto termina. As opções são as seguintes:

-K: Desliga a autenticação Kerberos.


-k: Requisita ao rsh obter tickets para a máquina remota.
-l: Por padrão, o nome-de-usuário remoto é o mesmo que o nome-de-usuário local. A opção
-l permite ser especificado um nome de usuário para a máquina remota.
-n: Redireciona a entrada de um dispositivo especial /dev/null.
-x: Liga a criptografia DES para todos os dados trocados. Isso pode introduzir um
atraso significante no tempo de resposta.

Alguns parâmetros de configuração do SSH


A seguir veremos alguns poucos parâmetros interessantes para configuração do arquivo
/etc/ssh/ssh_config. São eles:
X11 Forward
Outro serviço interessante que pode ser usado junto com o SSH, é o X11 Forwarding. Como
todos sabem (ou deveriam saber), o X/Window é bem mais do que uma interface gráfica, é um protocolo de
comunicação cliente/servidor que se utiliza do TCP/IP. Graças a isso, o cliente (a aplicação que você está
usando) e o servidor (quem está colocando as janelas na tela) podem tranqüilamente estar em computadores
diferentes. Assim como no telnet, o uso do X11 Forwarding dentro de uma sessão SSH garante a encriptação
daquilo que está indo de um lado ao outro da rede.
Você precisa antes habilitar o acesso da estação remota em seu X/Window local usando o
comando # xhost +<nome ou IP da estação remota>.
Depois de conectar-se e redirecionar a saída dos programas mudando a variável do sistema
DISPLAY para sua estação com o comando, # export DISPLAY=(nome ou IP da estação local):(n).
Sendo “n” a sessão do X que você pretende usar (geralmente este valor é 0).
Aumentando a segurança do SSH
Algumas vezes só a encriptação não basta, pois pela rede poderá estar trafegando informações
“altamente confidenciais”, logo vem aquele pergunta: Será que eu estou seguro de verdade? Então vamos
aumentar um pouco a segurança: no arquivo sshd_config poderemos configurar alguns parâmetros que
podem nos deixar mais garantidos quanto a quem e de onde nossa máquina pode ser acessada.
Os parâmetros que podem realmente restringir o acesso são:

1. PermitRootLogin: Yes ou No para habilitar o login como root.

2. AllowHosts: A relação de estações que podem se conectar, use o endereço IP ou então o


nome da máquina.

3. DenyHosts: A relação das estações que não podem se conectar.

221
Treinamento Linux – Administração, Redes e Serviços

4. AllowUsers: Aqueles que podem se logar na estação.

5. DenyUsers: Aqueles que, por motivos que não vamos discutir agora, não podem se logar.
Após essas alterações você vai precisar reinicializar o processo (daemon), isso pode ser
feito usando o script que está no init.d com ssh restart ou, então, com o comando
killall -HUP sshd ou pelo comando /etc/rd.d/init.d/ssh restart.

Caso queira disponibilizar o SSH automaticamente na hora de inicialização da máquina, use o


programa ntsysv e marque e opção sshd. Se você quiser saber com que e/ou quem está fazendo uma conexão
usando o SSH em sua máquina é muito simples, use o comando netstat | grep ssh.

Usando o FTP
O FTP – File Transfer Protocol, ou seja, protocolo de transferência de arquivos é a interface com
o usuário para o padrão ARPANET de protocolo de transferência de arquivos envolvendo computadores
conectados em rede. O programa permite a um usuário transmitir arquivos de/e para um ponto remoto na
rede local (intranet) ou via Web (Internet).
Há várias maneiras de você usar um serviço FTP em sua máquina e isso vai depender de sua
distribuição, por exemplo, sua distribuição poderá trabalhar com o FTP anônimo, como WU-FTP ou o Pro-
FTPD além de outros, para isso certifique-se qual deles você estará usando.
Caso sua distribuição use o FTP anônimo, o local /home/ftp/ é onde você encontrará os arquivos
de configuração. Caso não seja isso você precisará “levantar” serviços (daemons) de FTP, no Conectiva 9 você
digitará proftpd start para que o serviço de FTP estaja no ar, além é claro de habilitá-lo nos arquivo que você
aprenderá daqui a pouco. Mas se você realmente for montar servidores de FTP terá que escolher entre o WU-
FTP e o Pro-FTPD e deverá aprender a configurá-los, eu lhe aconselhoo Pro-FTPD. Na internet você
encontrará inúmeros tutoriais sobre isso, veja em ww.linux.trix.net ou www.olinux.com.br.
Aqui vamos aprender como é que poderemos usar o serviço de ftp que o sistema Linux já tem
nativo. Usar esse tipo de serviço é muito simples, para isso sua rede deverá estar no ar, operante e com os
serviços habilitados. Vale lembrar que devemos descomentar, tirar o “#” no arquivo /etc/inetd.conf, a
seguinte linha:

# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

Assim, será possível usar o serviço de ftp. Lembre-se de ativar esse serviço (/etc/inetd e
/etc/network) automaticamente em processo de inicialização usando o ntsysv. Caso o serviço não esteja no ar
será possível ativá-lo com os comandos:

/etc/rc.d/init.d/network start ou restart


etc/rc.d/init.d/inet start ou restart

Esses dois comandos são responsáveis pelo “levantamento” da rede e pelo “levantamento” do
serviço que disponibiliza o ftp. A máquina destino com a qual o ftp irá se comunicar pode ser especificada na
linha de comandos. Se isso for feito, o ftp irá tentar estabelecer uma conexão imediatamente para um
servidor FTP nesse destino; de outro modo, o ftp irá entrar em seu modo interpretador de comandos e
aguardar instruções do usuário.
Enquanto o ftp estiver esperando por comandos, o prompt ftp> será mostrado ao usuário. Se
tudo der certo o usuário poderá tentar um ftp nele mesmo da seguinte maneira:

ftp localhost
Conectado na máquina localhost.
220 gabriel.hackers.net FTP server (Version wu-2.6.1(1) Sun Sep 24
18:36:35 BRT 2000) ready.
Usuário (localhost:root): adilson
331 Password required for adilson.
Senha:
530 Login incorrect.
Falha no login.
ftp> quit
221 Goodbye.

O caso anterior é típico de senha errada e não que o serviço não esteja no ar. Aqui o usuário
adilson (propositalmente) informou a senha errada e o ftp não continuou a conexão. Quando isso acontece de

222
Global Sul Informática

maneira correta, o diretório HOME padrão de um serviço ftp é liberado e nesse diretório (padrão)
encontramos os seguintes subdiretórios:

# ls -laF /home/ftp/
total 24
drwxr-xr-x 6 root root 4096 Jul 3 14:24 ./
drwxr-xr-x 37 root root 4096 Jul 20 12:51 ../
d—x—x—x 2 root root 4096 Jul 3 14:24 bin/
d—x—x—x 2 root root 4096 Jul 3 14:24 etc/
drwxr-xr-x 2 root root 4096 Jul 3 14:24 lib/
drwxr-sr-x 2 root ftp 4096 Oct 17 2000 pub/

Vale lembrar de que os diretórios /bin/ e /etc/ são usados somente para execução de scripts e
programas se assim forem configurados, enquanto o /lib/ e /pub/ poderão ser configurados com outros tipos
de permissões. Por exemplo: quando fazemos um ftp para atualizar nossas páginas em um provedor
qualquer, nosso diretório HOME lá está configurado para “rwx” depois que informamos nosso login e senha.

Comandos básicos para ftp


Os seguintes comandos são reconhecidos pelo ftp:
append arquivo-local [arquivo-remoto]: Adiciona um arquivo local a um arquivo na máquina
remota. Se o arquivo remoto não for especificado, o arquivo local é usado para dar nome ao arquivo remoto
após ser alterado por qualquer configuração de ntrans ou nmap. Transferências de arquivos usam os ajustes
de tipo, formato, modo e estrutura atuais.
ascii: Ajusta o tipo de transferência de arquivo para ASCII na rede e binary. Ajusta o tipo de
transferência de arquivos para suportar imagens de arquivos binários.
bell: Após cada comando de transferência completado faz um beep.
bye: Termina a sessão ftp com o servidor remoto e sai do ftp. Um fim de arquivo também irá
encerrar a sessão e sair.
cd: Lista o diretório-remoto; lcd: Lista o diretório-local e cdup: Muda o diretório de trabalho na
máquina remota para o diretório imediatamente superior ao atual.
chmod modo nome-do-arquivo: Muda as permissões do arquivo nome-do-arquivo no sistema
remoto para modo. Mas somente se o usuário que está conectado tiver as permissões para isso.
close: Termina a sessão ftp com o servidor remoto e retorna ao interpretador de comandos.
Quaisquer macros definidas são apagadas.
disconnect: Um sinônimo para close.
delete arquivo-remoto: Apaga o arquivo arquivo-remoto na máquina remota.
dir [diretório-remoto]: Mostra a listagem do diretório diretório-remoto.
get arquivo-remoto [arquivo-local]: Recupera o arquivo-remoto e o armazena na máquina local.
Se o nome do arquivo local não for especificado, ele terá o mesmo nome que na máquina remota, sujeito às
alterações impostas pelas configurações case, ntrans e nmap. As atuais configurações para type, form, mode e
structure serão usadas en quanto o arquivo estiver sendo transferido.
help [comando]: Mostra uma mensagem informativa sobre o significado do comando. Se
nenhum parâmetro for especificado, o ftp mostrará uma lista de todos os comandos válidos.
lcd [diretório]: Muda o diretório de trabalho na máquina local. Se nenhum diretório for
especificado, o homedir do usuário será usado e ls [diretório-remoto]: Mostra uma listagem do conteúdo de
um diretório da máquina remota.
mdelete [arquivos-remotos]: Apaga os arquivos-remotos na máquina remota.
mdir arquivos-remotos arquivo-local: Como o dir, exceto que múltiplos arquivos podem ser
especificados. Se o prompt interativo estiver habilitado, o ftp irá questionar o usuário para confirmar que o
último parâmetro é realmente um nome de arquivo na máquina local para receber a saída do comando mdir;
mkdir nome-do-diretório: Cria um diretório na máquina remota.
mget arquivos-remotos: Expande os arquivos-remotos na máquina remota e faz um get para
cada nome de arquivo obtido (download).
mput arquivos-locais: Expande coringas na lista de arquivos passada e faz um put para cada
arquivo resultante da lista. Os nomes resultantes serão então processados de acordo com as configurações
ntrans e nmap; put arquivo-local [arquivo-remoto]: Armazena um arquivo local na máquina remota (upload).
nlist [diretório-remoto] [arquivo-local]: Mostra uma lista dos arquivos de um diretório da
máquina remota. Se o diretório-remoto não for especificado, o diretório atual será usado.

223
Treinamento Linux – Administração, Redes e Serviços

open máquina [porta]: Estabelece uma conexão para o servidor ftp da máquina especificada.
Um número de porta opcional pode ser especificado, fazendo com que o ftp tente contatar um servidor ftp
nesta porta.
prompt: Habilita/desabilita o prompt interativo. O questionamento interativo acontece durante
a transferência de múltiplos arquivos para permitir ao usuário seletivamente recuperar ou armazenar
arquivos. Se o prompt interativo for desativado (o padrão é estar ativado), qualquer mget ou mput transferirá
todos os arquivos, e qualquer mdelete deletará todos os arquivos.
pwd: Mostra o nome do diretório atual na máquina remota; quit: Um sinônimo para bye;
rename [de] [para]: Renomeia o arquivo na máquina remota.
rmdir nome-do-diretório: Deleta um diretório na máquina remota.
send arquivo-local [arquivo-remoto]: Um sinônimo para put.
trace: Habilita/desabilita o rastreamento de pacotes.

DICA: Para abortar uma transferência de arquivos, use a tecla de interrupção do terminal
(normalmente CONTROL+ C). Transferências de envio serão automaticamente suspensas.
Transferências de recepção serão suspensas enviando um comando ABOR para o servidor remoto e
descartando quaisquer dados novos que sejam recebidos. A velocidade com que isso será completado
depende do suporte da máquina para o processamento do comando ABOR.

login nome: Identifica um usuário na máquina remota. Se esse item estiver presente, o processo
de auto-login será iniciado usando o nome especificado.
password senha: Fornece uma senha. Se este item estiver presente, o processo de auto-login
fornecerá a senha especificada se o servidor remoto exigir uma senha como parte do processo de entrada.
Perceba que se esse item estiver presente no arquivo .netrc para qualquer outro usuário que não seja o
anonymous, o ftp irá abortar o processo de auto-login se o arquivo “.netrc” for legível para qualquer usuário
exceto o próprio usuário.

Fazendo ftp via modo texto


Para fazer um ftp via modo texto, basta digitar o comando ftp seguido do IP ou nome da
máquina que desejamos acessar ou somente ftp e depois que a conexão for efetuada digita-se o comando
open seguido do IP ou nome da máquina a ser acessada.
Em muitos casos quando estamos baixando arquivos de HOW-TO´s em modo texto é possível
visualizá-los assim que terminar o download; para isso, depois de conectado use o comando ftp> get index.txt
“| more”.
Um exemplo mais interessante ainda é quando você tem um arquivo postscript e quer baixá-lo e
visualizá-lo com o ghostscript após o download, tudo isso porque você é “fominha” e não pode esperar.
Depois de conectado use o comando ftp> get hacking_passwd.ps.gz “| gzip -dc | gs -”.
Legal, agora é o fato de que você tem direito de gravação remota via ftp e quer fazer
transferências de arquivos e/ou diretórios. Use o comando ftp> put “| tar cvf - .” arquivo.tar. Assim, será
criado um arquivo chamado arquivo.tar e depois ele será enviado para a máquina remota.
Quer melhorar esse comando? Mande-o compactado com o comando compress assim ftp> put “|
tar cvf - . | compress -c” arquivo.tar.Z.

Fazendo ftp via modo gráfico


Para fazermos ftp em modo gráfico, o sistema Linux nos oferece vários utilitários desde os mais
simples até os mais avançados e com inúmeras opções e entre eles um dos melhores é o gftp do ambiente
Gnome, alé de outro utilitários como o Kget, WebDownloader, IglooFTP, wget, WsFTP etc.
Se você já usou utilitário para Windows semelhante, você não vai encontrar dificuldade. O Linux
também tem o WS_FTP o qual é muito bom e é igualzinho o do Windows, e também tem o Cute FTP que
apresenta a mesma “cara” e muitos semelhantes.
Havendo erro na verificação, será necessário repetir o download, tomara que isso não seja
necessário pois o download é demoraaaaaado. :-)

224
Global Sul Informática

Arquivo de configuração do servidor ftp


Exemplo de arquivo configuração do ProFTPd. A seguir nós temos um exemplo de configuração
do ProFTPd:

## Configuração do ProFTPD#
#
# Configuração personalizada
#
ServerName “::Servidor ProFTPD Editora Futura::”
ServerType standalone # Também pode ser usado o inetd.
DefaultServer on
ScoreboardFile /var/run/proftpd/scoreboard
DeferWelcome on
ServerAdmin gabriel@hackers.net
SyslogFacility AUTH

# Permite baixar arquivos aos poucos.


AllowRetrieveRestart on
# Para standalone usamos a porta 21
Port 21
# impede gravação de novos diretórios e arquivos.
Umask 022
# Número máximo de instâncias.
MaxInstances 30
# Máximo de clientes conectados ao mesmo tempo.
MaxClients 10
# Modo de transferência de arquivos.
DefaultTransferMode binary
# Permite listagem colorida.
LsDefaultOptions "-al --color=auto"

# Usuário root não pode fazer conexões.


RootLogin off
# Desconecta após 5 minutos se nada acontecer.
TimeoutIdle 500
# Mostra links simbólicos para listagens.
ShowSymlinks On
# Usuário apenas acessa seu diretório $HOME dele.
DefaultRoot ~
# Usuário e grupo para o servidor
User nobody
Group nobody

<Directory /*>
AllowOverwrite no
</Directory>

# Configuração básica de ftp anônimo, sem diretório


# para recepção de arquivos.
<Anonymous ~ftp>
User ftp
Group ftp
DirFakeUser on
DirFakeGroup on
RequireValidShell off

# ftp = anonymous
UserAlias anonymous ftp

# número máximo de logins anônimos


MaxClients 10 "Número máximo de clientes, tente mais tarde."

# No máximo duas conexões por cliente


MaxClientsPerHost 2 "Você já está com muitas conexões abertas."

# O Welcome.msg mostrado na conexão e .message mostrado para cada


# diretório acessado.

DisplayLogin welcome.msg
DisplayFirstChdir .message
AccessGrantMsg "Acesso anônimo aceito para %u."

225
Treinamento Linux – Administração, Redes e Serviços

# Limite gravação no chroot anônimo


<Limit WRITE>
DenyAll
</Limit>

</Anonymous>

Conforme você pode perceber aqui a configuração do servidor Pro-FTPD não tão complicada
assim. Basta apenas uma observação no arquivo e já podemos descobrir como é que ele funciona.
Também podemos percebemos no exemplo a existência de várias diretivas até se iniciar o
contexto <Directory>. Estas diretivas fazem parte do contexto principal. Em outras palavras: as diretivas que
não estiverem dentro de algum contexto do tipo <Contexto> será considerado do contexto principal e por
uma questão de organização, deverão ser declaradas no início do arquivo.
Logo após o contexto principal, temos o contexto <Directory> determinando como o ProFTPd se
comportará ao acessar o diretório /*, ou seja, todos os diretórios.
O próximo contexto é o <Anonymous>, que neste caso utilizará o diretório ~ftp (diretório raiz
do usuário ftp) para servir arquivos a serem acessados pelo login anonymous. Perceba que neste exemplo
temos o contexto <Limit> com a ação WRITE determinando como o ProFTPd se comportará quando um
usuário anonymous tentar fazer um upload de um arquivo.

226
Global Sul Informática

Anotações:

227

You might also like