Professional Documents
Culture Documents
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
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
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.
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.
9
Treinamento Linux – Administração, Redes e Serviços
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
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.
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
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.
14
Global Sul Informática
15
Treinamento Linux – Administração, Redes e Serviços
Anotações:
16
Global Sul Informática
Capítulo 1
# 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.
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
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:
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.
...
# 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
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
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”
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.
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:
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:
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):
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:
Você poderá usar mais de um comando de redirecionamento “<, >, |” em um mesmo comando
para atingir um melhor resultado.
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:
23
Treinamento Linux – Administração, Redes e Serviços
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.
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
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.
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.
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:
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.
# 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
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:
# 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"
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
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
# 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:
# 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
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.
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
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
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.
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
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
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
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.
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.
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:
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:
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.
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.
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:
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?
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:
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:
44
Global Sul Informática
/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.
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.
45
Treinamento Linux – Administração, Redes e Serviços
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.
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:
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
# 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.
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
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/
#!/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
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...
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).
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:
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:
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.
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
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.
55
Treinamento Linux – Administração, Redes e Serviços
Veja o exemplo:
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:
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
# 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.
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.
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
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.
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:
# 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:
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.
vfat: Para partições Windows 95 que utilizam nomes extensos de arquivos e diretórios. É
mais usada, veja o seu arquivo /etc/fstab.
umsdos: Para montar uma partição DOS com recursos de partições EXT2, como permissões de
acesso, links, etc.
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:
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):
Exemplo:
fdformat /dev/fd0H1440
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
# 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:
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 :
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:
Exemplos:
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
# 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:
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.
69
Treinamento Linux – Administração, Redes e Serviços
70
Global Sul Informática
71
Treinamento Linux – Administração, Redes e Serviços
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
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.
# 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
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:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
# USERDEL_CMD /usr/sbin/userdel_local
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:
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.
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:
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:
# 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]\\$ "
80
Global Sul Informática
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
PATH=$PATH:$HOME/bin
ENV=$HOME/.bashrc
USERNAME=”root”
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:
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:
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
83
Treinamento Linux – Administração, Redes e Serviços
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:
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:
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
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:
[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:
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="[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]$ "
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:
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.
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):
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.
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.
90
Global Sul Informática
:: Kfloppy e Gfloppy
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:
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
# 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:
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:
92
Global Sul Informática
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:
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.
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:
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.
# 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
# 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
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:
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?
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:
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)
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
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.
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!
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
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.
O modo literal é mais fácil de ser entendido, porque usa letras para identificar:
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.
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:
103
Treinamento Linux – Administração, Redes e Serviços
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
*.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.
*.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.
*.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.
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:
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.
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:
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:
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.
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:
Para descomprimir:
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
Para descompactar:
110
Global Sul Informática
Exemplo prático, vamos compactar o arquivo estudos.tar (13.291.520 kb), que tem mais de treze
megabytes, e analisar a compactação.
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.
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.
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:
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:
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
115
Treinamento Linux – Administração, Redes e Serviços
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:
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:
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:
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.
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
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.
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:
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:
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:
--allmatches: Remove todas as versões do pacote que casarem com <pacote>. Normalmente
um erro é exibido se <pacote> casar com múltiplos pacotes.
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
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:
--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.
--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:
Exemplo de instalação cancelada pelo rpm, porque o(s) pacote(s) já estão presentes:
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:
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).
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:
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.
Para instalar o grupo de pacotes MySQL Database (Banco de Dados MySQL), execute o
comando:
Para atualizar todos os pacotes no grupo de pacotes MySQL Database, execute o comando:
122
Global Sul Informática
# yum update
Para remover todos os pacotes no grupo de pacotes MySQL Database, execute o comando:
Para procurar por um pacote específico pelo nome, use a opção list. Para procurar pelo pacote
tsclient, use o comando:
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:
Para listar todos os pacotes com nomes que comecem com tsc, digite:
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:
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:
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:
Se for necessário passar por um proxy com autenticação , há duas formas de se fazer isso:
http_proxy=http://usuário.senha@servidorProxy:PortaProxy
ftp_proxy=http://usuário.senha@servidorProxy:PortaProxy
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;
./configure: Como esse script executável não está no path, você deve inserir “./” para
que a “configuração” comece.
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
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 é:
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.
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:
128
Global Sul Informática
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):
# 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
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:
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:
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:
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
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.
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.
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:
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
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:
Por exemplo:
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.
De acordo com a informação são 10:00 do dia oito de setembro é um domingo. Porém veja o que
aconteceu aqui
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:
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
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:
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).
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.
Caso o seu modem esteja conectado na COM2, por exemplo, o comando para criação do
/dev/modem use o comando:
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:
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
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:
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:
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:
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:
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:
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:
lpc status
lp:
queuing is enable
printing is enable
2 entries in spool area
lp is ready an printing
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:
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:
Onde os parâmetros:
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.
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.
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:
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:
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.
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
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
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:
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
153
Treinamento Linux – Administração, Redes e Serviços
# Área de frame-buffer
Section "Device"
Identifier "Linux Frame Buffer"
Driver "fbdev"
BoardName "Unknown"
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
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.
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:
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
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:
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:
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:
160
Global Sul Informática
d) A máscara separa parte “rede” da parte “máquina” e segue o mesmo padrão numérico do
número IP.
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:
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.
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
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
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 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.
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:
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.
166
Global Sul Informática
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
# ifconfig lo down
DICA: Caso você queira usar algum aplicativo de rede: telnet, ssh, ftp, samba etc eles somente
funcionarão se a interface estiver no ar.
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
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ê):
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
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
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.
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
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:
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:
174
Global Sul Informática
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.
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:
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:
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:
176
Global Sul Informática
Se você quiser ver a tabela de roteamento use o comando netstat -rn, assim:
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:
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:
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:
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:
# 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
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.
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).
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
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 é:
Claro, se você tiver muita coisa para adicionar nesse arquivo é melhor editá-lo com seu editor de
textos preferido.
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:
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)
E agora usaremos o comando ps -aux | grep rpc para verificar as chamadas rpc:
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.
184
Global Sul Informática
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.
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.”
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:
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:
...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:
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:
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:
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:
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.
...
/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.
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:
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.
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
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.
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
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:
# 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
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]
197
Treinamento Linux – Administração, Redes e Serviços
Server Comment
--------- -------
NOTEBOOK NOTEBOOK
Workgroup Master
--------- -------
EDFUTURA NOTEBOOK
LINUX GABRIEL
198
Global Sul Informática
Viu como é simples? Só não é interessante você passar o nome de usuário e senha pela linha de
comando. O melhor é fazer assim:
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:
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:
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:
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
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.
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]
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.
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).
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
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
printable = no
guest ok = yes
browseable = yes
; [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.
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 @.
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:
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]:
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:
...
nome_estacao1:x:505:501:apelido_estacao1:/dev/null:/bin/false
...
smbpasswd -a -m NOME_ESTACAO_1
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
[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
[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
[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].
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.
[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:
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:
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.
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:
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
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.
/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
-l [usuario]: Envia o nome de usuário ao computador remoto. Muito útil se você estiver
usando com o telnet-ssl.
-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.
login: adilson
Password:
Last login: Mon Sep 17 10:12:28 from 10.6.12.150
[adilson@diagramacao adilson]$
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.
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.
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:
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:
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.
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.
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:
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:
221
Treinamento Linux – Administração, Redes e Serviços
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.
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:
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:
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.
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.
224
Global Sul Informática
## 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
<Directory /*>
AllowOverwrite no
</Directory>
# ftp = anonymous
UserAlias anonymous ftp
DisplayLogin welcome.msg
DisplayFirstChdir .message
AccessGrantMsg "Acesso anônimo aceito para %u."
225
Treinamento Linux – Administração, Redes e Serviços
</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