Global Sul Informática

Administração, Redes e Serviços
Adilson R. Bonan <arbonan.linux@gmail.com> - LPI Trainee Certified Esse Material pode ser copiado e distribuído livremente.

1

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

2

Global Sul Informática

Introdução.......................................................................................................................................................7 Introdução ao sistema operacional Linux.........................................................................................................7 O anúncio....................................................................................................................................................8 História do mascote Tux..............................................................................................................................8 O que é o Linux?.........................................................................................................................................9 Características do sistema Linux.................................................................................................................9 O que é uma distribuição Linux?...............................................................................................................11 As principais distribuições Linux..............................................................................................................12 Será que Linux é bom para você?..............................................................................................................14 Capítulo 1......................................................................................................................................................17 Semelhanças do Windows com o Linux.........................................................................................................17 Arquivos de lote........................................................................................................................................19 Equivalência de arquivos de configuração................................................................................................19 Equivalência nas portas de comunicação...................................................................................................20 Equivalência de comandos........................................................................................................................21 Equivalência de redirecionamentos...........................................................................................................21 Particularidades do sistema Linux.............................................................................................................23 Como pedir ajuda no mundo Linux?.........................................................................................................25 Semelhanças do Windows com o Linux....................................................................................................31 Os gerenciadores de janelas do Linux.......................................................................................................33 Semelhanças de aplicativos nativos...........................................................................................................35 Atalhos links simbólicos............................................................................................................................36 Processos e serviços em segundo plano.....................................................................................................36 Capítulo 2......................................................................................................................................................41 Filosofia Linux...............................................................................................................................................41 Criando disquetes de inicialização............................................................................................................41 Gerando discos sob MS-DOS....................................................................................................................41 Gerando discos sob o Windows.................................................................................................................41 Gerando discos a partir do Linux..............................................................................................................41 Entrando no sistema Linux........................................................................................................................42 Os arquivos...........................................................................................................................................42 Meta caracteres ou coringas.................................................................................................................43 Os diretórios.........................................................................................................................................44 O que são diretórios raiz do sistema Linux?.........................................................................................45 Nomenclatura dos discos, partições e portas.............................................................................................46 Estrutura de particionamento do sistema Linux.........................................................................................47 O Interpretador de comandos.....................................................................................................................47 Atalhos de teclado para o bash..................................................................................................................48 Os arquivos de inicialização da máquina...................................................................................................49 Terminais virtuais em modo console.........................................................................................................50 Linux modo console, o poder do shell.......................................................................................................51 Comandos de ajuda do sistema..................................................................................................................51

3

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

Comandos de informações do sistema.......................................................................................................53 Comandos para manipulação de diretórios................................................................................................55 Comandos para manipulação de arquivos..................................................................................................55 Comandos de controle de acessos a arquivos e diretórios.........................................................................57 Comandos de ligação de arquivos e diretórios..........................................................................................57 Comandos para gerenciamento de impressão............................................................................................58 Comandos mensagens no sistema..............................................................................................................59 Comandos de controle de execução de processos .....................................................................................59 Comandos de manipulação de mídias........................................................................................................60 Comandos de processamento em rede (interno e externo).........................................................................62 Comandos para manipulação de usuários e grupos....................................................................................63 Comandos de som no sistema....................................................................................................................64 Comandos de empacotamento e compressão de arquivos..........................................................................66 Comandos de verificação de logs /var.......................................................................................................66 Comandos diversos....................................................................................................................................66 Comandos genéricos do ambiente gráfico Gnome ....................................................................................69 Comandos genéricos do ambiente gráfico KDE .......................................................................................70 Capítulo 3......................................................................................................................................................75 Gerenciamento de usuários e grupos..............................................................................................................75 Gerenciamento de usuários e grupos.........................................................................................................75 Arquivos de configuração e personalização de usuários............................................................................80 Capítulo 4......................................................................................................................................................89 Gerenciamento de mídias...............................................................................................................................89 Os comandos mount e umount...................................................................................................................89 O acesso a unidade de disquete.................................................................................................................90 Formatando disquetes no Linux................................................................................................................90 Formatação via modo texto..................................................................................................................91 O acesso a unidade de CD-ROM..........................................................................................................91 O acesso a unidade de zip-drive...........................................................................................................92 O acesso a partição do Windows local.................................................................................................93 Verificação dos pontos de montagem...................................................................................................93 O espaço disponível..............................................................................................................................94 Os arquivos /etc/fstab e /etc/mtab.........................................................................................................94 Reconhecendo as partições...................................................................................................................96 Capítulo 5......................................................................................................................................................99 Gerenciamento de permissões........................................................................................................................99 Acesso a um arquivo ou diretório..............................................................................................................99 Controlando donos, grupos e outros usuários .........................................................................................100 Atribuindo permissões: comando chmod.................................................................................................102 Alterando permissões pelo modo literal..................................................................................................102 Alterando permissões pelo modo numérico (octal).................................................................................103 Alterando permissões pelo modo absoluto..............................................................................................104 Capítulo 6....................................................................................................................................................107 Empacotamento e compressão de arquivos...................................................................................................107 Empacotando arquivos com o comando tar.............................................................................................108 Usando o compress e uncompress...........................................................................................................109 Usando o bzip2 e bunzip2.......................................................................................................................110 Usando o gzip, gunzip e zcat...................................................................................................................111 Usando o znew........................................................................................................................................112 Quebrando arquivos grandes...................................................................................................................112

4

Global Sul Informática

Capítulo 7....................................................................................................................................................115 Gerenciamento de pacotes com RPM...........................................................................................................115 RPM em pacotes não instalados..............................................................................................................116 RPM em pacotes instalados.....................................................................................................................118 RPM em desinstalação de pacotes...........................................................................................................119 RPM em instalação e atualização de pacotes...........................................................................................119 Dependências não resolvidas...................................................................................................................121 RPM em verificação do sistema .............................................................................................................121 RPM instalando pacotes via ftp...............................................................................................................121 Convertendo um pacote...........................................................................................................................122 Gerenciamento de pacotes com YUM..........................................................................................................122 Compilação de programas............................................................................................................................124 Gerenciamento de pacotes com Apt/Synaptic...............................................................................................127 Usando o comando apt............................................................................................................................127 Adicionando um CD................................................................................................................................128 Instalando novos pacotes.........................................................................................................................131 Removendo pacotes instalados................................................................................................................131 Atualizando sua distribuição...................................................................................................................131 Procurando por pacotes...........................................................................................................................131 Usando o Synaptic...................................................................................................................................132 Convertendo formatos de pacotes com o Alien............................................................................................134 Capítulo 8....................................................................................................................................................137 Configurações básicas..................................................................................................................................137 Configurando datas e horários.................................................................................................................137 Configurando o teclado...........................................................................................................................139 Configurando o mouse.............................................................................................................................140 Configurando a placa de som..................................................................................................................140 Configurando o modem...........................................................................................................................141 Usando o KPP para conectar à Internet...................................................................................................142 Serviço básico de ADSL..........................................................................................................................142 Configurando a impressora......................................................................................................................143 Filtros de impressão............................................................................................................................145 Servidor de impressão CUPS e KDE.......................................................................................................147 Configurando o CUPS pelo arquivo...................................................................................................148 Configurando o CUPS pelo cups-config.............................................................................................150 Configurando a impressora pelo KDE.....................................................................................................151 Configurando o vídeo..............................................................................................................................152 Capítulo 9....................................................................................................................................................157 Configuração básica da interface de rede ....................................................................................................157 O modelo base OSI..................................................................................................................................157 Informações sobre camadas.....................................................................................................................159 TCP/IP um pouco de teoria......................................................................................................................159 IP – Internet Protocol...............................................................................................................................160 Classes de rede IP....................................................................................................................................160 A camada TCP/IP....................................................................................................................................162 Resumo das três classes de números IP:..................................................................................................163 ICMP – Internet Control Message Protocol.............................................................................................163 Topologia de redes..................................................................................................................................164 Topologia em Estrela...............................................................................................................................164 Topologia em Barra.................................................................................................................................165 Topologia em Anel..................................................................................................................................165 Sistema Linux, a configuração................................................................................................................166 A interface de rede.............................................................................................................................166 A interface loopback..........................................................................................................................167

5

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

Os principais arquivos.............................................................................................................................168 Os módulos da interface de rede.........................................................................................................173 Configurando no braço............................................................................................................................175 Monitoramente de rede............................................................................................................................178 Capítulo 10..................................................................................................................................................181 NFS - Cliente e Servidor...............................................................................................................................181 Como configurar clientes e servidores NFS............................................................................................181 Configurando um servidor NFS...............................................................................................................181 Criando os locais para montagem NFS...............................................................................................182 O portmapper......................................................................................................................................183 Mountd e nfsd.....................................................................................................................................184 Configurando o cliente NFS....................................................................................................................187 Opções de montagem..........................................................................................................................188 Otimizando o NFS..............................................................................................................................188 NFS e segurança......................................................................................................................................189 Segurança no cliente...........................................................................................................................189 Segurança no servidor: nfsd...............................................................................................................189 Segurança no servidor portmapper.....................................................................................................190 NFS e firewalls........................................................................................................................................191 Capítulo 11..................................................................................................................................................193 SAMBA – Cliente e Servidor.......................................................................................................................193 Características do servidor......................................................................................................................194 Arquivos de configuração do Samba.......................................................................................................194 Principais arquivos do servidor samba....................................................................................................195 Executando os servidores........................................................................................................................199 Configurando o Samba............................................................................................................................201 Configurando pelo modo texto...........................................................................................................201 Autenticação de usuários — modalidade de segurança......................................................................202 Pontos de montagem com Samba............................................................................................................211 Configurando o samba através do Swat no Linux...................................................................................213 Capítulo 12..................................................................................................................................................215 Conexões remotas.........................................................................................................................................215 Usando o Telnet......................................................................................................................................215 Habilitando telnet entre máquinas......................................................................................................215 Usando o SSH.........................................................................................................................................217 Clientes SSH para Windows e Linux.................................................................................................217 Preparando o servidor.........................................................................................................................218 Execução de comandos no servidor....................................................................................................219 Usando o FTP..........................................................................................................................................221 Comandos básicos para ftp.................................................................................................................222 Fazendo ftp via modo texto................................................................................................................223 Fazendo ftp via modo gráfico.............................................................................................................223 Arquivo de configuração do servidor ftp............................................................................................224

6

Global Sul Informática

Introdução

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

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

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

7

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

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

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

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

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

8

Global Sul Informática

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

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

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

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

9

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

• • •

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

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

10

Global Sul Informática

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

11

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

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

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

12

Global Sul Informática

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

13

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

:: Counter Strike para Linux.

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

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

14

Global Sul Informática

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

Exemplos de login em modo texto e em modo gráfico. :: Tela padrão de login gráfico usando o GDM (GNOME).

15

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

Anotações:

16

Global Sul Informática

Capítulo 1

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

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

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

17

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

:: Tela personalizada de prompt de comando do Linux.

Mas é bom lembrar-se de que isso é questão de tempo, não dá para aprender o Linux da noite para o dia, é preciso que tenhamos uma disciplina, que também entenda-se o propósito deste sistema operacional e que a cada dia ele muda suas características para que seja possível um amadurecimento. A nossa primeira conclusão é de que o modo prompt do Linux, além de muito mais bonito, é mais poderoso. Dentro de um mesmo ‘terminal’, é possível chamar em paralelo outro ‘terminal’, e, além do mais, é possível transparência, imagens de fundo, cores de fundo, tipologia de letras e controle cache de linhas; também é possível arrastar ícones do modo gráfico para dentro de um terminal, pois automaticamente será criado o caminho para que o usuário possa copiar o arquivo. Resumo dos comando mtools Embora você não vai usar agora esses comando pois eles serão usados a medida que você for adquirindo conhecimento, eu resolvi disponibilizá-los aqui:
mattrib: Mostra e modifica os atributos de arquivos. mcat: Exibe informações da unidade de disquete em formato RAW. mcd: Igual ao cd normao, entra e sai de diretórios . mcopy: Faz cópias de arquivos. mdel: Exclui arquivos mdeltree: Apaga arquivos, diretórios e também sub-diretórios. mdir: Lista arquivos e diretórios da unidade de disquete. mdu: Mostra o espaço ocupado pelo diretório do MS-DOS. mformat: Grava uma fat no disquete. minfo: Mostra informações sobre a unidade de disquetes. mlabel: Cria um volume (label) para unidades DOS. mmd: Cria diretórios. mmount: Monta discos MS-DOS. mmove: Move ou renomeia arquivos/subdiretórios. mpartition: Particiona um disco para ser usado no DOS. mrd: Apaga um diretório e mren: Renomeia arquivos. mtype: Mostra o conteúdo de arquivos, parecido com o cat. mtoolstest: Exibe a configuração atual do pacote mtools. mshowfat: Mostra a FAT da unidade. mbadblocks: Procura por setores defeituosos na unidade. mzip: Ejeta discos em unidades ZIP. mcheck: Verifica arquivos na unidade.

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

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 ./scriptteste.sh caso você esteja no mesmo diretório do seu script. Se você não estiver, copie-o para o diretório /bin assim não precisa usar o ./ e nem o source, basta simplesmente digitar o nome do seu script.

Equivalência de arquivos de configuração
No sistema Windows nos temos os arquivos “config.sys” e “autoexec.bat” que arquivo de configuração desse ambiente. Nos tempos áureos do MS-DOS qualquer usuário com um pouco mais de experiencia já sabia mexer nesses arquivo e meio que fazer um afinação no sistema. Mas nos dias de hoje tem gente que nem sabe que isso existe. Já no sistema Linux a filosofia é diferente, além de não ser apenas dois, mas sim vários arquivos de configuração onde alguns, a gente mexe, outros a gente estraga :-), e alguns o próprio sistema Linux cuida disso. Esses encontram-se a grande maioria deles no diretório /etc que é o diretório onde ficam quase todos os arquivos de configuração do sistema Linux, somente para citar temos o “inittab” que cuida entre outras coisas dos terminais de conexão e inicialização em modo texto e em modo gráfico do sistema, temos também o arquivo “fstab” que vai cuidar dos pontos de montagem do sistema Linux e únúmeros outros arquivo de configuração. Listagem do arquivo /etc/inittab (inicialização)
... # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS # (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit su:S:wait:/sbin/sulogin l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. #ud::once:/sbin/update # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, # assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”

19

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

# If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled” # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 #7:2345:respawn:/sbin/mingetty tty7 #8:2345:respawn:/sbin/mingetty tty8 #9:2345:respawn:/sbin/mingetty tty9 #10:2345:respawn:/sbin/mingetty tty10 #11:2345:respawn:/sbin/mingetty tty11 #12:2345:respawn:/sbin/mingetty tty12 # Run xdm in runlevel 5 # xdm is now a separate service x:5:once:/etc/X11/prefdm -nodaemon

Listagem do arquivo /etc/fstab (pontos de montagem)
/dev/hda5 / ext3 defaults 0 0 /dev/hda6 swap swap defaults 0 0 /dev/hda7 /home ext3 defaults 0 0 /dev/hda8 /usr ext3 defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0 /dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 /dev/hda1 /mnt/winxp vfat user,owner,exec,dev,suid,rw 1 1

DICA: No sistema Linux a maioria dos arquivos de configuração de programas/aplicações costuma terminar com “rc” e criam diretórios que começam com “.”, que são arquivos invisíveis no sistema Linux. Outra macete, tudo no sistema Linux é tratado como arquivo até mesmo os dispositivos de hardware.

Equivalência nas portas de comunicação
Alguns usuários mais técnicos que estão acostumados com as portas COM do MS-DOS acham estranho a nomenclatura usado no sistema Linux, mas é isso mesmo cada um tem a sua particularidade. Veja o quadro seguinte a qual nos mostra os dispositivos e portas de comunicação do Linux.
MS-DOS WINDOWS A: B: C: D: E: LPT1 LPT2 LPT3 COM 1 COM 2 COM 3 COM 4 LINUX /dev/fd0 /dev/fd1 /dev/hda1 /dev/hdc ou /dev/cdrom /dev/sda4 ou /dev/zip /dev/lp0 /dev/lp1 /dev/lp2 /dev/cua0 ou /dev/ttyS0 /dev/cua1 ou /dev/ttyS1 /dev/cua2 ou /dev/ttyS2 /dev/cua3 ou /dev/ttyS3 DESCRIÇÃO Unidade de disquete. Unidade de disquete. Somente uma das partições do disco rígido. Unidade de CD-ROM. Unidade de zip drive. Impressora. Impressora. Impressora. Porta de comunicação 1. Porta de comunicação 2. Porta de comunicação 3. Porta de comunicação 4.

20

Global Sul Informática

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

Equivalência de comandos
Alguns comandos do Linux são semelhantes aos do MS-DOS. Esses comandos fazem também, coisas semelhantes, como você já sabe tem os comandos do pacote mtools e agora temos também os comandos comuns. Mas eu já vou lhe avisando, use os comandos do Linux pois são muito mais práticos e poderosos. Com os comandos do sistema Linux você poderá montar shell scripts poderosos que poderão lhe ajudar no dia-a-dia. Isso do jeito que o Linux faz o MS-DOS nunca fez e nem vai fazer e no sistema Windows você vai ter que ter um programinha para cada coisa, ou seja vai entupir seu Windows de shareware e coisas desse tipo e depois não vá dizer que eu não avisei. Veja no quadro seguinte alguns comandos semelhantes do MS-DOS com Linux.
MS-DOS backup cd copy del deltree dir edit format help md move nul prn rd ren restore type win LINUX tar -Mcvf cd cp rm rm -R ls, dir, vdir ou echo vi fdformat, mformat, kfloppy ou gfloppy man mkdir mv null lpr rmdir mv tar -Mxpvf less, more ou gless starx, kde, gnome ou xdm DESCRIÇÃO Faz cópias de segurnança. Entra e sai de diretórios. Faz cópias de arquivos, também faz em modo recursivo. Apaga arquivos. Apaga arquivos em modo recursivo. Lista diretórios. Executar um pequeno editor de arquivo texto. Formatação de disquetes. Executa a ajuda para um determinado cmando. Cria diretórios. Move arquivos ou renomeia arquivos (Linux). Redirecionamento nulo. Manda para a impressao. Apagar diretórios vazios. Renomeia arquivos (Linux). Faz restauração das cópias de segurança. Permite ver conteudo de arquivo texto. Executa o modo gráfico do sistema.

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

21

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

Vejamos um exemplo:
ls -laF /etc/rc.d/ > scriptsLocais.txt

A saída do comando ls -laF será enviada para o arquivo scriptsLocais.txt, e quando usar o comando cat scriptsLocais.txt, verá (nesse exemplo):
total 56 drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x 11 60 2 1 1 1 2 2 2 2 2 2 2 2 root root root root root root root root root root root root root root root root root root root root root root root root root root root root 4096 4096 4096 2875 785 1493 4096 4096 4096 4096 4096 4096 4096 4096 Set 10 12:03 ./ Set 29 11:16 ../ Set 11 00:35 init.d/ Fev 6 2003 rc* Fev 6 2003 rc.local* Mar 26 2003 rc.sysinit* Set 11 00:35 rc0.d/ Set 11 00:35 rc1.d/ Set 11 00:35 rc2.d/ Set 11 00:35 rc3.d/ Set 11 00:35 rc4.d/ Set 20 21:18 rc5.d/ Set 11 00:35 rc6.d/ Set 10 12:03 rcS.d/

O mesmo comando pode ser redirecionado para uma segunda console, ou seja, um terminal virtual, por exemplo /dev/tty5, assim ls -laF /etc/rc.d/ > /dev/tty5, então o resultado do comando ls -laF será mostrado no /dev/tty5. Agora, combine CONTROL+ALT +F5 e você verá o conteúdo lá. Mas lembre-se esse terminal deverá aceitar entradas nele. O direcionador >> Esse redirecionador faz a mesma coisa que o anterior, só que ele não apaga o conteúdo do arquivo, caso esse arquivo já exista; o que ele faz é adicionar o resultado na saída do arquivo. Vejamos um exemplo:
ls /etc/rc.d/ >> scriptsLocais.txt

A saída do comando ls será adicionada ao final do arquivo scriptsLocais.txt e quando você usar o comando cat scriptsLocais.txt, verá (nesse exemplo):
total 56 drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x init.d rc rc.local rc.sysinit rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d 11 60 2 1 1 1 2 2 2 2 2 2 2 2 root root root root root root root root root root root root root root root root root root root root root root root root root root root root 4096 4096 4096 2875 785 1493 4096 4096 4096 4096 4096 4096 4096 4096 Set 10 12:03 ./ Set 29 11:16 ../ Set 11 00:35 init.d/ Fev 6 2003 rc* Fev 6 2003 rc.local* Mar 26 2003 rc.sysinit* Set 11 00:35 rc0.d/ Set 11 00:35 rc1.d/ Set 11 00:35 rc2.d/ Set 11 00:35 rc3.d/ Set 11 00:35 rc4.d/ Set 20 21:18 rc5.d/ Set 11 00:35 rc6.d/ Set 10 12:03 rcS.d/

22

Global Sul Informática

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

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

Você poderá usar mais de um comando de redirecionamento “<, >, |” em um mesmo comando para atingir um melhor resultado. Qual é a diferença entre o | e o > ? É muito simples, a diferença entre o “|” e o “>” é que o pipe envolve processamento entre comandos, pois comandos trabalham juntos para atingir um resultado, ou seja, a saída de um comando é enviado a entrada do próximo, e o “>” redireciona a saída de um comando para um arquivo e/ou dispositivo. O comando tee Outro exemplo de direcionamento, o comando tee é muito interessante pois enquanto você vê o resultado no monitor, ele já vai gerando o arquivo com a saída vista no monitor, e o comando teve deve ser usado com o pipe “|”. Vejamos alguns exemplos:
locate html | tee todos_html.txt tar -zxpvf teste-1.0.i386.tar.gz| tee install_teste.log

Exemplo de uso o redirecionadores O modo mais usado de redirecionamento é quando vamos criar um log do resultado da saída de um programa ou quando vamos imprimir um arquivo via linha de comando. Acompanhe alguns exemplos:
cat musica.mp3 >/dev/sound, cat arquivo1.txt > /dev/lp0 cat < arquivo1.doc > /dev/lp0 cat arquivo1.txt | tee /dev/lp0 car arquivo1.doc | lpr, make | tee make.log dmesg | lpr, cat /etc/passwd | gless

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

23

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

:: GRUB – Permite a escolha do sistema operacional.

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

Se você não escolher um sistema operacional que vai usar o GRUB/LILO automaticamente poderá carregar o Linux ou o Windows dependendo de como você o configurou. Antes de você entrar no sistema, acho que você já percebeu que aparece uma serie de informações sobre o que o Linux está fazendo. Algumas coisas dão OK, outra PASSOU e outras FALHOU, não se preocupe com isso, pois é apenas o reconhecimento de hardware que ele está fazendo em seu computador. Por exemplo se sua placa de rede estiver funcionado e você configurou para ser “levantada” junto com a inicialização, o Linux testa isso e poderá aparecer OK ou FALHOU. Se você quiser dar uma olhada nessas informações mais tarde use o comando dmesg.
DICA: Em algumas distribuições existe um mecanismo de segurança que te alerta sobre eventuais tentativas de entrada no sistema por intrusos usando seu login, faça um teste: entre com seu login e digite a senha errada, na segunda vez entre com a senha correta no sistema. Na penúltima linha das mensagens aparece uma mensagem "1 failure since last login", o que quer dizer "1 falha desde o último login". Isto significa que alguém tentou entrar 1 vez com seu nome e senha no sistema, sem sucesso.

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

24

Global Sul Informática

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

Como pedir ajuda no mundo Linux?
Bom, há 4 (quatro) maneiras de se pedir ajuda. Quer saber? 1. A primeira é você mesmo... faça as perguntas e se vire, corra atrás, RTFM, ou seja, leia as páginas de manual. 2. A segunda é perguntar para seu amigo do lado ou o vizinho. :) 3. A terceira é a Internet com suas listas, chats, forums, how-to´s e minis, receitas de bolo etc. 4. A quarta é a que eu lhe aconselho pois você está lendo esse livro que foi feito pensando em você (posso te bajular um pouquinho né?) é pedir ajuda ao sistema. Nesse ponto o sistema Linux é bem nosso amigo sabia? É, tem ajuda para tudo, para comandos, para configuração, para modo texto e modo gráfico, tem tutoriais e mais um monte de coisas legais que você poderá usar. Porém, é claro, você somente terá isso se você instalar esses recursos, com páginas de manuais, tutoriais, how-to´s etc. Páginas de manual (man pages) No sistema Linux, quase todos os comando tem sua página de manual, o que é um averdadeira mão na roda pois é muito rápido o aprendizado. Também é possível redirecionar a sáida da ajuda de um comando para um determinado arquivo, para que mais tarde possamos ler com mais calma ou quem sabe fazer o nosso próprio resumo de comandos. Exemplo: man cat | colcrt > cat.txt, criamos o arquivo formato texto chamado cat.txt; mais tarde, poderemos formatá-lo do nosso jeito. Esse arquivo texto conté a saída do comando man cat, é útil se nós estivermos fazendo uma apostila ou coisa parecida. Exemplo de ajuda com o comando man cp.
CP(1) NOME

cp - copia arquivos e diretórios

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

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

25

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

man1: man2: man3: man4: man5: man6: man7: man8: man9: manl: mann:

Comandos de usuário Chamadas do sistema Chamadas de bibliotecas Dispositivos Formatos de arquivo Jogos Diversos Comandos do sistema Chamadas internas do kernel Comandos SQL Comandos Tcl/Tk

Para visualizar o conteúdo da documentação pode-se usar os comandos man como nós já vimos ou o comando groff. Por exemplo, para obter informações sobre o comando ls, usamos o comando man ls ou então o comando groff -Tascii -man /usr/man/man1/ls.1 | less. Outros lugares onde você encontra os arquivos de ajuda do sistema é:
/usr/man/pt_BR: É o diretório com a documentação em português do Brasil. /usr/man/es: É o Diretório com a documentação em espanhol. /usr/man/fr_FR: É o Diretório com a documentação em francês.

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

26

Global Sul Informática

servidores espalhados pelo mundo até eu. Quer algumas listas? OK! linux-br@unicamp.br, dicasl@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 BSD LinuxIT Bytes e Artes CIPSGA ComLinux Comunidade Linux DBTH Debian-CE Dicas-L DicasLinux Elevador ForumNordeste FreeCode BR Freshmeat GentooBr Gildot GuaraLinux Guia fo hardware GULSAP IGLU Linux na Rede Linux Single Linux Today Linux Weekly News Linux World LinuxAyuda LinuxBH LinuxBSD LinuxClube LinuxDicas LinuxFacil LinuxHard LinuxInfo LinuxPlace LinuxRapido LinuxSecurity OLinux OpenCode PontoBR Portal do Linux Slashdot UnderLinux VivaOLinux www.antispam.org.br http://bsd.linuxit.com.br www.byteseartes.com.br www.cipsga.org.br www.comlinux.com.br www.comunidadelinux.com.br http://dbth.net www.debian-ce.org www.dicas-l.unicamp.br www.dicaslinux.com.br www.elevador.org www.forumnordeste.com.br http://freecode.linuxsecurity.com.br http://freshmeat.net www.gentoobr.org http://gildot.org www.guaralinux.com.br www.guiadohardware.net.br www.gulsap.kit.net www.linuxiglu.cjb.net www.linuxnarede.org http://linux.novatrento.net http://linuxtoday.com http://lwn.net http://linuxworld.com www.linuxayuda.org www.linuxbh.org www.linuxbsd.com.br www.linuxclube.com www.linuxdicas.com.br www.linuxfacil.hpg.com.br http://linuxhard.webcindario.com www.linuxinfo.com.br www.linuxplace.com.br www.linuxrapido.linuxdicas.com.br www.linuxsecurity.com.br www.olinux.com.br www.opencode.com.br http://pontobr.org www.portaldolinux.org http://slashdot.org www.underlinux.com.br 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.rautu.unicamp.br/linux/, aqui também você aprenderá um monte de coisas sobre o sistema Linux e por último eu lhe indico www.guiadohardware.net do Carlos morimoto, lá você encontrará inúmeras dicas para sair fera no sistema Linux.

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

27

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

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

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

1k-blocks 1510032 248895 37763 7495052 20472816

Used 441328 991996 198282 1522064 4957632

Available 31% 16% 5592252 15515184

Use% Mounted on / /home 22% /usr 25% /mnt/winxp

O que percebemos aqui é que os pontos de montagem: /mnt/floppy, /mnt/cdrom, /mnt/winxp etc, pela lógica, não devem ser incluídos nesse banco de dados. Então, como é que poderemos evitar isso? Simples, use assim:

28

Global Sul Informática

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

Mas isso é se esses pontos de montagem estão montados, caso contrário não será preciso. O argumento “--prunepaths” é usado para os diretórios que não deverão ser incluídos. O padrão é /tmp, /usr/tmp, /var/tmp. Já o argumento “--netpaths” é usado para os diretórios de rede (NFS, AFS, RFS etc) que deverão ser incluídos. E, por final, o argumento “ --output=dbfile” refere-se ao arquivo de base de dados que você quer construir como arquivo alternativo. O padrão usado é /usr/local/var/locatedb. Caso você queira personalizar um pouco esse método de pesquisa poderá alterar o arquivo /etc/ updatedb.conf que é responsável por algumas configyrações. Veja a listagem do conteúdo desse arquivo:
# Onde começar a base de dados. FROM="/" # Quais diretórios serão excluidos. # O /home e /root são automaticamente exluidos. PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt" # Nivel de segurança: # 0 Checagem de segurança desativado, # assim a pesquisa é mais rápioda. # 1 Checagem de segurança ativado. Esse é o padrão. SECURITY="1" # Modo verbose ativado (YES) ou desativado (NO). VERBOSE="YES" # Local que será gavado o banco de dados. DATABASE="/var/lib/slocate/slocate.db" # Quais sistemas de arquivos serão escluidos da pesquisa? PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount, vfat,iso9660,udf,usbdevfs,devfs"

Bom, depois de tudo isso, agora você poderá usar o comando: locate para encontrar os arquivos sobre os quais deseja obter informações (caminho, documentos, manuais e compartilhamento). Veja o exemplo de localização da ocorrência do comando locate:
# locate locate /usr/bin/locate /usr/bin/slocate /usr/share/doc/HTML/en/kcontrol/kcmlocate.docbook /usr/share/man/pt_BR/man1/locate.1.gz /usr/share/man/pt_BR/man1/slocate.1.gz /usr/share/man/man1/locate.1.gz /usr/share/man/man1/slocate.1.gz /usr/share/man/man5/relocated.5.gz /usr/share/man/es/man5/locatedb.5.gz /usr/share/gnome/help/gsearchtool/C/figures/locate.png /usr/share/gnome/help/gsearchtool/C/locate.html /usr/share/gnome/help/gsearchtool/es/figures/locate.png /usr/share/gnome/help/gsearchtool/es/locate.html /usr/share/gnome/help/gsearchtool/it/figures/locate.png /usr/share/gnome/help/gsearchtool/it/locate.html /etc/cron.daily/slocate /etc/postfix/relocated /var/lib/slocate /var/lib/slocate/slocate.db /var/lib/slocate/slocate.db.tmp /var/www/default/manual/mod/mod_php4/function.imagecolorallocate.html /var/www/default/manual/mod/mod_php4/function.imagecolordeallocate.html

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

29

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

Então, para isso vamos aprender mais três comandos:
1. makewhatis: Cria um arquivo de dado para ser usado pelo whatis. 2. apropos: Pesquisa base de dados por descrição de função. 3. whatis: Pesquisa base de dados.

Suponhamos a seguinte situação, na qual você quer saber quais são os comando/programas que executam a tarefa de compilação em seu sistema. Proceda então da seguinte maneira:
# makewhatis # apropos compiler cccp cccp [cpp] compile_et cpp cpp [cccp] g++ [gcc] gcc tic

(1) - The GNU C-Compatible Compiler Preprocessor (1) - The GNU C-Compatible Compiler Preprocessor (1) - error table compiler (1) - The GNU C-Compatible Compiler Preprocessor (1) - The GNU C-Compatible Compiler Preprocessor (1) - GNU project C and C++ Compiler (gcc - 2.95) (1) - GNU project C and C++ Compiler (gcc - 2.95) (1m) - the terminfo entry-description compiler

Analizando o resultado acima: o comando makewhatis criou a base de dados (semelhante ao comando man -k) e depois usamos o comando apropos compiler para saber quais são, então os comandos/programas que executam a tarefa de compilação. Veja outro exemplo:
# apropos tcl catclose [catopen] (3)- open/close a message catalog setclock (8)- sets the hardware clock from the system clock tclsh (1)- Simple shell containing Tcl interpreter

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

Vejamos os seguintes exemplo:
# whereis cp cp: /bin/cp /usr/share/man/man1/cp.1.gz # file /bin/cp /bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

No primeiro exemplo com o comando whereis cp, nós encontramos o executável (binário) cp e os arquivos de páginas de manual (man page). No segundo exemplo com comando: file /bin/cp, descobrimos que ele é um ELF (executável padrão Linux) e outras informações. Veja mais um exemplo:
# file /var/www/icons/world2.png /var/www/icons/world2.png: PNG image data, 20 x 22, 4-bit colormap, non-interlaced

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

30

Global Sul Informática

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

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

31

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

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

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

32

Global Sul Informática

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

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

33

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

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

34

Global Sul Informática

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

Onde <nome_da_interface> é a linha de inicialização do ambiente gráfico e “-- :1” é um display livre que poderá ser usado. Por exemplo, vamos supor que você já esteja com o ambiente KDE aberto e deseja inicializar o Window Maker. Basta, então, digitar: startx -- :1, que irá abrir o Window Maker como segundo ambiente. Lembre-se de que o KDE continua aberto e para acessá-lo basta combinar CONTROL+ALT+F7. Exemplo:
# kde -- :1 # gnome -- :2 # startx -- :1 --> Carrega o ambiente KDE no Display 1. --> Carrega o ambiente Gnome no Display 2. --> Carrega a interface gráfica que estiver em .xinitrc.

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

Então, se você quer abrir um terminal e depois o gimp, observe o exemplo abaixo:
# Arquivo .xinitrc #(depois é só digitar startx para carregar o WindowMaker) exec xterm & exec gimp & exec wmaker

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

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

Windows
Agente de sistema Bate-papo Bloco de nota Calculadora Internet Explorer Mixer

Linux
cron, kron kopete, gaim, kicq, gicq kwrite, kate, kedit, gedit kcal, xcalc, gnome-calculator konqueror, firefox, galeon aumix, kmix, gmix

35

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

Outlook Painel de controle Paint Telnet, ftp Windows Explorer Windows Media Player MS Office PhotoShop

kmail, mutt, qmail, exim, pine gnome-controlcenter, kcontrol kpaint, kvio, gpaint ktelnet, telnet, ftp, tftp, wget konqueror, gmc, mc, nautilus xine, mplayer, xmmsx, kaffeine StarOffice, OpenOffice, KOffice, GnomeOffice

gimp

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

Os links simbólicos são importantes principalmente na hora de compilar o kernel do sistema, isso você vai aprender quando estiver o capítulo de compilação do kernel.

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

36

Global Sul Informática

# updatedb & [1] 5852 # jobs [1]+ Running # jobs [1]+ Done updatedb & 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 5832 pts/2 5847 pts/2 5848 pts/2 5977 pts/2 STAT S S S R TIME 0:00 0:00 0:00 0:00 COMMAND -bash su bash ps a

A combinação CONTROL+Z leva um processo para o segundo plano e a combinação CONTROL+C, de dentro de um terminal mata um processo. Experimente abrir um terminal e executar o Gimp, você vai perceber que não é mais possível usar o terminal pois o Gimp foi executado a partir dele, agora faça um CONTROL+C e o Gimp será encerrado; viu nada de CONTROL+ ALT+ DELETE, certo?
DICA: Você poderá visualizar melhor os processos em sua máquina com os comandos ps, pstree, top, ktop, gtop, kpm, gnome-system-monitor e outros que você poderá adquirir pela Internet. A vantagem de você visualisar um processo pelo modo gráfico é que é muito mais simples você interagir como os processos como: parar, elevar e até mesmo matar. Em algumas distribuições, existe um pequeno utilitário chamado de xkill que nada mais é do um programa que quando você o executa e depois clica sobre a janela de um outro programa, ele simplesmente mata o programa sem dó.

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

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

37

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

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

38

Global Sul Informática

Anotações:

39

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

Anotações:

40

Global Sul Informática

Capítulo 2

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

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

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

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

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

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

41

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

disquete). Se for necessário, monte o CD de sua distribuição e vá para o diretório /images ou algo semelhante e execute o seguinte comando:
# dd if=boot.img of=/dev/fd0 bs=1440k

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

Se for necessário, em algumas distribuições, para gerar o disco suplementar (o nome do arquivo para disco suplementar poderá variar, e varia de acordo com sua distribuição); se for necessário, etiquete um segundo disco com a inscrição disco suplementar, insira na unidade de disco flexível e execute o seguinte comando:
# dd if=supp.img of=/dev/fd0 bs=1440k

Pronto, isso já o suficiente para que você possa iniciar uma instalação do sistema Linux, mas não se esqueça de configurar a BIOS para dar o boot pela unidade de disquete, ok? Outro modo interessante de gerar disco de boot Linux é por meio do comando mkbootdisk, para onde precisamos passar alguns parâmetros a fim de que seja criado automaticamente o referido disco.
# mkbootdisk —device /dev/fd0 2.4.28872cl Insert a disk in /dev/fd0. Any information on the disk will be lost. Press <Enter> to continue or ^C to abort: Warning: lvm support disabled Warning: ReiserFS support disabled

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

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

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

42

Global Sul Informática

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

Pois é... esse comando somente os hackers conseguem identificar o seu conteúdo. Mas quem sabe um dia você chega lá. Então, vamos analisar mais um exemplo:
# cat .cshrc if ( $?prompt ) then set autoexpand set autolist set cdpath = ( ~ ) set pushdtohome if ( -e ~/.alias ) then source ~/.alias endif endif # od .cshrc 0000000 063151 0000020 064164 0000040 070170 0000060 064554 0000100 020150 0000120 072560 0000140 020146 0000160 020051 0000200 020145 0000220 063151 0000232

024040 067145 067141 072163 020075 064163 020050 064164 027576 005012

022040 020012 005144 020012 020050 072144 062455 067145 060456 067145

070077 071440 020040 071440 020176 064157 077040 020012 064554 064544

067562 072145 062563 072145 005051 066557 027057 020040 071541 005146

070155 060440 020164 061440 020040 005145 066141 071440 020012

020164 072165 072541 070144 062563 020012 060551 072557 062440

020051 062557 067564 072141 020164 064440 020163 061562 062156

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

Meta caracteres ou coringas
Todos nós usuários já sabemos o que são coringas (ou referência global). Trata-se de um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. No sistema Linux, temos os meta caracteres que nada mais são do que curingas com mais poder, vamos dizer assim. Esse é um recurso que permite que você faça a filtragem do que será listado, copiado, apagado etc. São usados três tipos de curingas no Linux, o “*” o “?” e o modo padrão.
*: Faz referência a um nome completo/restante de um arquivo/diretório. ?: Faz referência a uma letra naquela posição. [padrão]: Faz referência a um padrão que pode ser: [a-z][1-0]: Faz referência a caracteres de a até z ou de 1 até 10. [a,z][1,0]: Faz referência aos caracteres a e z ou 1 e 10 naquela posição. [a-z,1,0]: Faz referência aos caracteres de a até z e 1 e 10 naquela posição.

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

43

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

qualquer caractere exceto a, b e c. Lembrando que os três tipos de coringas (*, ? e [ ]) podem ser usados ao mesmo tempo. Vamos ver alguns exemplos de uso de meta caracteres:
ls *.new: Lista todos os arquivos que terminam com .new. ls teste?.new: Lista todos os arquivos que começam com teste que contenham qualquer caractere na posição do curinga ? e terminem com .new. ls teste[4,5].*: Lista todos os arquivos que começam com teste que contenham números de 4 e 5 naquela posição e terminem com qualquer extensão.

Vimos aqui que o uso de meta caracteres é muito útil e interessante, mas deve ser feito com muito cuidado pois olhe só esse exemplo matador rm -fr / * &. Sabe o que isso faz? Apaga tudo e todos do seu sistema Linux e ainda é executado em segundo plano. Você sabia que o comando echo * também expande os nomes de arquivos de diretórios? A seguir, você tem um arquivo script, ou seja, um arquivo que tem a mesma função do um arquivo “.bat” ou de lote do MS-DOS. Esse script servirá para ligar a numlock na inicialização do sistema. Se você quer que o numlock seja ligado na inicialização, adicione o seguinte no seu script de inicialização/etc/rc.d/rc.local):
# /bin/bash # liganunlock.sh echo -n "Ligando os LEDs NumLock: " for tty in /dev/tty[1-6] /dev/tty1[2]; do setleds -D +num < $tty & done echo "Ok, já terminei. "

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

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

Uma particularidade é o “~” para referenciar diretórios, por exemplo para entrar no diretório /home/adilson eu posso digitar assim cd ~adilson que também funciona. O comando pwd mostra qual o caminho e diretório que você esta no momento. E o comando cd – volta um nível na hierarquia. A hierarquia de diretórios No sistema Linux, você já percebeu, cada diretório tem a sua função. Vou mostrar a estrutura básica de diretórios, mas ela é muito maior do que a aqui apresentada:
/bin: Contém arquivos e programas que são usados pelos usuários. /root: Diretório do usuário root. /sbin: Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema. /boot: Contém arquivos necessários para a inicialização do sistema. /boot/grub: Contém arquivos necessários para a inicialização do sistema com Grub.

44

Global Sul Informática

/mnt/cdrom: Ponto de montagem da unidade de CD-ROM. /mnt/floppy: Ponto de montagem de unidade de disquetes. /mnt/windows: Ponto de montagem do Windows local. /dev: Contém arquivos usados para acessar dispositivos (periféricos) locais. /etc: Arquivos de configuração de seu computador local. /home: Diretórios com os arquivos dos usuários. /lib: Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel. /lost+found: Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found. /mnt: Ponto de montagem temporário. /opt: Alguns softwares de terceiros são desenhados para serem instalados sob o diretório /opt. A menos que a partição /opt seja criada, o software tentará instalar-se sob /opt e o fará na partição raiz, a qual pode eventualmente não ter o espaço necessário. Claro que existem outras opções de resolução do problema, tais como criar uma ligação simbólica entre /opt e outra partição com mais espaço como /usr por exemplo. /proc: Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos. /tmp: Diretório para armazenamento de arquivos temporários criados por programas, aqui deve-se apagar os arquivos ‘lixo’ que não serão mais usados pelo sistema. /usr: Contém maior parte de seus programas. /usr/src: Destinada ao armazenamento de grandes quantidades de códigos- fonte incluída no Linux, tais como: fontes do núcleo do Linux (kernel), os fontes completos do Linux são armazenados aqui, assim como os novos núcleos são construídos aqui. No momento o seu tamanho é de aproximadamente 50 (cinquenta) MB compactados e descompactados tem mais de 350 (trezentos e cinquenta) MB. Lembre-se de manter espaço adicional para a construção de novos núcleos, pois pode-se desejar manter mais de uma cópia do núcleo simultaneamente.

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

/usr/local: Destinada ao armazenamento de objetos em separado do restante do Linux, tais como softwares não disponíveis como um pacote no formato .rpm. O seu tamanho depende da previsão do volume de dados que usará esta estrutura. /var: Diretório de logs e configurações.

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

45

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

A estrutura de diretórios também é chamada de “Árvore de Diretórios” porque é parecida com uma árvore de cabeça para baixo.

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

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

Nomenclatura dos discos, partições e portas
No sistema Linux, os dispositivos existentes em seu computador, tais como discos rígidos, disquetes, tela, portas de impressora, modem, zip-drive, scaner etc, são identificados por um arquivo referente a esse dispositivo no diretório /dev. A identificação de discos rígidos no Linux é feita da seguinte forma: /dev/hdaX. Onde:
X: Número que identifica o número da partição no disco rígido. a: Letra que identifica o disco rígido (a=primeiro, b=segundo, etc). hd: Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI. /dev/: Local onde são ficacm os dispositivos existentes o sistema.

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

46

Global Sul Informática

É importante entender como os discos e partições são identificados no sistema, pois será necessário usar os parâmetros corretos para montá-los. Veja agora como é que isso funciona para as portas de comunicação:
COM1: COM2: COM3: COM4: /dev/cua0 /dev/cua1 /dev/cua2 /dev/cua3 ou ou ou ou /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3

Então o mouse no sistema Linux ficará na /dev/cua0 ou /dev/ttyS0, mas geralmente ele é definido pelo seu link simbólico /dev/mouse, que é um arquivo que aponta (como se fosse um atalho) para um dispositivo de hardware e o modem como /dev/modem que poderá ser a porta de comunicação 2 (/dev/ttyS1), 3 (/dev/ttyS2) ou 4 (/dev/ttyS3). Use o comando ls /dev/hd* e veja quantos dispositivo você poderá ter:
# ls /dev/hd* /dev/hda /dev/hdb /dev/hdg /dev/hdh /dev/hde1 /dev/hdf1 ... ... /dev/hdc10 /dev/hdd10 /dev/hda9 /dev/hdb9 /dev/hdg9 /dev/hdh9 /dev/hdc /dev/hda1 /dev/hdg1 /dev/hde10 /dev/hdc9 /dev/hdd /dev/hdb1 /dev/hdh1 /dev/hdf10 /dev/hdd9 /dev/hde /dev/hdc1 /dev/hda10 /dev/hdg10 /dev/hde9 /dev/hdf /dev/hdd1 /dev/hdb10 /dev/hdh10 /dev/hdf9

Estrutura de particionamento do sistema Linux
Conforme o tipo de instalação, podem ser requisitados entre 100 (cem) MB até 4 (quatro) GB de espaço em disco, o qual é extremamente aconselhado estar separado de áreas que possuam outros sistemas operacionais como MS-DOS, OS/2, Windows, outras versões de Linux, etc. A forma de separar essas áreas é dividindo o espaço disponível em áreas distintas chamadas partições. Cada partição pode ser acessada como se fosse um disco totalmente diferente. Adicionalmente cada partição tem um tipo que indica como os dados são armazenados naquela partição. Por exemplo, há três tipos de partições diferentes usadas pelo Linux, OS/2 e MS-DOS. Para saber os tipos de partições válidas em seu computador, use o comando fdisk -l:
# fdisk -l Disco /dev/hda: 255 cabeças, 63 setores, 3738 Unidades = cilindros de 16065 * 512 bytes Dispositivo Boot Início Fim Blocos /dev/hda1 * 1 2550 20482843+ /dev/hda2 2551 3738 9542610 /dev/hda5 2551 2741 1534176 /dev/hda6 2742 2758 136521 /dev/hda7 2759 2790 257008+ /dev/hda8 2791 3738 7614778+ cilindros Id c f 83 82 83 83 Sistema FAT32 Win95 (LBA) Estendida Win95 (LBA) Linux Linux swap Linux Linux

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

47

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

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

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

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

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

48

Global Sul Informática

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

Os arquivos de inicialização da máquina
No ambiente Windows, você tem lá algumas variáveis de ambiente e os arquivos:
autoexec.bat: Carrega variáveis e progranas residentes. config.sys: Carrega configurações de variáveis. ms-dos.sys: Carrega o sistema MS-DOS. io.sys: Carrega informações do sistema da BIOS. command.com: Carrega o interpretador de comandos.

No entanto, a grande maioria dos usuários hoje não conhece bem o arquivo autoexec.bat. Já no sistema Linux, os arquivos de inicialização além de serem infinitamente mais poderosos são diversos. Nós temos arquivos de inicialização da máquina em arquivos de configuração de aplicativos e programas em si também. Onde eles estão? Esses arquivos estão em /etc/rc.d.
# ls -laF /etc/rc.d total 84 drwxr-xr-x 10 root drwxr-xr-x 54 root drwxr-xr-x 2 root -rwxr-xr-x 1 root -rw-r--r-1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root

root root root root root root root root root root root root root root

root root 4096 4063 114 1762 576 2964 21437 4096 4096 4096 4096 4096 4096 4096

4096 4096 Out 10 Jun 25 Out 10 Out 10 Jun 25 Jun 25 Jun 25 Out 10 Out 10 Out 10 Out 10 Out 10 Ago 1 Out 10

Out 10 07:34 ./ Dez 5 11:26 ../ 07:04 init.d/ 07:20 rc* 07:34 rc.firewall 07:34 rc.local* 07:20 rc.modules* 00:59 rc.news* 07:20 rc.sysinit* 07:42 rc0.d/ 07:42 rc1.d/ 07:42 rc2.d/ 07:42 rc3.d/ 07:42 rc4.d/ 16:57 rc5.d/ 07:42 rc6.d/

Vamos entender o que fazem alguns desses arquivos, os scripts de inicialização: O script rc*: É responsável pelo início e parada de serviços quando houver uma troca de nível de execução (runlevel); ele também é responsável pela configuração básica de inicialização da máquina com, por exemplo, o nome da máquina (hostname). O script rc.local*: É executado após todos os outros scripts tiverem sido processados pelo sistema e responsável por aquele pinguim, o Tux, que você vê quando o sistema Linux está sendo iniciado; cuida também da execução do script de configuração do idioma “. /etc/profile.d/lang.sh” que será usado e suas variáveis. O arquivo do pinguim geralmente está em /etc/issue, e o conteúdo do script rc.local* você poderá ver a seguir (Distribuição Conectiva Linux):
#!/bin/sh . /etc/profile.d/lang.sh if [ -f /etc/conectiva-release ] ; then R=$(cat /etc/conectiva-release) echo "$R" > /etc/issue.net echo "Kernel $(uname -r)" >> /etc/issue.net echo >> /etc/issue.net if [ -x /usr/bin/linux_logo ] ; then clear > /etc/issue linux_logo -classic >> /etc/issue echo "$R (\l)" >> /etc/issue echo >> /etc/issue else

49

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

fi

fi

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

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

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

50

Global Sul Informática

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

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

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

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

51

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

vertical. Também documenta parâmetros usados em alguns arquivos de configuração. A utilização da página de manual é simples, digite man [seção] [comando/arquivo]. Onde seção: É a seção de manual que será aberta; se omitido, mostra a primeira seção sobre o comando encontrada (em ordem crescente). E comando/arquivo: É o comando/arquivo que deseja pesquisar. A navegação dentro das páginas de manual é feita usando-se as teclas:
q: Sai da página de manual. PageDown ou f: Rola 25 linhas abaixo. PageUP ou w: Rola 25 linhas acima. SetaAcima ou k: Rola 1 linha acima. SetaAbaixo ou e: Rola 1 linha abaixo. r: Redesenha a tela (refresh). p ou g: Inicio da página. h: Ajuda sobre as opções da página de manual. s: Salva a página de manual em formato texto no arquivo especificado.

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

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

52

Global Sul Informática

Por exemplo, caso eu queira descobrir como obter informação a respeito de compiladores instalados em meu sistema, eu poderia digitar:
# apropos compiler cccp, cpp (1) - The GNU C-Compatible Compiler Preprocessor. g++ (1) - GNU project C++ Compiler gcc, g++ (1) - GNU project C and C++ Compiler (v2.7)

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

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

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

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

53

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

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

54

Global Sul Informática

Comandos para manipulação de diretórios
l, ls, dir, vdir Lista o conteúdo de um diretório e hierarquicamente. As opções mais comummente usadas são: –C: Lista arquivos em colunas, ordenados verticalmente, –R: Lista os diretórios encontrados, ordenados recursivamente, –a: Inclui os arquivos ocultos (iniciados com “.”) e–l: Exibe as propriedades do arquivo na listagem. Veja alguns exemplos:
ls -l | grep ‘^-..x’: Lista somente os arquivos executáveis. ls -l | grep ‘^d’: Listar somente diretórios. ls / -R *: Listar todos os arquivos do disco rígido.

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

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

55

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

Veja o exemplo:
# cat > arquivo1.txt Esta é a primeira linha do arquivo 1 Esta é a segunda linha do arquivo 1 ^D

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

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

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

56

Global Sul Informática

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

grep O comando grep lista as linhas que combinem com um padrão. O grep pesquisa nos arquivos de entrada (ou na entrada padrão, caso nenhum arquivo seja informado ou o nome dos arquivos seja igual a “-”) linhas que contenham o padrão informado. Por padrão, o comando grep lista as linhas coincidentes. Por exemplo, se você quer informação sobre o processo de inicialização do Linux, o comando correto seria: ps as | grep init. Então agora ficou mais interessante. por exemplo, se você quer informação sobre quais são os terminais ativos em sua máquina, é só usar o comando:
# ps as | grep tty 326 2 S 0:00 /sbin/mingetty 327 3 S 0:00 /sbin/mingetty 328 4 S 0:00 /sbin/mingetty 329 5 S 0:00 /sbin/mingetty 330 6 S 0:00 /sbin/mingetty 332 7 S 0:00 /sbin/mingetty 334 8 S 0:00 /sbin/mingetty tty2 tty3 tty4 tty5 tty6 tty8 tty9

Comandos de controle de acessos a arquivos e diretórios
chmod Muda a permissão de acesso a um arquivo ou diretório. Com esse comando, você pode escolher se um usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário (exceto para diretórios configurados com a permissão de grupo “s”, o qual será visto adiante). Exemplos de permissões de acesso:
# chmod g+r * --> Permite que todos os usuários que pertençam ao grupo dos arquivos (g) tenham (+) permissões de leitura (r) em todos os arquivos do diretório atual. # chmod o-r qwerty.txt -- > Retira (-) a permissão de leitura (r) do arquivo teste.txt para os outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo qwerty.txt). # chmod uo+x teste.txt --> Inclui (+) a permissão de execução do arquivo qwerty.txt para o dono e grupo do arquivo. # chmod a+x qwerty.txt --> Inclui (+) a permissão de execução do arquivo qwerty.txt para o dono, grupo e outros usuários.

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

57

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

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

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

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

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

Comandos para gerenciamento de impressão
lpq Mostra os trabalhos de impressão atuais. lprm Remove um trabalho de impressão. É possível também usar o programa de administração lpc para gerenciar a fila de impressão. lpstat É muito utilizado em ambientes Unix, mas também foi portado para o Linux. Ele oferece muitas opções, das quais destacam-se: –a: Lista todos os relatórios enviados para as impressoras, –p: Lista o estado das impressoras, –R: Mostra o número de cada job na fila de impressão, –s: Mostra um sumário do estado das impressoras. kups, cups ou qtcups Executa o novo programa para configuração de impressoras em modo gráfico.
DICA: Você também poderá gerenciar as tarefas que estão sendo impressas, contando com duas ferramentas: o klpq do KDE e o gulp do GNOME; para acioná-lo abra um terminal X e digite seus respectivos nomes. Elas mostram propriedades da fila de impressão, tais como nome do documento que está sendo impresso, remoção da fila de impressão (cancelar impressão) e exibição de quanto falta para a conclusão da tarefa.

58

Global Sul Informática

Comandos mensagens no sistema
rwall O comando rwall manda uma mensagem para todos os usuários de uma máquina. Ele é muito simples. Acompanhe um exemplo de uso comum do comando rwall micro10 arquivo-de-mensagens.txt. Nesse exemplo, o comando rwall pega um arquivo com mensagens e manda para o micro10 em questão (a rede deve estar configurada e funcionando). Mas se você vai escrever poucas coisas, o comando seria assim:
# rwall secretaria <enter> Atenção secretaria Luciene... O Sr. Adilson solicita a sua presença em sala Imediatamente, faça um logout no sistema e venha logo. ^D

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

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

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

59

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

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

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

Comandos de manipulação de mídias
badblock pesquisa por setores ruins em um dispositivo e os informa. Exemplo: badblock /dev/hda1. cfdisk Assim como o fdisk, o cfdisk é programa manipulador da tabela de partições de discos baseada em curses, só é mais fácil de ser compreendido. fdisk Manipulador da tabela de partições para o Linux. Discos rígidos podem ser divididos em um ou mais discos lógicos chamados de partições. Essa divisão é descrita na tabela de partições encontrada no setor 0 do disco. Use o comando fdisk -l para saber quais são os sistemas de arquivos presentes em seu disco. Exemplo:
# fdisk -l Disco /dev/hda: 255 cabeças, 63 Unidades = cilindros de 16065 * Dispositivo Boot Início Fim /dev/hda1 * 1 /dev/hda2 393 /dev/hda5 393 /dev/hda6 457 /dev/hda7 465 /dev/hda8 484 setores, 784 cilindros 512 bytes Blocos Id Sistema 392 3148708+ c 784 3148740 5 456 514048+ 83 464 64228+ 82 Linux 483 152586 83 Linux 784 2417751 83

FAT32 Win95 Estendida Linux swap Linux

60

Global Sul Informática

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

O parâmetro –t [tipo] é importante que você sai usá-lo, veja aqui os tipos de sistemas de arquivos usado pelo dispositivo (device). São aceitos os sistemas de arquivos (os mais usados):
ext2: Para partições GNU/Linux usando o Extended File System versão 2 (a mais comum). ext3: Para partições GNU/Linux usando o Extended File System versão 3, com suporte a journaling, usado pelo Conectiva Linux 9. reiserfs: Para partições reiserfs, com suporte a journaling. vfat: Para partições Windows 95 que utilizam nomes extensos de arquivos e diretórios. É mais usada, veja o seu arquivo /etc/fstab. msdos: Para partições DOS normais. iso9660: Para montar unidades de CD-ROM. É o padrão. umsdos: Para montar uma partição DOS com recursos de partições EXT2, como permissões de acesso, links, etc. udf: Usada para CD´s regraváveis. smbfs, smb, cifs: Usado pelo servidor Samba. ntfs: Usado para montar partições de Windows NT. hpfs: Usado para montar partições do OS/2 da IBM.

Você também poderá montar sua partição como somente leitura ou com permisão de escrita. Para isso use “–r” para somente leitura (ready only) e “–w” para permitir escrita (wrtite) no dispositivo. Exemplo:
mount -o remount,rw / -- > Esse comando remontará a partição raíz “/” como somente leitura.

umount Desmonta o sistema de arquivos. Deve ser utilizado depois de montar via comando mount um sistema de arquivos. Você desmonta o ponto de montagem e deve estar fora dele. Exemplos:
# umount /mnt/floppy # umount /mnt/floppy # umount /mnt/windows --> Desmontar um disquete ext3. --> Desmontar um disquete DOS. -->Desmontar uma partição Windows.

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

61

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

fdformat Executa uma formatação de baixo nível em um disquete. O dispositivo é normalmente um dos seguintes (para dispositivos de disquetes, major=2, e o minor é mostrado somente para propósitos de informação):
/dev/fd0d360 /dev/fd0D360 /dev/fd0D720 /dev/fd0h360 /dev/fd0H1440 /dev/fd1h1200 /dev/fd1H360 /dev/fd1H720 /dev/fd1h720 (minor (minor (minor (minor (minor (minor (minor (minor (minor = = = = = = = = = 4) 12) 16) 20) 28) 9) 13) 17) 25) /dev/fd0h1200 /dev/fd0H360 /dev/fd0H720 /dev/fd0h720 /dev/fd1d360 /dev/fd1D360 /dev/fd1D720 /dev/fd1h360 /dev/fd1H1440 (minor (minor (minor (minor (minor (minor (minor (minor (minor = = = = = = = = = 8) 12) 16) 24) 5) 13) 17) 21) 29)

Exemplo:
fdformat /dev/fd0H1440

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

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

62

Global Sul Informática

Comandos para manipulação de usuários e grupos
useradd Adiciona um novo usuário no sistema. Por default, quando um novo usuário é adicionado, é criado um grupo com o mesmo nome do usuário. Será criado também um diretório home com o nome do usuário por exemplo: /home/adlson, /home/janaina, /home/gabriel etc.
# useradd adilson # useradd linux

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

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

id Exibe a identificação atual do usuário, grupo primário e outros grupos a que pertence. Exemplo:
# id -g -n -u -r

logname Exibe o seu login, ou seja, o seu nome de usuário conectado ao sistema. Exemplo: logname. passwd Serve para adicionar uma senha de acesso a um usuário já cadastrado no sistema. Se você quiser apenas atualizar a senha desse usuário, use o parâmetro “-u”, que o usuário agora terá uma nova senha. Exemplo:
# passwd root Changing password for user root New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully

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

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

63

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

# # # #

groupadd groupadd groupadd groupadd

visitante administracao expedicao hackers

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

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

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

64

Global Sul Informática

mpg123 e mpg321 Toca músicas mp3 em modo texto. play Executa um arquivo de som em qualquer disposivo já configurado. O comando rec grava/cria um arquivo de áudio em qualquer formato. alien Converte ou instala pacotes no sistema. Os parâmetros são:
-d, --to-deb: Constroi/converte pacotes para o formato debian (deb). -r, --to-rpm: Constroi/converte pacotes para o formato rpm. -t, --to-tgz: Constroi/converte pacotes para o formato tgz. --to-slp: Constroi/converte pacotes para o formato slp. -i, --install: Instala automaticamente os pacotes gerados.

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

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

65

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

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

Comandos de verificação de logs /var
cat /var/log/boot.log Mostra informações sobre os dias em que o micro foi ligado. cat /var/log/cron Mostra as informações sobre tarefas agendadas no sistema. cat /var/log/messages Mostra todas as informações enviadas pelo kernel em processo de inicialização de máquinas. cat /var/log/secure Mostra em quais terminais (tty) usuários fizerem login. É possível saber o mês, dia, hora, nome da máquina (hostname) que fez o login e em qual tty.
# cat /var/log/secure: Mar 6 14:42:50 adilson Mar 8 09:57:29 luzia Jun 5 11:58:55 gabriel Jun 5 13:23:29 sonizia Jun 5 13:28:05 kelly Jul 21 08:50:02 anarosa Jul 22 17:38:59 adenisia Ago 22 17:46:32 marcos Ago 22 17:54:32 marlene Set 1 08:45:57 adilson login: login: login: login: login: login: login: login: login: login: ROOT ROOT ROOT ROOT ROOT ROOT ROOT ROOT ROOT ROOT LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN ON ON ON ON ON ON ON ON ON ON tty1 tty2 tty3 tty4 tty2 tty4 tty2 tty5 tty6 tty6

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

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

66

Global Sul Informática

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

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

67

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

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

68

Global Sul Informática

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

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

69

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

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

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

70

Global Sul Informática

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

71

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

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

72

Global Sul Informática

Anotações:

73

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

Anotações:

74

Global Sul Informática

Capítulo 3

Gerenciamento de usuários e grupos
O sistema Linux é realmente um sistema multitarefa, ou seja, várias pessoas podem usar o sistema simultaneamente para extrair recursos que podem estar compartilhados ou não. É muito comum em um computador vários usuários logados e trabalhando em conjunto, tais como:
1. 2. 3. 4. Compartilhando impressora. Compartilhando Internet e arquivos. Executando programas remotamente. Compartilhando desenvolvimento de projetos etc.

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

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

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

75

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

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

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

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

A seguir, um exemplo de um usuário que acabou de ser criado no sistema; esse acabou de usar alguns programas e também o modo gráfico. Observe que no sistema Linux a grande maioria dos arquivos de configuração começa com um ponto “.” isso quer dizer que esse arquivo estará oculto de uma listagem normal:
total 12 drwx-----drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-2 5 1 1 1 1 1 1 1 gabriel root gabriel gabriel gabriel gabriel gabriel gabriel gabriel gabriel root gabriel gabriel gabriel gabriel gabriel gabriel gabriel 1024 1024 3304 508 24 230 124 154 593 Out Out Out Out Out Out Out Out Out 2 2 2 2 2 2 2 2 2 2003 2003 2003 2003 2003 2003 2003 2003 2003 ./ ../ .Xdefaults .alias .bash_logout .bash_profile .bashrc .cshrc .xserverrc

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

76

Global Sul Informática

A seguir você pode ver um exemplo de um pequeno servidor Linux onde há alguns usuários já cadastrados no sistema:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/var/spool/news: uucp:x:10:14:uucp:/var/spool/uucp: operator:x:11:0:operator:/root: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:FTP User:/srv/ftp: nobody:x:65534:65534:Nobody:/home: sshd:x:100:233:sshd:/var/empty:/bin/false postfix:x:101:101:postfix:/var/spool/postfix: gdm:x:42:42::/home/gdm:/bin/bash adilson:x:500:500:Adilson Bonan:/home/adilson:/bin/bash gabriel:x:501:501:Gabriel TBonan:/home/gabriel:/bin/bash luzia:x:502:502::/home/luzia:/bin/bash cristiane:x:503:503::/home/cristiane:/bin/bash leniza:x:504:504::/home/leniza:/bin/bash

O funcionamento desse arquivo é simples, vejamos uma linha:
cristiane:x:503:503::/home/cristiane:/bin/bash

Nós temos o nome do usuário, a senha dele (quando aparecer um “x” a senha está criptografada e está no /etc/shadow), o grupo do usuário, seu lugar no sistema e qual interpretador ele usará. Veja a seguir uma listagem parcial do arquivo /etc/shadow:
root:$1$jhjnccLx$rnf6OEFKUBJwUNdXf0em81:12290:0:99999:7::: shutdown:*:12290:0:99999:7::: halt:*:12290:0:99999:7::: mail:*:12290:0:99999:7::: ftp:*:12290:0:99999:7::: nobody:*:12290:0:99999:7::: gdm:!!:12290:0:99999:7::: adilson:$1$LRJ6X3sT$h/rFLrNzP70nauO5lpRlo.:12290:0:99999:7::: gabriel:$1$3YzQ7O2E$4Q9hPsVJd00fY3F8jsq/f1:12290:0:99999:7::: luiza:wLl43UZ68Kw5E:12327:0:32767:7:::11536288 cristiane:wTuaeL941YU1I:12327:0:32767:7::: leniza:wvEcsoeUhPNGs:12327:0:32767:7:::0

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

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

77

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

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

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

OK! Agora use o comando chpasswd /etc/senhas.pwd para que todas senhas sejam atualizadas de uma única vez. Agora informe aos usuário, né? Um outro arquivo importante é o /etc/login.defs, que guarda as definições sobre os usuários do sistema. A seguir, um pequeno exemplo desse arquivo:
# Localização onde deverão residir os e-mails para o usuário #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # # # # # Ações de controle de senhas: PASS_MAX_DAYS = Número máximo de dias p/ a senha pode ser usada. PASS_MIN_DAYS = Número mínimo de dias para troca de senhas. PASS_MIN_LEN = Tamanho mínimo aceito para senhas. PASS_WARN_AGE = Número de dias p/ aviso antes de expirar. 99999 0 7

PASS_MAX_DAYS PASS_MIN_DAYS PASS_MIN_LEN 5 PASS_WARN_AGE

# Valores mínimo e máximo para o comando useradd na criação de usuários UID_MIN 500 UID_MAX 60000 # O menor UID possível para o comando useradd, pois existem alguns # UIDs estáticos no sistema Linux. No Conectiva o default é 100. UID_SYSTEM_MIN 100 # Valores mínimo e máximo para o comando groupadd na criação de grupos GID_MIN 500 GID_MAX 60000 # Se for definido, este comando rodará quando da remoção de um # usuário. Esse comando apeta o at, cron e serviços de impressão. # USERDEL_CMD /usr/sbin/userdel_local

# O comando useradd criará os todos usuários em /home/<nome_do_usuário> CREATE_HOME yes # Será usado o método de criptografia MD5 # que é difícil de ser quebrado. MD5_CRYPT_ENAB yes

78

Global Sul Informática

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

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

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

79

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

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

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

Viu como é muita coisa a ser feita. Bom, então agora vamos criar um comando chamado winxpon, que ficará dentro do arquivo /etc/bashrc. Em algum lugar desse arquivo, você deverá adicionar a seguinte linha:
# alias winxpon=“mount -t vfat /dev/hda1 /mnt/winxp; ls /mnt/winxp”

Depois você deverá digitar o comando . .bashrc dentro do /root, isso se for o root. Ok, agora existe um novo comando chamado winxpon, e se você o digitar, terá uma listagem dos arquivos que estão na partição do Windows. Mas, nesse caso, você não entrou na partição Windows XP, e sim apenas listou o conteúdo que agora está em /mnt/winxp. Vejamos o conteúdo do arquivo /etc/bashrc:
# Funções e aliases para todo o sistema. # Configurações do ambiente devem ser feitas no /etc/profile. # Por alguma razão desconhecida, o bash se recusa a herdar a # variável PS1 em # algumas circunstâncias. # Colocando o PS1 aqui garante que ela seja carregada sempre. PS1="[\u@\h \W]\\$ " alias which="type -path" alias l="ls -laF --color"

80

Global Sul Informática

alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias

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

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

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

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

81

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

O .bash_profile Abaixo, nós temos o arquivo .bash_profile que é responsável pelos novos comandos contidos em /etc/bashrc. Ele lê esses novos comandos e também controla as variáveis de sistema. Observe o arquivo abaixo. Na última linha, mesg n não deixa que você receba mensagens, caso você queira receber mensagens de outro usuários da rede, a última linha deve ser mesg y.
# .bash_profile # Executa os aliases e funções. if [ -f ~/.bashrc ]; then . ~/.bashrc fi # Especifíca o ambiente e os programas na inicialização. PATH=$PATH:$HOME/bin ENV=$HOME/.bashrc USERNAME=”root” export USERNAME ENV PATH # Qualquer comando inserido aqui será executado quando o usuário se logar mesg n

Cada usuário tem o seu arquivo, porém se as mudanças forem gerais você deverá editar o arquivo /etc/profile, que se parece com o da listagem a seguir:
# Ambiente de onde os programas poderão ser chamados. # As funções e o aliase vão em /etc/bashrc. PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin" MANPATH="$MANPATH:/usr/local/man" # Define como será o prompt do sistema PS1='$(/bin/hostname -s) [$PWD] > ' ulimit -c 1000000 if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then umask 002 else umask 022 fi USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HOSTNAME=`/bin/hostname` HISTSIZE=1000 HISTFILESIZE=1000 INPUTRC=/etc/inputrc export PATH MANPATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done unset i clear; setterm -foreground white -backg
DICA: No arquivo /etc/profile, nós poderemos configurar uma variável de ambiente, a “TMOUT=n”, onde n é o tempo em segundos em que um determinado usuário poderá ficar inativo no sistema, em que, após esse tempo, o usuário será automaticamente desconectado do sistema. Assim, preserva-se mais ainda a segurança do sistema. Caso você resolva fazer isso via modo console (texto) usando o bash como interpretador padrão, use o comando export TMOUT= “n”.

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

82

Global Sul Informática

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

O /etc/motd O arquivo motd encontra-se no diretório /etc. Esse arquivo é simplesmente um texto que será apresentado quando um usuário logar o sistema. Exemplo:
BEM-VINDO AO SISTEMA OPERACIONAL LINUX. +=====================================================+ | Tenha um bom dia de trabalho. | | Qualquer dúvida man <comando>. | +-----------------------------------------------------+

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

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

Depois, basta executar os comandos com o sudo na frente:
[adilson@hackers.net]$ sudo rpm -ivh /mnt/cdrom/conectiva/RPMS/quake-* [adilson@hackers.net]$ sudo quake

Vejamos a seguir um típico arquivo /etc/sudoers, estudando-o para aprender bem:
# Exemplo de um arquivo /etc/sudoers. # Edite esse arquivo como root e com o comando visudo. # Especificação de apelidos para usuários User_Alias FULLTIMERS = millert, mikef, dowdy

83

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

User_Alias User_Alias

PARTTIMERS = bostley, jwfox, crawl WEBMASTERS = will, wendy, wim

# Executa e faz valer os apelidos para usuários. Runas_Alias OP = root, operator Runas_Alias DB = oracle, sybase # Especificação de apelidos para hosts (micros em rede). Host_Alias SPARC = bigtime, eclipse, moet, anchor:\ SGI = grolsch, dandelion, black:\ ALPHA = widget, thalamus, foobar:\ HPPA = boa, nag, python Host_Alias CUNETS = 128.138.0.0/255.255.0.0 Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0 Host_Alias SERVERS = master, mail, www, ns Host_Alias CDROM = orion, perseus, hercules ...

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

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

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

84

Global Sul Informática

Configurando o prompt do usuário No sistema Linux é possível alterar a string do prompt do interpretador de comandos Bash, é simples basta inserir no arquivo /etc/bashrc uma seqüência de caracteres especiais. Os caracteres são decodificados da seguinte maneira:
d: Data atual no formato: “Dia_da_semana Mês Dia”. h: Nome da máquina até o primeiro “.”. s: Nome do shell. A: hora atual no formato de 24 horas hh:mm:ss. u: O nome do usuário atual. w: Caminho completo do diretório de trabalho atual. W: Nome do diretório atual. !: O número do comando no histórico. #: O número do comando na sessão atual do shell. $: Caractere que diferencia um usuário comum do super-usuário. nn: Caracter correspondente ao número octal nnn. /: Uma barra. [: Inicia a seqüencia de caracteres não vistos na tela. ]: Fim da seqüencia de caracteres não vistos na tela.

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

O prompt será parecido com esse:
[usuario@maquina /local]#

Você poderá também colorir o prompt, adicionando na seqüência os códigos de cores ANSI. Estes códigos devem ser adicionados como caracteres que não serão impressos, ficando entre o “[” e o “]”. Além do mais os códigos devem começar com “33[“ e terminar com um “m” minúsculo. A sintaxe completa será assim: [33[Z;YY;XXm], onde Z é o estilo dos caracteres, YY é a cor de fundo e XX a cor dos caracteres. Veja a tabela de cores e estilos:
Cores Preto Vermelho Verde Amarelo Azul Roxo Ciano Cinza Caracteres 30 31 32 33 34 35 36 37 Fundo 40 41 42 43 44 45 46 47

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

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

85

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

export PS1="Data: d Hora: ->" export PS1="253u@h273 $ " export PS1="[33[1;40;32m]u[33[0;40;33m]@[33[1;40;31m]h[33[0m]$" export PS1="[33[1;44;37m]253[33[1;44;32m]u[33[1;44;37m]@[33[1;44;33m]h[33[1;44;37m]: [33[1;44;36m]w[33[1;44;37m]273[33[0m]$ " export PS1="[33[0;44;37m]d [33[0m] [33[0;40;32m]s[33[1;40;37m]:[33[1;40;36m]w [33[0m]$ " export PS1="[33[0;44;37m]d [33[0;40;32m]s[33[1;40;37m]:[33[1;40;36m]w [33[0m]$ "

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

Consulte a página manual do bash para mais informações. Agora veja um exemplo do arquivo /etc/bashrc:
# /etc/bashrc Vermelho="[33[31m]" Verde="[33[32m]" Amarelo="[33[33m]" Ciano="[33[36m]" Branco="[33[37m]" Normal="[33[0m]" PS1="$Normal$Verde[$Amarelou$Vermelho@$Amareloh$Verde: $Cianow$Verde]$Branco$ $Normal"

Anotações: 86

Global Sul Informática

87

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

Anotações:

88

Global Sul Informática

Capítulo 4

Gerenciamento de mídias
Neste capítulo, vamos aprender como é que o sistema Unix /Linux tratam os dispositivos de armazenamento de informações, as mídias. No Linux, depois que entendemos, é muito simples como é que funciona o gerenciamento de mídias, que podem ser:
1. 2. 3. 4. Sua Seu Sua Seu unidade de disquete. CD/DVD-ROM e/ou sua gravadora CD-RW. unidade de fita ou zip drive. disco rígido, partições Windows, NFS, UDF etc.

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

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

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

89

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

A primeira coisa que você deve ficar atento é o seguinte: criar o diretório raiz “/” dentro do diretório /mnt os seguintes diretórios (alguns são criados no momento da instalação):
/mnt/floppy (para disquete). /mnt/cdrom (para CD-ROM). /mnt/windows (para Windows). /mnt/zip (para zip drive). /mnt/jazz (para jaz drive). /mnt/tape (para fita magnética). /mnt/samba (para configurações básicas do samba). /mnt/cdrw (para gravar CD´s).

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

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

O acesso a unidade de disquete
Criar um ponto de montagem para a unidade de disquete é muito simples, apenas com duas linhas de comandos, você ja faz isso:
# mount /dev/fd0 /mnt/floppy # ls -laF /mnt/floppy

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

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

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

90

Global Sul Informática

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

O acesso a unidade de CD-ROM
Para criar um ponto de montagem para a unidade de CD-ROM, é tão simples quanto para a unidade de disquete, veja:
# mount /dev/cdrom /mnt/cdrom # ls -laF /mnt/cdrom

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

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

91

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

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

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

Se der tudo certo, agora use os comandos que montam e listam o sua unidade zip:
# mount /dev/sda4 /mnt/zip; ls -laF /mnt/zip

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

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

Usando o comando dmesg e analisando o seu conteúdo, nós poderemos verificar se o nosso zipdrive foi ou não reconhecido e assim saberemos como montá-lo mais tarde. Veja a seguir um pequeno pedaço do resultado do comando dmesg:
parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,COMPAT,ECP] parport0: irq 7 detected parport0: cpp_daisy: aa5500ff(38) parport0: assign_addrs: aa5500ff(38) parport0: cpp_daisy: aa5500ff(38) parport0: assign_addrs: aa5500ff(38) ppa: Version 2.07 (for Linux 2.4.x) ppa: Found device at ID 6, Attempting to use EPP 32 bit ppa: Communication established with ID 6 using EPP 32 bit scsi0 : Iomega VPI0 (ppa) interface Vendor: IOMEGA Model: ZIP 100 Rev: K.05 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sda at scsi0, channel 0, id 6, lun 0 sda : READ CAPACITY failed. sda : status = 0, message = 00, host = 0, driver = 08 sda : extended sense code = 2 sda : block size assumed to be 512 bytes, disk size 1GB. sda: I/O error: dev 08:00, sector 0 unable to read partition table LVM version 0.9.1_beta3 by Heinz Mauelshagen (25/01/2001) lvm — Module successfully initialized Device not ready. Make sure there is a disc in the drive. VFS: Disk change detected on device sd(8,0) sda : READ CAPACITY failed. sda : status = 0, message = 00, host = 0, driver = 08 sda : extended sense code = 2

92

Global Sul Informática

sda : block size assumed to be 512 bytes, disk size 1GB. sda: I/O error: dev 08:00, sector 0 unable to read partition table

O disco de zip-drive em sistemas Linux é visto como uma interface SCSI e é emulada na compilação do kernel, caso você mesmo tenha que fazer isso ou quando é reconhecida automaticamente pelo sistema. As interfaces SCSI ficam em /dev/sda?, e para saber qual é o sda correto para uma unidade de zip, use o comando a seguir:
# dmesg | grep sda Attached scsi removable disk sda at scsi0, channel 0, id 6, lun 0 SCSI device sda: 196608 512-byte hdwr sectors (101 MB) sda: Write Protect is off sda: sda4

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

O acesso a partição do Windows local
Criar um ponto de montagem para a unidade de Windows, caso o seu disco rígido esteja particionado e você instalou o Windows no /dev/hda1 – C:\ – é muito simples:
# mount /dev/hda1 /mnt/windows # ls -laF /mnt/windows

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

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

Verificação dos pontos de montagem
Algumas vezes, é preciso saber o espaço livre em disco; o comando df é útil, porque ele pode formatar diversos tipos de informações. Caso o argumento seja o nome absoluto do dispositivo de disco com um sistema de arquivos montado, o comando df mostra o espaço disponível naquele sistema de arquivos, em vez do sistema que contém o dispositivo (que sempre será o sistema raiz). O comando df sem argumentos:
# df Filesystem /dev/hda5 /dev/hda7 /dev/hda8 /dev/hda1 /dev/cdrom /dev/fd0 1k-blocks Used 1004024 307512 248895 25419 8009052 1906912 20472816 6506400 660502 660502 1423 0 Available 645508 210626 5695296 13966416 0 1423 Use% 33% 11% 26% 32% 100% 0% Mounted on / /home /usr /mnt/winxp /mnt/cdrom /mnt/floppy

O comando df com argumentos e com pontos de montagem:
# df -a Filesystem /dev/hda5 none usbdevfs /dev/hda7 1k-blocks 1004024 0 0 248895 Used Available Use% 307512 645508 33% / 0 0 0 25419 210626 Mounted on 0 11% /proc /proc/bus/usb /home

93

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

/dev/hda8 none /dev/hda1 /dev/cdrom /dev/fd0

8009052 0 20472816 660502 1423

1906912 6506400 660502 0

5695296 0 13966416 0 1423

26% 32% 100%

/usr 0 /mnt/winxp /mnt/cdrom 0%

-

/dev/pts

/mnt/floppy

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

O espaço disponível
Usaremos o comando du quando precisarmos saber as hierarquias de algumas informações sobre um determinado diretório. Por exemplo, você sabe quantos subdiretórios pertencem ao /opt ou ao /usr/X11R6 ? O comando du mostra informações sobre o diretório “pai” e os diretórios “filhos”. Veja alguns parâmetros usados: –a: Mostra informações para todos os arquivos, não somente os diretórios, –b: Imprime os tamanhos em bytes, –k: Lista os tamanhos em Kbytes, –s: Lista somente o total para cada argumento, –x: Ignora diretórios que estejam em sistemas de arquivos diferentes daqueles onde o argumento esteja sendo processado, –S: Apresenta o tamanho de cada diretório separadamente, não incluindo os tamanhos dos subdiretórios. Veja a seguir o exemplo do comando:
[root@gabriel home]# du -hs adilson/ 12 ./lost+found 1 ./adilson/universidade 1 ./adilson/edfutura 1 ./adilson/mp3 2081 ./adilson/fotos 1 ./adilson/hackers 1 ./adilson/kylix 23367 ./adilson 1 ./gabriel/dragonball-Z 1 ./gabriel/dragonball-GT 1 ./gabriel/pokemon 14 ./gabriel 23394 .

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

Os arquivos /etc/fstab e /etc/mtab
Os pontos de montagem que poderemos montar e desmontar estão gravados em /etc/fstab, que, pela nossa conclusão, é um arquivo importante onde podemos adicionar mais pontos de montagem apenas editado esse arquivo pelo modo texto ou pelo modo gráfico. Porém, devemos tomar extremo cuidado pois se apagarmos algo por engano poderá ser desastroso. Veja um exemplo do arquivo /etc/fstab:
/dev/hda5 /dev/hda6 /dev/hda7 /dev/hda8 /dev/cdrom /dev/fd0 none none /dev/hda1 / swap /home /usr /mnt/cdrom /mnt/floppy /proc /dev/pts /mnt/winxp ext3 defaults 1 0 swap defaults 0 0 ext3 defaults 1 0 ext3 defaults 1 0 iso9660 defaults,user,noauto,ro 0 auto defaults,user,noauto 0 0 proc defaults 0 0 devpts gid=5,mode=620 0 0 vfat user,owner,exec,dev,suid,rw 1 1

0

94

Global Sul Informática

No exemplo anterior, se reparamos bem, alguns pontos de montagens estão configurados para serem montados automaticamente. Isso nós vamos aprender daqui a pouco. O arquivo /etc/fstab é simples de ser entendido. As três primeiras colunas mostram, respectivamente, o nome do sistema de arquivos, o ponto de montagem e o tipo do sistema. A primeira coluna é device dos pontos de montagem. Por exemplo: /dev/fd0 é o device para o ponto de montagem /dev/floppy. A segunda coluna é o ponto de montagem, ou seja, os diretórios que nós criamos para montar um sistema de arquivos qualquer. A terceira coluna informa parâmetros necessários para montar os sistema de arquivos como vfat, hpfs, ntfs, udf, iso9660 e assim por diante. A quarta coluna exibe as opções de montagem do sistema de arquivos, onde algumas das opções que podem ser usadas são: — async: As operações de E/S são realizadas assincronamente — auto: Monta automaticamente na inicialização — defaults: Usa as opções padrão: rw, suid, dev, exec, auto, nouser e async no ponto de mountagem. — dev: Interpreta dispositivos especiais de blocos ou caracter — exec: Permite que os programas sejam executados a partir do dispositivo. — noauto: O dispositivo deve ser especificado para a montagem — noexec: Não permite que os programas sejam executados a partir do dispositivo. — nouser: não permite que os usuários montem o dispositivo. — ro: Monta o dispositivo para leitura. — rw: Monta o dispositivo para leitura e gravação — suid: Permite uso dos bits de configuração de identificação do usuário e do grupo. — user: Permite que os usuários montem o dispositivo. A quinta coluna define quais sistemas de arquivos devem ser copiados pelo programa dump. Este programa examina os arquivos e determina quais arquivos devem ser copiados (back up). Um valor zero significa que o sistema não é examinado pelo programa dump. A sexta coluna define a ordem pela qual os sistemas de arquivos devem ser verificados na inicialização pelo utilitáro fsck. O sistema raiz (/) deve ter ordem 1 (primeiro a ser verificado) e os outros sistemas devem ter valor zero (não é verificado) ou 2 (é verificado). Os comandos mount e umount mantêm uma lista dos sistemas de arquivos montados atualmente no arquivo /etc/mtab. Caso nenhum arquivo seja informado em mount, a lista será apresentada. Quando o sistema de arquivos proc é montado (digamos em /proc), os arquivos /etc/mtab e /proc/mounts têm conteúdo muito parecidos. O /proc/mounts normalmente tem mais informações, tais como opções de montagem usadas, mas essas não estão necessariamente atualizadas. É possível substituir /etc/mtab por um link simbólico para /proc/mounts, mas algumas informações podem ser perdidas dessa forma, e algum uso particular como uma simulação de dispositivo não será aconselhável. Depois que o arquivo /etc/fstab é lido são gravadas estas informações no /etc/mtab, como podemos ver um exemplo a seguir:
/dev/hda5 / ext3 rw 0 0 none /proc proc rw 0 0 usbdevfs /proc/bus/usb usbdevfs rw 0 0 /dev/hda7 /home ext3 rw 0 0 /dev/hda8 /usr ext3 rw 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 /dev/hda1 /mnt/winxp vfat rw 0 0 /dev/cdrom /mnt/cdrom iso9660 ro,noexec,nosuid,nodev 0 0 /dev/fd0 /mnt/floppy vfat ro 0 0 //micro06/INTERNET /mnt/micro06/INTERNET smbfs 0 0 //micro11/DOWNLOADS /mnt/micro06/DOWNLOADS nfs 0 0 ...

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

95

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

Montagem/desmontagem automática Se o usuário preferir, é possível criar um pequeno arquivo de script para que fiquem guardados os comandos ‘novos’ que ele venha a criar por meio dos comandos alias e unalias, que funciona assim:
# alias a:=”mount -t vfat /dev/fd0 /mnt/floppy; cd /mnt/floppy; ls -laF /mnt/floppy”

O comando alias anterior definiu naquele momento que o novo comando “a:” quando for chamado a: <ENTER>, montará automaticamente a unidade de disquete, entrará nela e listará seu conteúdo. Se desejarmos desativar esse comando, basta digitar o comando unalias a: e voltará tudo como era antes. Então, uma idéia legal é criar um pequeno arquivo de comandos:
#!/bin/bash # comandos.exe (nome do arquivo de script que será executável) alias alias alias alias alias alias alias alias a:=”mount -t vfat /dev/fd0 /mnt/floppy; ls -laF /mnt/floppy” b:=”mount -t vfat /dev/fd1 /mnt/floppy; ls -laF /mnt/floppyb” a-:=”cd; umount /mnt/floppy” b-:=”cd; umount /mnt/floppyb” zipon:=”mount -t vfat /dev/sda4 /mnt/zip; ls -laF /mnt/zip” zipoff:=”cd; umount /mnt/zip” win:=”mount -t vfat /dev/hda1 /mnt/winxp; ls -laF /mnt/winxp” winoff:=”cd; umount /mnt/winxp”

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

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

Reconhecendo as partições
Se você quiser saber informações técnicas sobre as partições, é simples e fácil; basta usar o comando fdisk, sim o mesmo que cria e gerencia as partições, mas que aqui ele servirá apenas para nos fornecer informações sobre as partições, veja como:
# /sbin/fdisk -l Disco /dev/hda: 255 cabeças, 63 setores, 784 cilindros Unidades = cilindros de 16065 * 512 bytes Dispositivo Boot /dev/hda1 * /dev/hda2 /dev/hda5 /dev/hda6 /dev/hda7 /dev/hda8 Início 1 393 393 457 465 484 Fim 392 784 456 464 483 784 Blocos Id 3148708+ 3148740 514048+ 64228+ 152586 2417751 Sistema c 5 83 82 Linux 83 Linux 83 FAT32 Win95 (LBA) Estendida Linux swap Linux

96

Global Sul Informática

Anotações:

97

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

Anotações:

98

Global Sul Informática

Capítulo 5

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

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

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

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

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

99

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

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

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

Controlando donos, grupos e outros usuários
O princípio da segurança no sistema de arquivos Linux é definir o acesso aos arquivos por donos, grupos e outros usuários que funciona do seguinte modo: Dono: É o usuário que criou o arquivo ou o diretório (caso ele tenha esse direito). O nome do dono do arquivo/diretório é o mesmo do usuário usado para entrar o sistema Linux. Somente o dono pode modificar as permissões de acesso do arquivo ou o superusuário root. As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identifição do dono também é chamada de user id (UID). A identificação de usuário e o nome do grupo que ele pertence são armazenadas respectivamente nos arquivos /etc/passwd e /etc/group. Exemplo de uma parte do arquivo de senhas, o /etc/passwd.
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: ... ... gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:FTP User:/srv/ftp: hacluster:x:17:17:HA Cluster User:/var/lib/heartbeat/ccm:/bin/false nobody:x:65534:65534:Nobody:/home: sshd:x:100:233:sshd:/var/empty:/bin/false postfix:x:101:101:postfix:/var/spool/postfix: gdm:x:42:42::/home/gdm:/bin/bash adilson:x:500:500:Adilson Bonan:/home/adilson:/bin/bash gabriel:x:501:501::/home/gabriel:/bin/bash www:x:103:103::/srv/www:/bin/false gabriel:x:501:501::/home/gabriel:/bin/bash marcio:x:503:503::/home/marcos:/bin/bash jane:x:511:511::/home/jane:/bin/bash sueli:x:512:512::/home/sueli:/bin/bash karina:x:513:513::/home/karina:/bin/bash sulamita:x:515:515::/home/sulamita:/bin/bash

Esses são arquivos textos comuns e podem ser editados em qualquer editor de texto tanto pelo modo texto quanto pelo modo gráfico, mas tenha cuidado para não modificar o campo que contém a senha do usuário encriptada (que pode estar armazenada neste arquivo, caso não esteja usando senhas ocultas). Se após o nome do usuário aparecer um “x”, isso quer dizer que as senhas estão encriptadas e agora elas estão na verdade em /etc/shadow, que é um arquivo secundário para o armazenamentos de senhas no sistema Linux. Exemplo de uma parte do arquivo de senhas, o /etc/passwd.
root:$1$ghJVYco3$4EgHA78xGDX/MH2NUGRm/1:12286:0:99999:7::: adilson:$1$odoK4.re$.2njyxvIe.PKN.VERWDhm1:12286:0:99999:7::: sulamita:$1$j/8R6qHd$3s7xj3Qa.LqKDCJ44s7Yk/:12289:0:99999:7::: mysql:!!:12287:::::: www:!!:12287:::::: mailman:!!:12287:0:99999:7::: snort:!!:12288:::::: postgres:!!:12288:::::: xfs:!!:12289:::::: gabriel:$1$6/SkUVkA$JdcQBWaeF9wBCQiw.iJU90:12289:0:99999:7::: marcio:$1$SU7P5jm0$oxXss6gdN1Ote4OAdd8T7/:12289:0:99999:7::: ricardo:$1$p1916bVN$XO/O4LK.lCBHRPM4AxntS/:12289:0:99999:7:::

100

Global Sul Informática

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

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

Grupo: Para podermos permitir que vários usuários diferentes tenham acesso a um mesmo arquivo, já que somente o dono poderia ter acesso ao arquivo, esse recurso foi criado – o grupo –onde cada usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que o seu (mesmo que esses arquivos tenham outro dono). No sistema Linux por padrão, quando um novo usuário é criado, o grupo dele pertencerá ou será o mesmo de seu grupo primário (exceto pelas condições vistas mais adiante através do comando id). A identificação do grupo é chamada de gid (group id). Outros: É a categoria de usuários que não são os donos ou não pertencem ao grupo do arquivo. Cada um dos tipos acima possui três tipos básicos de permissões de acesso que serão vistas a seguir. Tipos de permissão de acesso Nós temos basicamente três tipos de permissões e cada uma pode interagir com o dono, o grupo e os outros no sistema Linux:
Read (r): Permissão de leitura para arquivos. Se for um diretório, permite listar seu conteúdo através do comando ls. Write (w): Permissão de gravação para arquivos. Se for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação. Execute (x): Permite executar um arquivo se for um programa executável. Se for um diretório, permite que seja acessado através do comando cd.

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

A primeira letra, o “d”, mostra que é um diretório, e não um arquivo. Somente será um arquivo se tiver um “—” no lugar do “d”. O sistema Linux, e os Unix em geral, trabalham com permissão de arquivos, algo que o Windows não tem, causando dificuldades em alguns iniciantes. Somente para relembrar, as permissões de arquivos funcionam da seguinte maneira:
“r” (read) = ler, “w” (write) = escrever, gravar, atualizar e “x” (execute) = executar

As permissões são atribuídas a 3 níveis. Eles são:
“u” (user) = dono, “g” (group) = grupo, “o” (others) = outros e “a” (all)= todos. E seguem a seguinte ordem: dRWXr-xr-x ^^^ drwxR-Xr-x ^^^ drwxr-xR-X ^^^ Dono (User) Grupo (Group) Todos (All)

101

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

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

Atribuindo permissões: comando chmod
O comando chmod muda a permissão de acesso a um arquivo ou diretório. Com esse comando, podemos escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou, e seu grupo é o grupo do usuário (exceto para diretórios configurados com a permissão de grupo “s”). Sintaxe: chmod [opções] [permissões] [diretório/arquivo]. Onde: diretório/arquivo: Diretório ou arquivo que terá sua permissão mudada. Opções.
-v, --verbose: Mostra todos os arquivos que estão sendo processados. -f, --silent: Não mostra a maior parte das mensagens de erro. -c, --change: Semelhante a opção “-v”, mas só mostra os arquivos que tiveram as permissões mudadas. -R, --recursive: Muda permissões de acesso do diretório/arquivo no diretório atual e sub-diretórios.

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

O modo literal é mais fácil de ser entendido, porque usa letras para identificar:
[a]ll=Todos, [g]roup=Grupo, [o]thers=Outros e [u]ser=dono [+]=Adicionar permissão e [-]=Remover permissão

Então entendendo os comandos chmod a-rx /dev/ e chmod g+w /dev/, o primeiro tira a permissão de todos de ler e executar. Veja que o chmod usa “a-rx”. Do “a” (todos), ele tira o “rx” (ler e executar) usando o “-” (Menos). O segundo dá a permissão para o grupo de escrever. Veja que o chmod usa “g+w”. Do “g” (grupo), ele adiciona o “w” (escrever) usando o “+” (Mais). Vamos ver um pequeno resumo:
chmod a+rwx arquivo-teste.tar: Todo mundo faz o que quiser com o arquivo. chmod a-rwx arquivo-teste.tar: Ninguém não faz nada com o arquivo. chmod u+rwx arquivo-teste.tar: O dono faz o que quiser com o arquivo. chmod g+r-x arquivo-teste.tar: O usuários do grupo podem ler e executar, MAS não podem apagar o arquivo. chmod o=--- arquivo-teste.tar: Se não for o dono e não for do grupo, ou seja, os outros aqui não fazem nada.

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

102

Global Sul Informática

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

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

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

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

Números
0 1 2 3 4 5 6 7

Permissões correspondentes
Nenhuma permissão Executar Escrever Escrever e executar Ler Ler e executar Ler e escrever Ler, escrever e executar

(UGOA)
----x -w-wx r-r-x rwrwx

O uso de um desses números define a permissão de acesso do dono, grupo ou outros usuários. Vamos a prática com alguns exemplos:
chmod 000 chmod 777 chmod 700 chmod 750 chmod 755 arquivo. teste.tar.gz: teste.tar.gz: teste.tar.gz: teste.tar.gz: teste.tar.gz: Ninguém pode fazer nada no arquivo. Todo mundo faz o que quiser no arquivo. O dono faz tudo e ninguém faz nada no arquivo. O dono faz tudo, o grupo só lê e executa e os O dono faz tudo, o grupo e os outros podem ler

outros nada. e executar o

103

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

chmod chmod podem chmod chmod

666 754 ler 444 111

teste.tar.gz: teste.tar.gz: o arquivo. teste.tar.gz: teste.tar.gz:

Todos só podem ler e executar o arquivo. O dono faz tudo, o grupo só lê e executa e

os outros somente

O arquivo somente pode ser lido por todos. Todos somente podem executar o arquivo e nada mais.

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

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

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

Anotações: 104

Global Sul Informática

105

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

Anotações:

106

Global Sul Informática

Capítulo 6

Empacotamento e compressão de arquivos
No sistema Linux, assim como em qualquer outro sistema, as rotinas de backup e compactação de arquivos, já que a maioria dos arquivos nos dias de hoje tendem a ser maior que a capacidade de um simples disquete de 31/2”, também são fáceis de manipular. É possível fazer tudo via modo texto ou via modo gráfico. Já pensou em perder horas, dias ou até mesmo semanas de trabalho devido à falta de uma cópia de segurança atualizada de seus dados. Então, neste capítulo, vamos aprender como é que devemos proceder para fazer isso de uma forma correta, e para isso vamos aprender alguns comandos básicos do sistema Linux. Isso sem falar que os mais novos compactadores para ambiente Windows já podem abrir alguns formatos de arquivos empacotados e/ou compactado no Linux, e o Linux pode abrir também arquivos zipados pelo Windows. No Windows nós temos vários tipos de arquivos, mas hoje os mais populares do arquivos do Winzip (.zip) e do Winrar (.rar) os outros meio que ficaram esquecidos na história. Então acabamos nos acostumando com esses extensões, porém no sistema Linux nós já temos uma outras bem diferente e que são comuns para os usuários desse sistema. Com o o tempo você pega o jeito, mas é assim: – Quando o arquivo está “tarjeado”, ele apenas apresenta a extensão “.tar” em seu nome. Lembrete, o arquivo é “tarjeado” e não “tarado” como eu já vi alguns usuários novos no sistema, não é porque ele tem “.tar” que vai ser um “tarado”, né? E quando esse arquivo “tarjeado”está compactado ele poderá apresentar junto com seu .tar a identificação de quem o compactou. Há muitas extensões que identificam arquivos compactados, vamos ver aqui somente as mais usadas.
*.gz: O arquivo foi compactado pelo gzip (muito popular). *.bz2: O arquivo compactado pelo bzip2 (muito popular). *.Z: O arquivo foi compactado pelo programa compress. Use o programa uncompress para descompacta-lo. Foi muito usado mas perde em taxa de compactação para o gzip e o bzip2. *.zip: O arquivo foi compactado pelo programa zip do Linux. Use o programa unzip para descompacta-lo. Esse formato pode ser lido pelo equivalente no Windows. *.lha: Formato de arquivo compactado muito pouco usado hoje. *.rar: O arquivo foi compactado pelo programa rar. Use o programa rar para descompactalo. Já existem alguns programas linux que entende esse formato. *.tar.gz: O arquivo foi compactado pelo programa gzip depois de ser transformado em um tar. Para descompar, você pode usar o gzip e depois o tar ou somente o programa tar usando a opção -z assim: tar -xzpvf arquivo.tar.gz. *.tgz: É a abreviação de .tar.gz esse formato é muito usado no slackware. *.tar.bz2: O arquivo foi compactado pelo programa bzip2 depois de ser transformado em um tar. Para descompar, você pode usar o bgzip com o parâmetro -dv e depois o tar ou somente o programa tar usando a opção -I assim: tar -xzpvf arquivo.tar.bz2. *.tar.Z: O arquivo foi compactado pelo programa compress depois de ser transformado em um tar. Para descompacta-lo, você pode usar o uncompress e depois o tar ou somente o programa tar usando a opção -Z.

107

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

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

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

Empacotando arquivos com o comando tar
O comando tar salva vários arquivos em um único arquivo .tar (em fita ou disco), e podemos restaurá-los individualmente. Seu uso é simples: tar [opções]... [arquivo.tar]. Veja alguns exemplos:
# tar -cpvf backup-2.tar /home/adilson/fotos/*

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

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

Lista todos os arquivos do arquivo backup-2.tar.
# tar -jcf usuarios.tar.bz2 /home/adilson /home/gabriel

Cria arquivo usuarios.tar.bz2 contendo apenas os diretórios do usuário adilson e o usuário gabriel. Se quisermos fazer um backup de todos os usuários do /home usaríamos o comando # tar -cpvf TodosDoHome.tar /home/*, por exemplo. Se uma opção longa aparece como argumento mandatório, então a opção curta equivalente também é um argumento mandatório. Idem para argumentos opcionais. Vamos ver aqui os principais parâmetros usados e passados para o comando tar. Principal modo de funcionamento:
-C: Permite mudar de diretório. -t: Listar o conteúdo de um arquivo-tar. -x: Extrair arquivos do arquivo-tar. -c: Criar um arquivo-tar. -d: Comparar o arquivo-tar com arquivos atuais. -r: Anexar arquivos no fim do arquivo-tar. -u: Atualiza arquivos no arquivo-tar. -A: Anexar outros arquivos-tar. --concatenate: O mesmo que “-A”. --delete: Remover do arquivo-tar (exceto para fitas). -v: Mostra informações no decorrer do processamento.

Seleção do formato do arquivo:
-I, --bzip2, --bunzip2: Filtra o arquivo através do bzip2. -z, --gzip, --ungzip: Filtra o arquivo através do gzip. -Z, --compress, --uncompress: Filtra por meio do compress.

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

108

Global Sul Informática

Essa observação é muito importante se você possui um arquivo “.tar” muito grande, apesar da compactação, e deseja quebrá-lo em vários pedaços para poder copiar em disquete para levar a um outro micro:
# tar –cvM –L 1350 –f /mnt/floppy/partes.tgz grande.tgz.

O comando anterior pega o arquivo grande.tgz e o quebra em várias partes.tgz para que seja possível gravá-lo em vários disquetes. Mas é muito importante que os disquetes estejam em perfeito estado para não ocorrer erros de gravação. Outro uso interessante para o comando tar é a cópia remota que funciona assim:
# tar cvf - [origem] | rsh [sistema_remoto] ‘(cd [destino]; tar xvfB -)’

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

Se isso aparecer, está tudo ok; caso contrário, apenas digite o comando httpd start. Bom, não vamos entrar em detalhes sobre a configuração do servidor apache, mas isso já deverá ter sido feito pelo seu administrador da rede para que você possa fazer os seus “downloads” de uma máquina Linux para uma máquina Windows ou Linux. Mas, como o objetivo deste livro é ensinar a configuração do sistema Linux, vamos dar uma “palhinha” para o usuário/leitor que logo de cara já vai aprendendo como é que o alcance do Linux é muito mais amplo do que pensamos. Para que uma máquina com o Windows e uma máquina Linux possam também fazer o download dos arquivos, faça o seguinte:
1. Levante o servidor apache básico: httpd ou httpd start. 2. Entre no caminho /etc/httpd/html e crie um diretório chamado downloads. 3. Copie os arquivos que os usuários poderão pegar via download. 4. Configure esse diretório para acesso das outras pessoascom o comando chmod 755 downloads.

Usando o comando tar também podemos fazer cópias de nossos arquivos e diretórios inteiros, com a vantagem de se preservar as mesmas permissões e atributos dos arquivos, para isso use o comando:
# (cd /origem && tar cf - . ) | (cd /destino && tar xvfp -)

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

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

109

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

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

Para descomprimir:
# uncompress <parâmetros> <arquivo>

Os parâmetros básicos mais comuns são:
-f = Para o compress trabalhar em background (segundo plano). -c = Descompacta somente para a tela do sistema. -V = Mostra informações adicionais sobre cada arquivo que está sendo compactado. -v = Exibe informações sobre o que está acontecendo com os arquivos que estão sofrendo a compactação. -d = Pode ser usado com o compress para fazer também a descompactação de arquivos.

Exemplo prático, vamos compactar o arquivo estudos.tar (13.291.520), que tem mais de treze megabytes, e analisar a compactação.
# compress -v estudos.tar estudos.tar: -- replaced with estudos.tar.Z Compression: 43.21% # ls -l -rw-r--r-1 root root 7548715 Nov 18 00:54 estudos.tar.Z

Percebemos que o arquivo que antes tinha uns treze megabytes agora tem menos de oito megabytes. A compactação criou um arquivo com quase metade de tamanho. Agora para descompactar, usamos o comando:
# uncompress -v estudos.tar.Z estudos.tar.Z: -- replaced with estudos.tar

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

Para descompactar:
# bunzip2 <parâmetros> <arquivo>

Onde os parâmetros são:
-1 -v: -c: -d: -t: até -9: Onde o -9 é o maior fator de compressão. Exibe as informações do processamento na tela do micro. Descompacta para a tela do sistema. Executa a descompactação. Faz teste de verificação de integridade do arquivo.

110

Global Sul Informática

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

Exemplo prático, vamos compactar o arquivo estudos.tar (13.291.520 kb), que tem mais de treze megabytes, e analisar a compactação.
# bzip2 -v9 estudos.tar estudos.tar: 2.345:1, # ls -l -rw-r--r-- 1 root root 3.412 bits/byte, 57.36% saved, 13291520 in, 5668005 out. 5668005 Nov 18 00:54 estudos.tar.bz2

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

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

Usando o gzip, gunzip e zcat
Os comandos gzip, gunzip, zcat compactam, expandem e lêem arquivos em alguns formatos no sistema Linux. Sempre que possível, cada arquivo é substituído por outro com a extensão .gz, mantendo o dono, as permissões e as datas de modificação. O gzip somente tentará compactar arquivos normais. Em particular, ele ignorará links simbólicos. Por definição, o gzip mantém o nome do arquivo original e sua data no arquivo compactado. Esses dados são usados na expansão do arquivo por meio da opção –N. Isso pode ser útil quando o nome de um arquivo compactado for truncado ou quando a data do arquivo não for preservada após uma transferência. Arquivos compactados podem ser restaurados para o seu formato original usando gzip -d, gunzip ou zcat. O comando gunzip recebe uma lista de arquivos por meio da linha de comando e considera que seus nomes finalizem com .gz, -gz, .z, -z, z ou .Z e que comecem com o número mágico correto de um arquivo não compactado sem a extensão original. O gunzip também reconhece extensões especiais, tais como .tgz, assim como atalhos para .tar.gz e .tar.Z, respectivamente. Ao descompactar, o gzip usa a extensão .tgz; caso seja necessário, em vez da extensão truncada de um arquivo “.tar”. Veja os parâmetros mais comuns usados:
-d --decompress --uncompress: Descompactar um arquivo. -f --force: Força a compactação e descompactação mesmo que o arquivo tenha múltiplos links ou o arquivo correspondente já exista ou ainda mesmo que os dados compactados sejam lidos ou gravados em um terminal. Caso os dados de entrada não estejam em um formato reconhecido por gzip, e se a opção -stdout for informada, ele copia os dados de entrada sem alterações para a saída padrão, deixando zcat comportar-se como cat. -l -list: Para cada arquivo compactado, lista os seguintes campos: tamanho compactado; tamanho do arquivo compactado; tamanho descompactado; tamanho do arquivo descompactado razão; taxa de compactação (0.0% se desconhecida), nome descompactado; nome do arquivo descompactado. -r -recursive: Navega pela estrutura de diretórios recursivamente. --fast -best: Regula a velocidade da compactação usando um dígito especificado.

Exemplo prático: Vamos compactar o arquivo estudos.tar de tamanho 13.291.520 KB, que tem mais de treze megabytes, e analisar a compactação.
# gzip -v9 estudos.tar estudos.tar: 47.0% -- replaced with estudos.tar.gz # ls -l -rw-r--r-1 root root 6247484 Nov 18 00:54 estudos.tar.gz

111

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

Percebemos que o arquivo que antes tinha uns treze megabytes agora tem menos de sete. A compactação criou um arquivo com menos da metade de tamanho. Agora para descompactar usamos o comando:
# gunzip -v estudos.tar.gz estudos.tar.gz: 47.0% -- replaced with estudos.tar

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

Usando o znew
O uso do comando znew embora raro é interessante caso você queira recompactar arquivos do formato do compress “.Z” para o formato do gzip “.gz”. Após a recompactação, os arquivos de origem .Z são apagados. Seu uso é simples znew [opções] <arquivo.Z> . Onde arquivo.Z é o arquivo compactado pelo comando compress que será recompactado para o gzip. Temos ainda algumas opções:
–f : Substitui o arquivo .gz caso já exista. –t: Teste os novos arquivos criados antes de apagar os arquivos .Z. –v: Mostra o nome e porcentagem de compactação para cada arquivo processado. –9: Usa a máxima compactação. –P: Usa pipes (dutos) durante a conversão para reduzir o espaço ocupado no disco. A data e hora do arquivo não é mantida caso esta opção seja usada. –K : Mantém o arquivo .Z caso seja menor que o arquivo .gz.

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

1474560 Nov 18 01:11 disk-aa 1474560 Nov 18 01:11 disk-ab 1474560 Nov 18 01:11 disk-ac 1474560 Nov 18 01:11 disk-ai 20480 Nov 18 01:11 disk-aj

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

112

Global Sul Informática

Anotações:

113

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

Anotações:

114

Global Sul Informática

Capítulo 7

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

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

115

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

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

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

Para saber quais são os arquivos do pacote, use -qlp:
# rpm -qlp /mnt/cdrom/conectiva/RPMS/xpdf-0.92-1cl.i386.rpm /usr/bin/pdfimages /usr/bin/pdfinfo /usr/bin/pdftopbm /usr/bin/pdftops /usr/bin/pdftotext /usr/bin/xpdf /usr/share/doc/xpdf-0.92 /usr/share/doc/xpdf-0.92/CHANGES /usr/share/doc/xpdf-0.92/README /usr/share/man/man1/pdfimages.1.gz /usr/share/man/man1/pdfinfo.1.gz /usr/share/man/man1/pdftopbm.1.gz /usr/share/man/man1/pdftops.1.gz /usr/share/man/man1/pdftotext.1.gz /usr/share/man/man1/xpdf.1.gz

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

Aqui, entre várias informações possíveis, sabemos qual é o grupo a que ele pertence (Group:Emuladores), URL, um pequeno sumário e uma descrição mais detalhada. Para saber onde estará a documentação do pacote, use -qdp:
# rpm -qdp /mnt/cdrom/conectiva/RPMS/wine-20010510-1cl.i386.rpm /usr/X11R6/man/man1/wine.1.gz /usr/X11R6/man/man1/winemaker.1.gz /usr/X11R6/man/man1/wmc.1.gz /usr/X11R6/man/man1/wrc.1.gz /usr/X11R6/man/man5/wine.conf.5.gz

116

Global Sul Informática

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

Para todos os pacotes que requerem <capacidade> para funcionar corretamente, use -q – whatrequires:
# rpm -q --whatrequires /mnt/cdrom/conectiva/RPMS/xmms-1.2.4-9cl.i386.rpm nenhum pacote requer /mnt/cdrom/conectiva/RPMS/xmms-1.2.4-9cl.i386.rpm

Para saber quais são os arquivos de configuração do pacote, use -qcp:
# rpm -qcp /mnt/cdrom/conectiva/RPMS/wu-ftpd-2.6.1-4cl.i386.rpm /etc/ftpaccess /etc/ftpconversions /etc/ftpgroups /etc/ftphosts /etc/ftpusers /etc/logrotate.d/ftpd /etc/pam.d/ftp

Para exibir informações dos arquivos como segue: caminho, tamanho, mtime md5sum, modo, dono, grupo, isconfig, isdoc, rdev, symlink. Isso deve ser usado com uma das opções -l, -c, -d. mtime indica o dia e hora de criação do arquivo; isdoc indica se o arquivo é documentação; e isconfig indica se é um arquivo de configuração.
# rpm -q --dump xmp-xmms-2.0.4-2cl /usr/lib/xmms/Input/xmp-plugin.so 351176 988915835 d46af7c84d65581466b0145 8d31c645d 0100644 root root 0 0 0 X \

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

117

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

RPM em pacotes instalados
Assim como aprendemos a efetuar consultas a pacotes que não estavam instalados, também poderemos efetuar consultas a pacotes instalados. Para listar por ordem alfabética (letras maiúsculas primeiro) os pacotes que estão instalados e com pausa para ler no vídeo, use “-qa”:
# rpm -qa | sort | less ElectricFence-2.2.2-1cl GConf-1.0.0-ximian.8 GXedit-1.23-4cl Glide_V2-2.53-3cl ... ... yp-tools-2.5-2cl ypbind-3.3-33cl ypserv-1.3.12-3cl ytalk-3.1.1-2cl zip-2.3-3cl zlib-1.1.3-13cl zlib-devel-1.1.3-13cl zsh-3.0.8-1cl

Dependendo do tipo de instalação que foi feita na máquina, a listagem é gigantesca. Por isso que não foi mostrada toda ela aqui. Para saber a quantidade de pacotes instalados, use assim:
# rpm -qa | wc -l 1544 -> Esse é o total de pacotes instalados.

Para saber a qual pacote pertence o arquivo, use “-qf”:
# rpm -qf /usr/bin/jpico joe-2.9.5-2cl

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

[root@gabriel c11]# whereis adsl-connect adsl-connect: /usr/sbin/adsl-connect [root@gabriel c11]# rpm -qf /usr/sbin/adsl-connect rp-pppoe-3.5-26143cl

Pois é, agora agora com o cdrom on montado ele poderá usar o comando rpm -qlp /mnt/cdrom/ conectiva/RPMS/rp-pppoe-3.5-26143cl.rpm para obter toda a listagem dos arquivos desse pacote e onde é que els vão parar depois de instalados no sistema. Acompanhe:
[root@gabriel c11]# rpm -qlp /mnt/cdrom/conectiva/RPMS/rp-pppoe-3.5-26143cl.rpm /etc/ppp/firewall-masq /etc/ppp/firewall-masq.ipchains /etc/ppp/firewall-standalone /etc/ppp/firewall-standalone.ipchains /etc/ppp/plugins/README /etc/ppp/pppoe.conf /etc/rc.d/init.d/adsl-init /usr/sbin/adsl-connect /usr/sbin/adsl-setup /usr/sbin/adsl-start

118

Global Sul Informática

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

Para listar todos os arquivos de um ou mais pacotes que atendam a certos critérios:
# rpm -qa | grep gimp gimp-1.2.1-ximian.5 gimp-data-extras-1.2.0-2cl xsane-gimp-0.75-ximian.2 gimp-devel-1.2.1-ximian.5

RPM em desinstalação de pacotes
Desinstalar um pacote formato rpm é muito fácil. A forma geral de um comando de desinstalação é rpm -e <nome_do_pacote>+, e se o pacote estiver presente, ele será removido. Veja a seguir alguns parâmetros que poderemos usar. Parâmetros:
--allmatches: Remove todas as versões do pacote que casarem com <pacote>. um erro é exibido se <pacote> casar com múltiplos pacotes. --noscripts: Não executa os scripts de pré e pós-desinstalação. --nodeps: Não verifica se dependências serão quebradas antes de desinstalar o pacote. --test: Não desinstala nada, apenas simula todos os movimentos Normalmente

Exemplo: Se quisermos desinstalar o xpdf (leitor de arquivos pdf), basta usar o comando rpm -e xpdf-0.92-1cl e ele não fará mais parte de seu sistema. Se você for remover um pacote qualquer, tome cuidado porque outro programa que dele depender pode não funcionar corretamente:
# rpm -e kppp-2.12-4cl erro: a remoção destes pacotes quebraria dependências: kppp = 2.12 é necessário para kdenetwork-2.12-4cl # rpm -e Xconfigurator-4.9.23-4cl erro: a remoção desses pacotes quebraria dependências: Xconfigurator é necessário para task-x-window-system-6.0-5cl

RPM em instalação e atualização de pacotes
Para instalar pacotes rpm também é muito simples. A forma geral é “–ivh” para a instalação, e “–Uvh” para atualização de pacotes. Esses parâmetros instalam ou atualizam o pacote atualmente instalado para a versão do novo pacote rpm. Isso é o mesmo que instalar, exceto que todas as versões anteriores dos pacotes serão removidas do sistema após a atualização. Na verdade, a atualização de um pacote não deixa de ser uma instalação, pois arquivos novos serão copiados para dentro do computador, e arquivos antigos serão eliminados.

119

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

Uma vez que o rpm executa um processo de atualização inteligente, é apresentada uma mensagem do tipo: “saving /etc/teste.conf as /etc/teste.conf.rpmsave” (onde teste é o nome do pacote), o que significa que os arquivos de configuração existentes estão salvos, porém mudanças no programa podem tornar esse arquivo de configuração não mais compatível com o pacote (o que não é comum). Neste caso, as adequações necessárias devem ser feitas pelo usuário. Parâmetros:
--force: O mesmo que usar --replacepkgs, --replacefiles e --oldpackage. -h, --hash: Exibe 50 caracteres # (hash) à medida que o arquivo é desempacotado. Use em conjunto com -v para uma exibição interessante. --percent: Exibe porcentagens à medida que os arquivos são desempacotados. Isso é para tornar o rpm facilmente executável a partir de outras ferramentas. --oldpackage: Permite que uma atualização substitua um pacote por uma versão anterior, mas isso não é muito aconselhável e --replacefiles: Instala os pacotes mesmo que eles substituam arquivos de outros pacotes já instalados. --replacepkgs: Instala os pacotes mesmo que alguns deles já estejam instalados no sistema e --allfiles: Instala ou atualiza todos os arquivos do pacote que estão faltando, independentemente deles existirem ou não. --nodeps: Não verifica as dependências antes de instalar ou atualizar um pacote qualquer e --noscripts: Não executa os scripts de pré ou pós instalação. --excludedocs: Não instala nenhum arquivo marcado como documentação (o que inclui as páginas de manual e documentos texinfo). --test: Não instala o pacote, apenas faz uma verificação e um aviso sobre possíveis conflitos e --prefix <caminho>: Determina o prefixo de instalação como <caminho> para pacotes relocalizáveis (pacotes que não precisam ser instalados apenas em um certo caminho).

Nós podemos instalar nossos pacotes .rpm não somente pelo console do modo texto, podemos instalar via terminal também. Mas o interssante éo que o konqueror pode fazer, ele permite abri abas de diretórios/pastas e isso é uma mão na roda. Se você acessa muito uma pasta ou outra sabe do que eu esto falando. Mas ele também abre uma área para digitação de comandos que realemente ajuda muito quando precisamos de linha de comando aliada com poder de navegação de pastas/diretórios. Experimete usar. Exemplo de instalação:
# rpm -ivh /mnt/cdrom/conectiva/RPMS/ee-0.3.12-3cl.i386.rpm Preparing... ###################################### [100%] 1:ee ###################################### [100%]

Exemplo de instalação cancelada pelo rpm, porque o(s) pacote(s) já estão presentes:
# rpm -ivh /mnt/cdrom/conectiva/RPMS/netscape-* Preparing... ########################################### [100%] package netscape-common-4.77-13cl is already installed package netscape-communicator-4.77-13cl is already installed package netscape-doc-4.77-13cl is already installed package netscape-i18n-es-4.77-13cl is already installed package netscape-i18n-pt_BR-4.77-13cl is already installed package netscape-java-4.77-13cl is already installed package netscape-nethelp-4.77-13cl is already installed package netscape-plugins-4.77-13cl is already installed package netscape-spell-4.77-13cl is already installed

Se quiser saber onde estão binários desse pacote , basta usar o comando seguinte forma:
# whereis netscape netscape: /usr/bin/netscape /usr/lib/netscape

Então saberemos que eles estão no /usr/bin e no /usr/lib, porém isso é a coisa mais básica que devemos saber; aliás sempre que desejarmos saber onde é que um binário foi parar, usaremos o comando whereis <nome_do_binário>.

120

Global Sul Informática

Nem sempre é possível instalar um pacote, como assim? Algumas vezes, as bibliotecas que estão instaladas no sistema Linux são mais antigas que as bibliotecas que o pacote usará para poder funcionar corretamente. Isso acontece no exemplo seguinte:
# rpm -ivh /mnt/cdrom/TechLinux/RPMS/gimp-1.2.1-2tl.i586.rpm erro: falha nas dependências: libc.so.6(GLIBC_2.2) é necessário para gimp-1.2.1-2tl

Como não temos a libc.so.6 (GLIBC_2.2), a instalação do gimp-1.2.1-2tl não é feita.

Dependências não resolvidas
Pacotes rpm podem depender da instalação prévia de outros pacotes, o que significa que eles necessitam daqueles para poderem ser executados adequadamente. Para corrigir esse erro, será necessário instalar o pacote solicitado. Caso se queira que a instalação ocorra de qualquer forma, é possível utilizar o parâmetro --nodeps na linha de comando. Porém, de certo modo, o pacote não funcionará ou o fará de forma incorreta.

RPM em verificação do sistema
A forma geral de um comando de verificação é rpm -V|-y|--verify [opções]. Verificação de um pacote compara informações sobre os arquivos do pacote instalados e as informações sobre eles, tiradas do pacote original e armazenadas no banco de dados do rpm. Entre outras coisas, verificar compara o tamanho, a soma MD5, as permissões, o tipo, o dono e o grupo de cada arquivo. Quaisquer discrepâncias serão exibidas. As opções de especificação de pacotes são as mesmas que para consulta de pacotes. Arquivos que não foram instalados do pacote, por exemplo, arquivos de documentações que foram excluídos usando a opção “--excludedocs”, serão ignorados silenciosamente. O formato da saída é uma cadeia de 8 (oito) caracteres, um possível “c” denotando um arquivo de configuração, e então o nome do arquivo. Cada um dos oito caracteres denota o resultado da comparação de um atributo do arquivo com o valor registrado no banco de dados do RPM. Um simples “.” indica um teste bem-sucedido. Os seguintes caracteres denotam falha em algum teste:
5 = Soma MD5, S= Tamanho do arquivo, L = Vínculo simbólico (link), T= Mtime, D = Dispositivo, U = Usuário, G = Grupo, M= Modo (incliu permisões e tipo do arquivo).

RPM instalando pacotes via ftp
O formato rpm inclui um programa de ftp simples para facilitar a instalação e consulta de pacotes que estão disponíveis na Internet. Arquivos de pacotes para instalação, atualização ou consulta podem ser especificados como um URL no estilo ftp:
ftp://<usuário>:<senha>@máquina/caminho/para/o/pacote.rpm

Se a parte:senha for omitida, a senha será perguntada (uma vez para cada par usuário/máquina). Se o usuário e a senha forem omitidos, ftp anônimo será usado. Em todos os casos, transferência passiva (PASV) será usada. O formato rpm permite que as seguintes opções sejam usadas com URLs de ftp: --ftpproxy <máquina>: A máquina <máquina> será usada como servidor proxy para todas as transferências, permitindo que usuários utilizem o ftp através de firewalls que usem sistemas de proxy. Essa opção também pode ser especificada em um arquivo de configuração. --ftpport <porta>: Especifica o número da porta TCP a utilizar para a conexão ftp, em vez da porta padrão, que é a 21. Essa opção também pode ser especificada em um arquivo de configuração. Por exemplo, vamos supor que você quer fazer a atualização do seu sistema com o rpm via ftp do servidor da Unicamp, então proceda assim:
rpm ftp://ftp.unicamp.br/pub/conectiva 9/i386 001 002 003 004 rpm ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates

121

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

Se você quiser fazer a mesma coisa usado o apt, apenas coloque essas duas linhas dentro do arquivo /etc/apt/source.list.

Convertendo um pacote
O rpm2cpio converte pacotes Red Hat ( rpm) para arquivos cpio. Funciona assim rpm2cpio pacote.rpm onde pacote.rpm é o nome do arquivo em formato rpm que desejamos converter para o formato trabalhado com o comando cpio. Caso nenhum argumento seja informado, o arquivo rpm será lido da entrada padrão, por exemplo:
# rpm2cpio rpm-1.1-1.i386.rpm # rpm2cpio < glint-1.0-1.i386.rpm

Assim, se tudo ocorrer bem, o binário para o cpio será criado sem problemas, e depois é só trabalhar como o comando cpio normalmente.

Gerenciamento de pacotes com YUM
O utilitário yum é um sistema de gerenciamento de programas completo. O Fedora Core também inclui duas aplicações gráficas para gerenciamento de programas que usam o yum. O pup disponibiliza uma interface para atualização de programas e o pirut permite você adicionar ou remover programas. Os utilitários pirut e yum garantem que você tenha a versão mais recente dos pacotes de programas. Outros métodos não garantem que os pacotes estejam atualizados. Use o utilitário yum para modificar os programas de seu sistema em quatro maneiras:
Para Para Para Para instalar um novo programa a partir de um repositório de pacotes instalar novos programas a partir de um arquivo de pacote individual atualizar um programa existente no seu sistema remover programas não-necessários no seu sistema

Para instalar o pacote tsclient, execute o comando:
# yum install tsclient

Para instalar o grupo de pacotes MySQL Database (Banco de Dados MySQL), execute o comando:
# yum groupinstall "MySQL Database"

Para atualizar o pacote tsclient para a última versão, digite:
yum update tsclient
DICA: Novas Versões de Programas Necessitam de Reinicialização. Se um programa está em uso quando ele é atualizado, a versão antiga continua ativa até que a aplicação ou serviço seja reiniciado. Atualizações de kernel entram em atuação quando você reiniciar todo seu sistema. Pacotes de kernel se mantêm no sistema depois que eles são sobrepostos por versões mais novas. Isso permite que você inicialize seu sistema com uma versão de kernel mais antiga se um erro acontecer com a versão atual. Para minimizar a manutenção, o yum automaticamente remove pacotes de kernel obsoletos do seu sistema, mantendo somente a versão atual e uma versão anterior.

Para atualizar todos os pacotes no grupo de pacotes MySQL Database, execute o comando:
# yum groupupdate "MySQL Database"

122

Global Sul Informática

Para realizar uma atualização completa do sistema, digite este comando:
# yum update

Para remover o pacote tsclient de seu sistema, use o comando:
# yum remove tsclient

Para remover todos os pacotes no grupo de pacotes MySQL Database, execute o comando:
# yum groupremove "MySQL Database"

Para procurar por um pacote específico pelo nome, use a opção list. Para procurar pelo pacote tsclient, use o comando:
# yum list tsclient

Para fazer de suas buscas mais precisas, especifique pacotes com o nome que incluem outros atributos, como a versão ou arquitetura de hardware. Para procurar a versão 0.132 da aplicação, use o comando:
# yum list tsclient-0.132

Para listar todos os pacotes com nomes que comecem com tsc, digite:
# yum list tsc\*

Se você não sabe o nome do pacote, use a opção search ou provides. A opção search verifica o nome, descrição, sumário e mantenedores listados de todos os pacotes disponíveis para achar aqueles que conferem. Por exemplo, para procurar todos os pacotes relacionados a Palm Pilots, digite:
# yum search PalmPilot

A função provides verifica tanto os arquivos inclusos no pacote quanto funções que o programa disponibiliza. Essa opção requer que o yum efetue download e leia mais arquivos de índice que na opção search. Por exemplo, para procurar por todos os pacotes que incluem arquivos chamados libneon, digite:
# yum provides libneon

Para procurar por todos os pacotes que disponibilizam um serviço de MTA (Mail Transport Agent - Agente de Transporte de Mensagens), ou incluem arquivos com mta no seu nome:
# yum provides MTA

Se for necessário passar por um proxy com autenticação , há duas formas de se fazer isso: 1 – Editar o arquivo /etc/profile e adicionar e depois exportar as seguintes variáveis de sistema:
http_proxy=http://usuário.senha@servidorProxy:PortaProxy ftp_proxy=http://usuário.senha@servidorProxy:PortaProxy

2 – Editar o arquivo /etc/yum.conf e adicionar as variáveis assim:
proxy=http://mycache.mydomain.com:3128 proxy_username=yum-user proxy_password=qwerty

123

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

Compilação de programas
A compilação de programas no sistema Linux não é tão difícil quanto parece ser. Mesmo que você não saiba programar em phyton, perl, C/ C++ ou Java você vai conseguir compilar e rodar seus programas, sabe porque? Porque quando você baixa os fontes para compilar sempre vem as instruções de como você deve proceder. Essas instruções geralmente estão no arquivo README ou INSTALL, então é só ler e seguir os passos. Qual é a vantagens de se pegar um programa para compilação? Simples, você terá os fontes e poderá alterá-lo como quiser. Por exemplo, se o programa estiver em inglês você poderá traduzir as mensagens, menus, helps etc para o português e depois que você compilar, o programa estará no seu idioma. Se for um jogo, poderá aumentar a velocidade de sua nave, a quantidade de vidas, se for jogo no estilo Counter Strike, poderá compilar o jogo coma mais balas, bombas, granadas etc. Entendeu agora? Então... “Certo mano, vamu apagá os cara. Vem comigo, policial na mira. Terrorists wins”, he he. Onde é que eu vou compilar isso no meu sistema Linux? Geralmente os programas vão parar em /usr/local/<programa>, então a primeira coisa é copiar o programa para /usr/local/, e também geralmente eles estão no formato .tar, .tgz, .tar.gz daí é só você antes de instalar os fontes, executar o comando tar -tzpvf <progama>, assim você vai ficar sabendo onde é que serão copiados (ainda não instalados) os arquivos do programa e seu respectivo diretório. Em que lugar vai parar os programas que eu instalar? Com certeza, pois você está dentro do /usr/local eles vão ficar por ali, e dependendo do programa que você está instalando, alguns arquivos mudam de local, tipo: /usr/local/bin, /usr/doc/, /usr/share/man e coisas assim. Outras coisa que você deverá saber é o nome do binário, ou seja, nome do arquivo executável. Então, preste atenção na hora que você estiver compilando, pois geralmente a compilação o informará disso. Ah! tenha sempre instalado as bibliotecas atualizadas e o compilador gcc, pois esse tipo de tarefa no sistema Linux requer no mínimo esses componentes. Nem sempre os programas que você compilar serão encontrados no menu lá no modo gráfico. Por quê? Por que o pessoa/programador que fez o programa não sabe qual é o seu gerenciador de janelas: KDE, Gnome, Window Maker, IceWM, BlackBox etc. Entendeu ? Então é por isso que você vai precisar ficar atento para saber onde é que foram parar os binários. Mas alguns programas mais recente já estão criando sua opções de menu, pelo menos nas interfaces gráficas mais usadas por aí, como KDE e Gnome, e cabe a você criar suas opções no menu de outras interfaces gráficas. Porém, isso é muito simples, se você não souber, LEIA os manuais ou pergunte ao pessoal das listas de discussões, caso você seja assinante de alguma. Como é que eu vou saber que comando devo usar para compilar o programa que acabei de baixar da Internet? Bom, primeiro você não foi lá de graça, pelo menos deve ter lido as intruções na página de onde estava baixando, certo? Tudo bem, você não leu, somente achou interessante o programa e resolveu baixá-lo; gastou meia hora de download (que rápido!) e não quer voltar lá só para isso. Depois que você usar os comandos tar, guzip, bunzip, uncompress, pois isso vai depender do tipo o arquivo que você baixou, se pedir uma listagem dos arquivos, vai ver que geralmente tem (e tem) os arquivos README ou INSTALL tudo em maiúsculas para que use comando less README ou less INSTALL; e LEIA com atenção como usar o procedimento correto. Estude Inglês, porque a grande maioria desses arquivos, 99%, está em Inglês. Geralmente, você vai encontrar três arquivos:
1. configure ou configure.sh, 2. make e 3. make install;

Se existirem tais arquivos, a seqüência de digitação dos comandos será a seguinte:
./configure: Como esse script executável não está no path, você deve inserir “./” para que a “configuração” comece. make: O make cria os objetos e demais arquivos. make install: E o make install, se tudo deu certo, vai instalar o seu programa. Fique atento para saber onde vai parar o binários caso não apareça uma mensagem informando.

124

Global Sul Informática

Quando a compilação estiver sendo feita, preste muita ATENÇÃO às mensagens que são exibidas na tela, pois são elas que poderão ajudá-lo mais tarde. O tempo de compilação vai depender da velocidade do micro que você tem e da complexidade do programa que você vai usar. Eu já vi compilações acontecerem em sessenta segundos e outras em quase 40 minutos. É mole? Alguns programas que você baixa da Internet usam os três passos; outros usam só dois (make e make install); e outros ainda usam só o make install. E ainda há outros que usam o ./configure e depois já entram em uma tela que pode ser em modo texto ou modo gráfico. A compilação e instalação dos binários fica por conta dessa interface. Mas lembre-se uma compilação depende de um monte de coisas tipo: gcc instalado, gcj (para java) , IBM-Jre e Sun-jre (para Java), make presente, automake, autoconf e a dica que eu lhe dou é que você instale todas as feramentas de compilação e também as bibliotecas de desenvolvimento. Mas como é que você vai saber de tudo isso. Somente usando e “mexendo” com o sistema Linux. Alguns pacotes de fontes para compilação que você baixa da Internet só aceitam ser compilados pelo usuário root outros só aceitam ser compilados pelo usuário normal (qualquer usuário) e alguns ainda precisam que você ajusta as permissões (comando chmod) e usuários e grupos de usuários (comando chown) para poderem ser compilados. Por isso que antes de saír compilando por aí a fora você deverá fazer uma leitura do arquivo README ou INSTALL que sempre vem junto com pacotes desse tipo. Lá você encontrará instruções valiosas e corretas.
DICA: Há também uma nova maneira de instalar programas através de linha de comando. São os programas com extensão JAR que são arquivos criados pelo ambiente Java e para para instalar esses programas use o comando java -jar <arquivo.jar>. Lembre-se de seu ambiente de Java deverá estar configurado em seu sistema. Depois disso é só seguir as instruções do programa em modo texto ou “X”. A maioria do arquivos fonte que você pegar na Internet está codificado em linguagem C, perl, phyton e Java, porém a maioria é C ou Java.

125

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

Anotações:

126

Global Sul Informática

Gerenciamento de pacotes com Apt/Synaptic
OK! Agora você já passou pelo rpm e até aprendeu a compilar seus programas está na hora de apresentar uma nova idéia que é o apt1. A idéia do apt é muito interessante pois você deve ter percebindo que o rpm tem uma deficiência, ele não é muito inteligente embora ajude muito mas não consegue resolver dependências. Isso é um sério problema até mesmo para usuários mais intimos ao Linux, pois se um programa não instala e tem problemas de dependência, você por exemplo, deve instalar a biblioteca requerida para depois instalar o programa em si. Mas e se a biblioteca também pede dependência? Isso poderá acabar em uma bola de neve sem tamanho. E isso aborrece o usuário. Então é aí que entra a idéia do apt. Ele vai resolver todos esses problemas para você, isso muito bom porque ele vai atrás de todas as dependências quebradas e resolve e se for o caso vai até na Internet e faz o download de todas as partes necessárias para que seja possível instalar o programa. Só para que você tenha uma idéia é possível atualizar todo o sistema Linux versão Debian 3 para Debian 4 com poucas linhas de digitação ou cliques de mouse. É ou não é uma idéia legal? O apt possui resolução automática de dependências entre pacotes, método fácil de instalação de pacotes, facilidade de operação, permite atualizar facilmente sua distribuição, etc. Ele funciona através de linha de comando mas se você quiser uma interface mais amigável poderá usar o aptitude que é um Front-end2 para ele ou baixar alguns outros que agora tem na Internet, é só achar um bom e usar. Com o apt você pode utilizar tanto com arquivos locais como remotos na instalação ou atualização, desta jeito nós podemos atualizar toda uma distribuição por ftp ou http e tudo isso dependerá da nossa paciência e velocidade da conexão. Como eu sou meio impaciente, uso uma conexão de 1 Mbps. Já dá para brincar um pouco. Vou lhe dar uma idéia legal para que você veja esse “carinha” trabalhando. :: O Aptitude, front-end modo texto do Apt.

Usando o comando apt
Antes de usarmos o apt, vá até um terminal qualquer digite apt de pressione duas vezes a tecla TAB para saber os comandos que vamos trabalhar aqui: apt-cache, apt-cdrom, apt-config, apt-get, apt-shell, aptitude. Quer saber o que cada um faz em seu sistema? 1. apt-cache: É uma ferramenta de baixo nível usada para manipular os arquivos de cache binários do APT e para buscar informações neles. Seu uso é:
apt-cache apt-cache apt-cache apt-cache [opções] [opções] [opções] [opções] commando add arquivo1 [arquivo2 ...] showpkg pacote1 [pacote2 ...] showsrc pacote1 [pacote2 ...]

2. apt-cdrom: É uma ferramenta para adicionar CD-ROM’s no arquivo source-list do apt. O ponto de montagem do CD e o dispositivo são lidos do apt.conf e do /etc/fstab. 3. apt-config: É uma ferramenta simples para ler o arquivo de configuração do APT. Seu uso é apt-config [opções] comando. Onde comandos: shell entra em modo shell e dump mostra a configuração.

127

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

4. apt-get: É uma simples interface de linha de comando para obter e instalar pacotes. Os comandos usados mais frequentemente são update e install. Seu uso é:
apt-get [opções] comando apt-get [opções] install|remove pacote1 [pacote2 ...] apt-get [opções] source pacote1 [pacote2 ...]

5. apt-shell: É uma ferramenta que trá uma série do comandos para você usar. É simples digite o comando apt-shell e depois help para saber o que usar dentro dela. O comando quit sai do apt-shell.
[root@gabriel adilson]# apt-shell Lendo Listas de Pacotes... 100% Lendo Listas de Pacotes... Feito Construindo Árvore de Dependências... 50% Construindo Árvore de Dependências... Feito Welcome to the APT shell. Type “help” for more information. apt> apt> help apt 0.5.5cnc4.1 para linux i386 compilado em Mar 22 2003 09:21:07 Main commands: status - Show the current selections install - Install new packages remove - Remove packages keep - Keep packages upgrade - Perform a global upgrade dist-upgrade - Perform a globla distribution upgrade build-dep - Install build-dependencies for source packages update - Retrieve new lists of packages commit - Apply the changes in the system quit - Leave the APT shell Auxiliar commands: show - Show a readable record for the package showpkg - Show some general information for a single package list/ls - List packages search - Search the package list for a regex pattern depends - Show raw dependency information for a package whatdepends - Show raw dependency information on a package check - Verify that there are no broken dependencies unmet - Show unmet dependencies clean - Erase downloaded archive files autoclean - Erase old downloaded archive files For more information type “help <cmd>” or “<cmd> [-h|—help]”. quit

E então? Parece muita coisa? Não se preocupe que com o tempo você pega o jeito e quem sabe nem use o apt-shell. Se você se acostumar com o synaptic. 6. aptitude: Esse você já viu a tela umas páginas atrás, faz tudo o que esses comandos faze só que em modo interativo.

Adicionando um CD
Com o apt-get, podemos instalar ou atualizar pacotes pelo próprio CD da Conectiva ou pelo ftp. Para utilizar os apt com os CD´s, é necessário criar um índice que o apt utilizará; para isso, coloque o primeiro CD do Conectiva Linux e rode o utilitário apt-cdrom, assim apt-cdrom add:
[root@gabriel root]# apt-cdrom add Using CD-ROM mount point /mnt/cdrom/ Unmounting CD-ROM Please insert a Disc in the drive and press enter Mounting CD-ROM Identifying.. [dd532ceb1e92be0520029709f939fae3-2] Scanning Disc for index files.. Found 1 package indexes and 0 source indexes. Found label ‘Conectiva Linux 9 CD1’ This Disc is called: ‘Conectiva Linux 9 CD1’ Reading Indexes... Feito Writing new source list Source List entries for this Disc are:

128

Global Sul Informática

rpm cdrom:[Conectiva Linux 9 CD1]/ conectiva 001 Repeat this process for the rest of the CDs in your set.

Aqui nós vimos que o comando apt-cdrom add adicionou uma entrada indexada para o CDROM nº 1 do Conectiva Linux 9.0; assim, fica mais fácil instalar e/ou atualizar pacotes deste CD-ROM. Agora vamos ver o conteúdo do arquivo /etc/apt/sources.list (traduzido pelo autor):
# Endereço de repositório de pacotes # # Esteja certo de usar o repositório para a sua distribuição # # Assinatura para O Conectiva tem [cncbr]. # Caso você remova a assinatura uma checagem será feita # # Repositório de pacotes official do Conectiva Linux 9 # Caso esteja ocupado tente um “mirro” mais próximo # rpm cdrom:[Conectiva Linux 9 CD1]/ conectiva 001 rpm cdrom:[Conectiva Linux 9 RdL CD2]/ conectiva 002 rpm cdrom:[Conectiva Linux 9 RdL CD1]/ conectiva 001 rpm [cncbr] ftp://ftp.conectiva.com/pub/conectiva 9/i386 all rpm-src [cncbr] ftp://ftp.conectiva.com/pub/conectiva 9/i386 all # Atualizações devem ter o seu próprio repositório rpm [cncbr] ftp://atualizacoes.conectiva.com.br 9/i386 updates rpm-src [cncbr] ftp://atualizacoes.conectiva.com.br 9/i386 updates # Mirrors Conectiva # Unicamp.br #rpm [cncbr] ftp://ftp.unicamp.br/pub/conectiva 9/i386 main extra kde gnome games #rpm-src [cncbr] ftp://ftp.unicamp.br/pub/conectiva 9/i386 main extra kde gnome games #rpm [cncbr] ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates #rpm-src [cncbr] ftp://ftp.unicamp.br/pub/conectiva/atualizacoes 9/i386 updates # NL.linux.org #rpm [cncbr] ftp://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games #rpm-src [cncbr] ftp://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games #rpm [cncbr] ftp://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates #rpm-src [cncbr] ftp://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates # NL.linux.org via http — Para usuários da Internet com proxy #rpm [cncbr] http://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games #rpm-src [cncbr] http://ftp.nl.linux.org/pub/conectiva 9/i386 main extra kde gnome games #rpm [cncbr] http://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates #rpm-src [cncbr] http://ftp.nl.linux.org/pub/conectiva/atualizacoes 9/i386 updates

Esse arquivo informa ao apt onde ir buscar atualizações novas de um pacote. Mas para isso você deverá estar conectado à Internet. Se você adicionar o seu próprio endereço da Internet aqui a um endereço local, deverá comentar as outras linhas para que elas não sejam processadas. As opções mais comumente usadas são: add para adicionar um CD, ident para reportar a identificação de um CD, “–d” que é o ponto de montagem do CD e “–f” que é o modo rápido sem checagem de pacotes. Então, para gerar um índice dos arquivos RPM do primeiro e assim por diante, lembre-se o Conectiva Linux 9 são 4 (quatro) CD´s e tem uma versão especial que saiu na RDL – Revista do Linux no. 44 que são 2 (dois) CD´s. Para criar os índices use assim:
# apt-cdrom add -d /mnt/cdrom

Depois quando você quiser instalar use o comando:
# apt-get install <nome_do_pacote>

Resumindo, o comando apt-get é uma interface de linha de comando simples para download e instalação de pacotes. Os comandos usados com mais freqüência são update e install. A seguir, você tem a listagem de mais comandos:

129

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

update: Atualiza o banco de dados local do apt-get com os arquivos pkglist do servidor. upgrade: Procura por pacotes desatualizados no sistema e os atualiza automaticamente. Atualizará todos os pacotes antigos no sistema. Para atualizar um pacote e suas dependências utilize o comando apt-get install <pacote_a_ser_atualizado>. install: Instala algum pacote novo, solucionando e carregando automaticamente os pacotes dos quais o aplicativo a ser instalado depende. Caso o pacote algum-pacote já esteja instalado, ele atualiza pela versão mais recente. Um pacote é libc6 e não libc6.rpm por exemplo. remove: Remove o pacote algum-pacote e todos os demais pacotes que dele dependam. source: Faz o download dos fontes de um pacote (SRPM). Note que é necessário que haja uma linha com o TIPO rpm-src no arquivo sources.list para que este comando execute. build-dep: Configura dependências de construção de pacotes fonte. dist-upgrade: Semelhante ao apt-get upgrade, mas instala todos os pacotes básicos e tenta atualizar tudo, instalando novos pacotes caso seja necessário. É uma maneira mais fácil de fazer uma atualização de sua distribuição. dselect-upgrade: Segue as seleções do dselect. clean: Remove os arquivos encontrados no diretório cache (/var/cache/apt/archives/), liberando um pouco de espaço no seu disco de sistema. É uma maneira automática de apagar os arquivos que já foram instalados e que não são mais necessários. autoclean: Apaga arquivos antigos obtidos para instalação. check: Verifica a integridade dos pacotes rpm e do banco usado pelo apt. Execute este comando quando tiver dúvidas quanto à integridade dos pacotes do seu sistema. É recomendável executá-lo antes de executar uma atualização de distribuição. Agora veja quais opções você também poderá usar em conjunto com o comando:
-q: Saída logável, sem indicador de progresso. -qq: Sem saída, exceto para erros. -d Baixar apenas, NÃO instala ou desempacota arquivos. -s: Não-agir. Executar simulação de ordenação. -y: Assume Sim para todas as perguntas e não pede confirmação. -f: Tenta continuar se a verificação de integridade falhar. -m: Tenta continuar se os arquivos estão não localizáveis. -u: Mostra uma lista de pacotes atualizados também. -b: Constroi o pacote fonte depois de baixá-lo.

Outras opções são remove e upgrade. O remove irá desinstalar o pacote, e a opção upgrade fará com que quando estiver configurado para usar por ftp, o mesmo baixará todas as autalizações do sistema. Com esses comandos, podemos instalar, remover ou atualizar pacotes em nosso sistema sem precisar procurar dependências para instalação. Uma vez que você solicita ao apt para instalar algum pacote ou efetuar uma atualização (upgrade ou dist-upgrade), ele fará download dos pacotes necessários para /var/cache/apt/archives/partial/ e, após verificar seus hashes e tamanhos de MD5, moverá esses pacotes para /var/cache/apt/archives/. Você pode assumir que todo arquivo no diretório archives/ foi verificado. Utilize o comando aptget clean para excluir os arquivos no diretório archives/ e archives/partial/. Para verificar se alguma coisa precisa ser feita use o comando:
[root@gabriel adilson]# apt-get -f install Lendo Listas de Pacotes... Feito Construindo Árvore de Dependências... Feito 0 pacotes atualizados, 0 novos instalados, 0 removidos e 0 não atualizados.

Caso algum pacote precise ser atualizado/instalado ou então removido você será informado. Todos os pacotes que você instalou em seu sistema ficarão nos seguintes caminho listados a seguir, nesse exemplo o Conectiva Linux com 3 (três) Cd´s que veio na Revista PC Master:
/var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_pkglist.001 /var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_release /var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD1_conectiva_base_release.001 /var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_pkglist.002 /var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_release /var/state/apt/lists/Conectiva%20Linux%209%20RdL%20CD2_conectiva_base_release.002

130

Global Sul Informática

/var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_pkglist.updates /var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_release /var/state/apt/lists/Conectiva%20Linux%209%20Updates1_conectiva_base_release.updates

Instalando novos pacotes
Para instalar pacotes nós usamos o comando apt-get install <nome_do_pacote> para instalar novos pacotes da distribuição. Podemos instalar mais de um pacote ao mesmo, para isso separamos os nomes por espaços. Exemplo:
apt-get install telnet telnetd telnet-ssl telnetd-ssl

Se for necessário o apt instalará automaticamente as dependências necessárias para cada pacote. O também apt mostra o espaço total que será usado no disco e perguntará ao usuário se ele deseja continuar.

Removendo pacotes instalados
Para remover pacotes do sistema nós usamos comando apt-get remove <nome_do_pacote>. Também podemos remover mais de um pacote ao mesmo tempo separando os nomes dos pacotes com espaços. O apt-get remove remove completamente o pacote mas mantém os arquivos de configuração, vai que você volte mais tarde a instalar o pacote novamente, exceto se você adicionar a opção --purge. Removendo pacotes Para remover pacotes que você baixo pelo apt use o comando apt-get clean, isso apaga qualquer arquivo baixado durante uma atualização ou instalação de arquivos com o apt. Os arquivos baixados residem em /var/cache/apt/archives, para downloads completos e /var/cache/apt/archives/partial que são os arquivos sendo baixados em modo parcial. A listagem é muito grande, dê uma olhada e veja quantos pacotes tem por lá. Este local de armazenamento é especialmente usado para HTTP e FTP para armazenamento de arquivos durante o download para instalação, primeiramente os arquivos são copiados para depois serem instalados e configurados. O comando apt-get clean é automaticamente executado caso seja usado o método de acesso apt do dselect.

Atualizando sua distribuição
Um característica interessante do apt e que agrada muito os usuários é a de atualizar toda uma distribuição de forma inteligente e segura, ou seja, o apt lê a listagem de pacotes disponíveis no servidor remoto, verifica quais estão instalados e suas versões, caso a versão do pacote seja mais nova que a já instalada no sistema, o pacote será imediatamente atualizado de forma automática sem que você preciser intervir. Isso poderá ser feito por via FTP, HTTP ou através de uma cópia local dos arquivos no disco rígido, ou um mirror local. Em nenhuma circunstância os pacotes existentes em seu sistema serão removidos ou sua configuração apagada durante um upgrade na distribuição. Para fazer isso use os comandos:
apt-get update apt-get -f dist-upgrade

A primeira linha atualiza a lista de pacotes do seus sistema e a segunda atualiza toda a sua distribuição. Use –f para que o apt verifique e corrija automaticamente problemas de dependências entre pacotes.

Procurando por pacotes
Você lembra do comando apt-cache, ele pode ser usado para esta função, pois ele também possui outras utilidades interessante para a procura e manipulação da lista de pacotes. Por exemplo, o comando apt-cache search Xconfigurator mostrará todos os pacotes que possuem a string Xconfigurator na descrição do pacote. Isso realmente é muito útil, pois algumas vezes não sabemos em qual pacote está um comando qualquer e daí como é que vamos instalar? Se soubermos pelo menos o nome do comando já está resolvido, mas lembre-se que o apt vai pesquisar em todos os pacotes em busca da string informada, você vai ter que ler com calma, até encontrar o que está procurando. Se você souber o nome do arquivo que está procurando poderá usar o comando autoapt search <nome_do_arquivo>, assim o apt vai retornar onde ele está e a qual grupo pertence em seu sistema.

131

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

Usando o Synaptic
Bom, agora que você já aprendeu a usar o comando apt e suas variantes, vamos dar uma olhada no Synaptic que é uma interface gráfica muito bem bolada para o apt. Com o Synaptic o gerenciamento de pacotes é muito simples e rápido. O Synaptic é simples e tem uma interface bem amigável. Você poderá ver na figura seguinte a tela do Synaptic e tudo o que você faz é nessa interface, algumas janelinhas se abre para lhe dar informação outras para que você dê informação mas praticamente você estará sempre nessa tela. Vamos aprender agora como usá-lo, mas vamos aprender pelo que é mais óbvio, ok? Na parte de baixo você tem três guias e três botões qua são usados para: :: O Synaptic, adotado pelo Debian e similares como gerenciador oficial.

Guia informação: Mostra descrição detalhadas sobre o pacote/programa. Guia Descrição: Nos fornece uma descrição detalhada do que é o pacote, o que ele faz e o que disponibiliza. O nível de detalhe de cada descrição varia de pacote para pacote. Guia Dependência:Mostra as dependências do pacote selecionado. Você também pode selecionar no menu dessa guia a opção de ver somente as dependências do pacote, os pacotes que dependem do pacote selecionado. Assim, você pode ter uma idéia de quais pacotes dependem de quais e o quão complexo seria instalar isso tudo manualmente, além de poder avaliar as conseqüências da desinstalação de um pacote.
DICA: Lembre-se, para selecionar um pacote/programa primeiro abra o abra o grupo ao qual o programa pertence e depois marque um ou mais pacotes/programas que você deseja selecionar. Você também poderá combinar a tecla SHIFT para pegar vários de uma vez sendo selecionados todos os pacotes/programas no intervalo entre seu primeiro e último clique inclusive. Também é possível o uso da tecla CONTROL para seleciona pacotes/programas em diferentes posições.

Botão Manter: Se você marcou um pacote para remover ou atualizar e depois desistiu da ação, clique em manter para que nada aconteça com o pacote. Botão Atualizar: Marque um pacote/programa na área de pacotes/programas, clique nesse botão para que o pacote/programa seja atualizado. Essa atualização poderá ocorrer pelo CD-ROM em seu computador, por um disco rígido na rede, por mirror na Internet via HTTP ou FTP. Botão Remover: Quando você marca um pacote/programa na área de pacotes/programas e clica nesse botão ele será removido do seu sistema, não se preocupe as dependências com a saída desse pacote serão resolvidas. E como você pode ver na figura anterior, para selecionarmos nossos pacotes, clica-se no grupo, por exemplo: Desenvolvimento, Comunicação, X11 etc e dá-se um clique para marcar e depois escolhe-se entre um dos três botões: Manter, Atualizar ou Remover. Outra área que também é importante é a área de filtro ou seja, nós poderemos efetuar uma pesquisa seguindo critérios estabelecidos assim: selecionar todos os pacotes que não estão instalados, selecionar todos os pacotes que estão instalados ou selecionar um determinado tipo de pacote etc. E agora nós temos o menu que faz tudo o já falamos até agora e o mais importante também, quatro botões que fazem o seguinte:

132

Global Sul Informática

Botão Atualizar Lista: Esse botão faz com que o seu arquivo de lista automaticamente atualizado. Botão Tudo: Esse botão seleciona automaticamente todos os pacotes existentes no servidor que tenham versões mais novas que os pacotes que estão instalados no seu sistema. É a maneira mais simples de estar com o seu sistema sempre atualizado com a última versão dos aplicativos instalados. Para executar a instalação dos pacotes, utilize o botão Proceder. Mas se a sua conexão for por acesso discado, você poderá gastar várias horas para atualizar um sistema Linux completo. O bom mesmo que sua conexão seja do tipo ADSL, @ajato, speedy etc., ou seja, conexões velozes que não nos aborrece com esperas eternas. Botão Atualizar Distribuição: Esse botão seleciona automaticamente todos os pacotes que devem ser instalados/atualizados para atualizar sua distribuição inteira, isso é muito interessante, pois você poderá passar do Debian 3 para a versão Debian 4 apenas clicando aqui. A diferença entre este botão e o botão Tudo é que o botão Tudo não atualiza pacotes que, na sua nova versão, dependam de outros pacotes que você não tem instalado no seu sistema. Botão Proceder: Como o próprio nome já indica, o botão Proceder tem a finalidade de executar as ações programadas com os outros botões e também as ações efetuadas diretamente com os pacotes (Manter, Atualizar e Remover). Você pode ainda, durante a execução das ações, especificar se deseja apenas fazer o download dos pacotes ou se quer fazer o download e executar as operações especificadas. A instalação e/ou atualização de um número grande de aplicativos pode demorar algum tempo. Aguarde enquanto o Synaptic realiza as operações necessárias aos procedimentos solicitados. Veja aqui porque o Synaptic é muito interessante, depois que eu marquei alguns pacotes/programas e cliquei o no botão Proceder, o Synaptic automaticamente abriu uma janela de informações e mostrou-me quais pacotes seriam atualizados, instados e mantidos. Se por um acaso algum precisasse ser removido, ele também informaria. Clique em prosseguir e aí fica bonito de ver, pois o Synaptic apresenta a próxima figura e vai atrás de tudo e todos os pacotes para satisfazer a seleção feita anteriormente, nenhum pacote escapa. O único cuidado seu mais tarde quando estiver marcando vários pacotes é que se tiver algum pacote estragado o Synaptic simplesmente informa que ocorreu um erro e para tudo por ali mesmo e você nao fica sabendo qual é o pacote. Quando isso acontecer faça como eu, vai marcando aos poucos e uma hora você acha o “elemento 115”. A pior coisa que poderá acontecer casos seus CD´s não estejam bem cuidados ou se alguma coisa estranha acontecer, é que depois de horas marcando e desmarcando pacotes para instalação ou remoção assim que o Synaptic terminar a leitura dos pacotes ele apresenta uma saída de erros (output), como a da figura seguinte, então tudo o que você fez estará perdido. O único jeito é ir instalando aos poucos até descobrir qual pacote contém erros. O pior não nem isso, pois isso aí a gente contorna com umas xícaras de café, chá ou uns copos d´água, o problema é ficar trocando os CD´s, que são 4 (quatro) no caso de ser a distribuição em caixas e não a da RDL (Revista do Linux) que veio na revista e são apenas 2 (dois) CD´s. Pode ter certeza que você vai trocar (tira/põe) seus CD ´s um “par de veis”, tenha calma. Então escolha somente o necessário. Sempre que você fizer suas seleções o botão proceder é o que vai realizar as suas ações, tanto para remover, atualizar e ou instalar pacotes/programas novos em seu computador. Depois que o processo de busca for concluído o Synaptic vai realizar todas as alterações necessárias para dar prosseguimento no início da uma instalação. Agora é só esperar, se você marcou poucos pacotes/programas para atualiza, remover etc até que vai rápido. Mas se você estiver fazem uma atualização de toda a sua distribuição, acho melhor você ir tomar um café porque vai demorar um pouco. Quando a alteração é para um único pacote as coisas acontecem bem rapidinho. Agora se você deseja fazer uma atualização completa de seu sistema Linux direto da página da sua distribuição, clique no menu Configurações do repositório.

133

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

Convertendo formatos de pacotes com o Alien
Acho que você já deve ter percebido quantos formatos de arquivos nós temos para fazer instalações de aplicativos. Somente para lembrar, temos os formatos:
.tar, .tar.Z, .tar.gz, .tar.bz2, .tgz. .rpm, .deb, .pkg. .sh (scripts de instalação) etc.

Logo a conclusão: praticamente todo usuário do sistema Linux já se deparou com a situação que, depois de feito o download, o pacote está em um formato de diferente da usada pela sua distribuição. E agora, como é que é possível resolver isso? É aí que entra em campo o utilitário alien. Esse programa não é muito comentado, mas ajuda muito em algumas situações, como essa explanada há pouco, pois tem como objetivo a conversão entre diferentes formatos de pacotes. O utilitário alien está disponível em www.kitenet.net/programs/alien. Está disponível para todas as distribuições. Com isso em geral, basta instalá-lo conforme o método de instalação de pacotes da sua distribuição. O utilitário alien pode fazer por você? Converter entre formato RPM (usado em RedHat, SuSE, Mandrake, Fedora, CentOS e derivados), DEB (usado em Debian e derivados), TGZ (usado em Slackware) e SLP (usado em Stampede), ou seja, desempacota-o no formato original e reempacota-o no novo formato. Entendeu a jogada do utilitário alien? Como utilizar o utilitário alien? É simples alien <parâmetro> <pacote>, onde as principais opções são:
-d, --to-deb = converte para DEB -r, --to-rpm = covverte para RPM -t, --to-tgz = converte para TGZ --to-slp = converte para SLP -h = ajuda

Por exemplo:
# alien -d foo.bar.rpm --> Converte o RPM foo.bar.rpm para DEB foo.bar.deb # alien --to-slp foo.bar.tgz --> Converte o TGZ foo.bar.tgz para o SLP foo.bar.slp

O uso do utilitário alien só faz sentido com pacotes binários. O pacote resultante do alien pode não seguir as regras de colocação de arquivos e diretórios da sua distribuição. Isso é especialmente importante para quem converte pacotes de uma distribuição que não segue o padrão de outra. Se vai haver conversão de pacotes de/para DEB/RPM, é necessário ter o dpkg ou o rpm instalados na sua máquina. Porém, as distribuições que não usam o formato RPM têm sempre disponível o binário rpm, e isso já ajuda bastante. Acredito que essa informação sobre o utilitário alien possa ajudá-lo. Mas lembre-se: o utilitário alien não resolve tudo, como o caso de bibliotecas, dependência etc.; a função dele é converter de um formato de pacote para outro formato.

134

Global Sul Informática

Anotações:

135

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

Anotações:

136

Global Sul Informática

Capítulo 8

Configurações básicas
As configurações1 nos dias de hoje no sistema Linux é muito mais amigável que algum tempo atrás. Na própria instalação do sistema, já é detectado uma boa e grande parte do seu hardware. O sistema Linux é o segundo sistema operacional no mundo em quantidade de drivers sabia? Se você perceber quase todas as motherboards (placas mãe) de hoje já trazem em seus CD´s tanto drivers para Windows quanto para Linux, por que será hein? No sistema Linux você poderá efetuar suas configurações por três modos diferentes. Você pode fazer pelo modo braçal que é editando diretamente os arquivos, isso é aconselhável quando você já tem experiência no Linux e então você vai diretamente onde precisar efetuar sua configuração. Com o tempo você vai perceber que esse é melhor e mais rápido jeito. Também poderá fazer pelo configurador no modo texto usando pequenos utilitários como o kbdconfig, mouseconfig, XConfigurator, sndconfig etc e no modo gráfico também encontrará seus equivalentes embora você possa chamá-los de dentro de um terminal. Mas em alguns casos você demora mais para achar um modulo de configuração do que quando sabemos diretamente o nome dele. A configuração abordada aqui é para o Linux Red Hat e similares porém vamos aprender o modo básico pois esse modo tem praticamente em todas as distribuições, podendo, claro apresentar algumas variações, mas se você entender a idéia desse capítulo todas demais configurações serão fáceis de serem entendidas. Sabemos que as configurações são automáticas no Linux na hora da instalação, mas é sempre bom saber como as coisas funcionam. Nós podemos fazer também a configuração diretamente pelos arquivos de configuração ou pelo utilitário específico. Por exemplo, se é para configurar o teclado é mais fácil ou editar os arquivos necessários ou executar o kbdconfig e pronto, não é necessário carregar todo os módulos de configuração. Mas para teclado, mouse, vídeo e cartão de vídeo temos o xf86cfg. Caso você não se acostume em usar esse configurador para fezer suas configurações veja se você tem o kxf86config que faz a mesma coisa mas jé tem “cara” de KDE e também é muito simples de ser usado.

Configurando datas e horários
Para configurarmos a data e a hora no sistema Linux poderemos usar o comando date e depois o comando clock -w para que nossas configurações seja efetivadas. O comando sem parâmetros mostra o estado atual do sistema:
[root@gabriel root]# date Seg Set 8 10:00:40 BRT 2003

De acordo com a informação são 10:00 do dia oito de setembro é um domingo. Porém veja o que aconteceu aqui
[root@gabriel root]# date 10081300 Qua Out 8 13:00:00 BRT 2003

Para mudar a data e a hora você deverá digitar na seqüência certa, senão sua data poderá ser alterada de um jeito que você não espera. Para alterar a data para o mesmo dia para as 13:00 da tarde:
[root@gabriel root]# date 09071300 Dom Set 7 13:00:00 BRT 2003 [root@gabriel root]# clock -w

137

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

OK! Agora sim, seu sistema está configurado a contento. Mas não é só isso, o comando timeconfig que carrega uma interface simples para configurar os parâmetros de horário do sistema e fornece um método simples para configuração dos arquivos /etc/sysconfig/clock e /etc/localtime que são compatíveis com scripts de inicialização Red Hat e outras distribuições semelhantes e com o utilitário timeconfig. Se um fuso horário for especificado, o fuso horário do sistema será mudado para o fuso horário especificado. De outra forma, um menu com os fusos horários disponíveis é mostrado. Se --utc for informado, assume-se que o relógio do sistema está em formato universal (Greenwich). Se --arc for usado, assume-se que o relógio do sistema é armazenado no formato usado pela plataforma ARC em plataformas Alpha da Digital (a opção --arc somente está disponível em máquinas Alpha). Se --test for especificado, o timeconfig poderá ser executado por usuários não root e nenhuma mudança será escrita. Os arquivos envolvidos pelo comando timeconfig são o /etc/sysconfig/clock que configura o formato usado pelo relógio de hardware e o /etc/localtime que é um link simbólico apontando para o fuso horário default. A seguir o conteúdo do /etc/sysconfig/clock:
# cat /etc/sysconfig/clock America/Sao_Paulo" UTC=false ARC=false

Outro comando que é usado é o setclock, o qual ajusta o relógio de hardware a partir do relógio do sistema corrente armazenado no relógio do sistema. O arquivo /etc/sysconfig/clock é lido para descobrir para que formato o horário deve ser convertido antes do armazenamento. Para usá-lo é muito simples basta digitar setclock. Há um outro pequeno utilitário presente na maioria das distribuições, que é o timetool, que também faz o acerto da hora e da data no sistema Linux. No ambiente KDE, caso precisar corrigir a data e a hora, o processo é idêntico ao ambiente Windows, apenas pressione o botão direito do mouse sobre a hora no relógio da barra de tarefas e peça para ajustar a data e a hora. Caso você tenha alterado a data e a hora do sistema com o comando date pela console ou terminal, não esqueça de usar o comando clock -w para que suas alterações possam ter efeito. Isso também poderá ser feito pelo KDE, para isso basta clicar na barra de tarefas para que você possa alterar rapidamente data e a hora. Quer ver algo interessante? O horário de todos os países do mundo?Para isso basta usar uma variável de ambiente chamada TZ, que vai mostrar a Time Zone de um determinado paíz. POr exemplo para ver o horário de São Paulo, podemos simplesmente digitar:
TZ=America/Sao_Paulo date Sex Nov 7 20:47:20 BRST 2003

Viu que interessante? Veja mais alguns exemplos:
TZ=Europe/Berlin date Sex Nov 7 23:48:01 CET 2003 TZ=Europe/Moscow date Sáb Nov 8 01:48:12 MSK 2003 TZ=Europe/Zurich date Sex Nov 7 23:48:25 CET 2003

Os países que podem usar essa variável para ver as datas estão no local /usr/share/zoneinfo/.

138

Global Sul Informática

Configurando o teclado
A configuração do teclado dá-se pelo comando kbdconfig invocado pela linha de comando ou também de dentro de um terminal ou pelo comando xf86cfg. O comando kbdconfig é o responsável pela carga do mapa do seu teclado, por exemplo “br-abnt2” é o mapa para o usuário que tem o teclado padrão ABNT2 com o “Ç”, o que hoje é muito comum. A seguir, você poderá saber onde é que ficam os arquivos de mapas de teclado padrão ABNT-2 em seu sistema Linux, mas tome cuidado, pois a localização poderá ser um pouco diferente, conforme a distribuição que você estiver usando.
/usr/lib/kbd/keymaps/i386/qwerty/br-abnt.kmap.gz /usr/lib/kbd/keymaps/i386/qwerty/br-abnt2.kmap.gz /etc/X11/xinit/xmodmaps/Xmodmap.abnt /etc/X11/xinit/xmodmaps/Xmodmap.abnt2

As duas primeiras linhas são arquivos de mapas de teclado para o modo texto e as duas últimas são para o modo gráfico. Mas atenção: se você tem acentuação em modo texto não quer dizer que você terá acentuação em modo gráfico. Se você tem acentuação em modo texto, mas não a tem em modo gráfico, e seu teclado é padrão ABNT-2, é super simples de resolver, assim você terá acentuação em modo texto e em modo gráfico sem nenhum problema. Para isso use o comando:
xmodmap /etc/X11/xinit/xmodmaps/Xmodmap.abnt2

Você escolhe o layout do seu teclado e ela grava essas informações para você. Para saber qual é o mapa de teclado que está sendo usado pelo seu sistema Linux no atual momento, use o comando cat /etc/sysconfig/keyboard, você vai ter como resultado:
KEYTABLE="br-abnt2"

O resultado mostra que o mapa é br-abnt2. A entrada de algumas combinações de teclado para alguns programas de edição em modo texto ficam guardadas no arquivo /etc/inputrc ou geralmente no /home do usuário. Se quiser, você poderá ver o conteúdo desse arquivo com cat /etc/inputrc:
# Allow 8 bits set meta-flag on set convert-meta off set input-meta on set output-meta on ... $if Bash # To edit PATH: "ctrl-x p" "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" $endif

Aqui nós podemos perceber que há configurações para o bash, vi e emacs e descobrimos um segredo bem interessante, que é a combinação CONTROL+X P. Isso permite que você edite rapidamente o seu PATH para execução de programas. Mudando a velocidade do teclado É possível mudar a velocidade de seu teclado através do comando kbdrate. O comando sem argumento retornará a estado atual de velocidade do teclado, por exemplo kbdrate. Velocidade do teclado definida como 10,9 cps (intervalo = 250 ms). Os parâmetros do comando são: -r: Altera a taxa de repetição cps (caracteres por segundo) do teclado que varia de 2.0 a 30.0 cps (caracteres por segundo). -d: Altera o tempo em milissegundo para repetição de um determinado caractere que varia entre 250 a 1000 ms. Um exemplo de configuração seria kbdrate -r 30 -d 250. Assim, seu teclado seria configurado para ter uma taxa de repetição de 30 caracteres para um tempo de 250 ms. Se for preciso verificar o relatório de como está configurado o teclado no atual momento, use o comando kbd_mode, assim:

139

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

kbd_mode The keyboard is in the default (ASCII) mode

Ficamos sabendo que o nosso teclado está configurado para o modo ASCII. Outros parâmetros do comando são os seguintes:
–s: scancode mode (RAW), –k: keycode mode (MEDIUMRAW). –a: ASCII mode (XLATE), –u: UTF-8 mode (UNICODE).

Configurando o mouse
Para configurarmos nosso mouse no sistema Linux também é muito fácil: basta chamar o comando mouseconfig ou pelo comando xf86cfg via console ou até mesmo de dentro de um terminal. Mas em alguns casos será preciso reiniciar o modo gráfico com CONTROL+ALT+BACKSPACE para que a mudança seja válida, pois o mouse poderá comportar-se de maneira estranha. O mouseconfig ajusta os arquivos de configuração necessários e os links para uso do mouse em um sistema Red Hat. Existem dois modos de operação: interativo e kickstart. Em modo interativo, o usuário é perguntado sobre o tipo de mouse que está conectado ao sistema. Algumas dessas informações podem ser automaticamente detectadas e preenchidas. Se --expert for especificado, o usuário terá a oportunidade de substituir quaisquer valores detectados. Em modo kickstart, o Xconfigurator tentará detectar automaticamente todas as informações necessárias, não interativamente. Mouses em portas tipo PS/2 serão encontrados automaticamente. Mouses seriais serão geralmente detectados, mas o tipo do mouse serial normalmente não poderá ser determinado. O usuário pode usar a opção <tipo mouse> para forçar o mouseconfig a usar um tipo particular de mouse. A execução de mouseconfig --help relacionará todos os tipos válidos de mouses. O daemon (processo) que controla o mouse é o gpm, então em alguns casos precisamos “matar” o gpm; ou seja, derrubar e levantar o processo do mouse com o comando:
# /etc/rc.d/init.d/gpm restart Interrompendo os serviços gpm: gpm Iniciando os serviços gpm:

[ OK ]

Desse modo, se tivermos problemas com o mouse, nós paramos o seu processo e depois o ‘levantamos’ novamente. Isso você deverá fazer somente se for preciso. O comando mouseconfig, como podemos ver a seguir, permite que seja escolhido o modelo do mouse e se também desejamos emular ou não três botões: Um dos arquivos que guarda as configurações do mouse é o seguinte cat /etc/sysconfig/mouse:
MOUSETYPE="Microsoft" XMOUSETYPE="Microsoft" FULLNAME="Generic Mouse (serial)" XEMU3=yes

Vale lembrar que o link simbólico /dev/mouse é apontado para o dispositivo do mouse que geralmente está na COM1, que no sistema Linux é /dev/cua0 ou /dev/ttyS0. Se o tipo do mouse for alterado usando o mouseconfig, o utilitário Xconfigurator deve ser executado novamente para traduzir as mudanças para a configuração do X11 (modo gráfico).

Configurando a placa de som
Algum tempo atrás, configurar a placa de som no Linux era um certo probleminha, pois algumas vezes a irq não batia, a DMA não dava certo e ainda poderia não haver o driver daquele placa disponível. Porém, hoje a configuração de placas de som no sistema Linux é muito fácil, pois ele conta com quase todos os drivers de placas de som disponíveis no mercado e as placas que trazem o som on-board, para a grande maioria delas, o Linux já tem os drivers ou o fabricante inclui junto ao CD da placa. A configuração do som dá-se pelo comando sndconfig, que é um utilitário que pode configurar programas de controle de dispositivos de som. Há poucas coisas que são necessárias saber sobre sndconfig, use seja, ele tem suporte Plug and Play sendo capaz de configurar placas de som Plug and Play como de 16 e 32 bits. Se você usar o servidor de som ALSA, use o alsaconfig. As informações de configuração estão armazenadas no arquivo /etc/isapnp.conf, em conjunto com as informações de configuração para qualquer outro dispositivo Plug and Play. Para garantir que a

140

Global Sul Informática

configuração não seja /etc/isapnp.conf.bak.

perdida,

o

sndconfig

salva

o

arquivo

original

/etc/isapnp.conf

como

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 WINDOWS COM 1 COM 2 COM 3 COM 4

LINUX /dev/cua0 ou /dev/ttyS0 /dev/cua1 ou /dev/ttyS1 /dev/cua2 ou /dev/ttyS2 /dev/cua3 ou /dev/ttyS3

DESCRIÇÃO Porta de comunicação 1. Porta de comunicação 2. Porta de comunicação 3. Porta de comunicação 4.

Caso o seu modem esteja conectado na COM2, por exemplo, o comando para criação do /dev/modem use o comando:
# ln -sf /dev/ttyS1 /dev/modem

E para que isso funcione a partir de todas as inicializações, por exemplo se o modem estiver na ttyS2 ou ttyS3 você deve adicionar uma linha como esta em seu /etc/rc.d/rc.local:
# setserial /dev/modem irq 7

Isso deverá ser de acordo com a IRQ utilizada pelo seu modem. As IRQ´s dos modens que são on-board tem IRQ´s mais altas, mas a grande maioria não funciona no ambiente Linux por serem Winmodens, ou seja, são modens feitos para funcionar apenas no ambiente Windows. Infelizmente ainda não existe suporte total e completo a modems PCI no Linux, somente a alguns modelos específicos, que não são modems do tipo winmodem, incompatíveis com o Linux. Para saber se o seu Winmodem foi reconhecido pelo sistema Linux nada melhor que usar o comando dmesg | less e procurar pelas seguintes ocorrências:
PCTEL modem device (61) 13f6:0211 found: irq = 11, base = 0xdc00 Serial PCTEL driver version 4.27.212 (CM8738) (2001-05-03) with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ ISAPNP enabled ttyS15 at 0xdc00 (irq = 11) is a 16C950/954 assign pctel_interrupt Trying to free free IRQ11 Trying to open $MFT! Trying to _clear_inode of $MFT!

Essas informações nos mostram que o modem é um PCTEL (CM8738) on-board e usa a IRQ 11, mas tem como referência a ttyS15, isso quer dizer que esse tipo de Winmodem é fácil de ser configurado. Para isso, você poderá usar o kppp, minicom ou alguns outro utilitário de sua preferência.

141

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

Usando o KPP para conectar à Internet
Se você não se entender muito bem o minicom, então use o kppp que é muito parecido com o dial-up do Windows. Ele é fácil e simples de ser configurado, a única observação é que o seu modem seja reconhecido pelo sistema Linux. Para configurar um acesso discado à Internet vamos usar um passo a passo visual bem simples de ser acompanhado: Passo 1: Executando o kppp temos as seguintes opções iniciais: Conectar a: É o nome descritivo do seu provedor de acesso. ID de Login: É o nome de conexão do usuário. Senha: É a senha de acesso do usuário. Mostrar Janela de Relatório: Mostra janela com informações sobre a conexão. O botão Configurar permite entrar no modo de configuração e o botão Conectar, depois de feitas as devidas configurações, faz a conexão para depois você usar o Netscape, Mozilla, Konqueror ou outro navegador e navegar à vontade. Passo 2: Configuração de contas e dispositivos: Nesse procedimento nós poderemos editar uma configuração existente, criar uma nova conta de acesso, copiar uma conte de acesso ou remover uma conta que não será mais usada. Para criar uma conta nova clique em no botão Nova. Agora, na aba Ligar, você deverá adicionar o nome que identifica a sua conexão com seu provedor e depois um número telefônico e qual o tipo de autenticação usada por ele. Na aba IP, caso você usa um IP fixo passe-o aqui ou deixe como IP Dinâmico como é a mais comum em acesso discado. Aqui na aba Gateway você deverá informar se é um gateway padrão (de você para seu provedor) ou se é um gateway estático (de você para um gateway de sua rede interna) e na aba DNS você deverá informar ou o seu DNS interno de rede caso tenha um ou informe o DNS do provedor, e em ambos os casos você deverá cadastar um ou mais DNS aqui. Na aba Dispositivo geralmente configuramos onde é que esta redirecionamo o mouse e com qual velocidade vamos trabalhar. Passo 3: Configuração do modem, gráficos e outras informações: Nesse procedimento, caso seja necessário passar algum parâmetro especial para o seu modem, na aba Modem clique no botão Comandos do Modem. Clique em Comandos do Modem e na janela que segue, em String de Discagem, digite ATDP caso sua linha seja PULSO, ou ATDT caso sua linha seja TOM; clique em OK para finalizar. Para verificar se a configuração do modem está correta, clique em Perguntar ao Modem. Surgirá então uma janela com as configurações do modem. Clique em OK. Na aba gráficos você apenas vai configurar algumas cores como fundo de tela cor de caracter, bytes recebidos e bytes enviados. E na aba Outros você tem algumas opções que lhe ajudará com sua conexão. Prontinho, agora de OK e quando aparecer a figura do passo 1 clique em conectar e se funcionar use qualquer navegador de sua preferência mas lembre-se que o netscape, o mozila e alguns outros você ainda vai ter que configura nas “preferências” dele o gateway, proxy e DNS, mas é só isso informe esses valores e pode ir “dormir as 04:00 da manhã”.

Serviço básico de ADSL
Para configurar um acesso básico de ADSL no Linux é muito simples se é isso que você quer fazer, ou seja, configurar as informações que seu provedor lhe forneceu e se conectar a Internet de banda larga. Porém lembre-se que você precisrá de duas placas de rede, uma normal que você usará para se conectar à rede interna e outra como você já deve saber será usada para acesso via LAN com ADSL ao seu provedor. Você precisará do pacote rp-pppoe e caso você não o tenha, você poderá baixar de www.roaringpenguin.com. Acompanhe os passos nessecários para configurar ADSL no sistema Linux: Execute o comando /usr/sbin/adsl-setup para cadastrar todas as informações necessárias do provedor, lembrando que o nome de usuario para conexões ADSL sempre será nome_usuario@provedor.com.br. As perguntas devem se respondidas de acordo com suas informações. Veja Exemplo de como fazer:
username: nome_do_usuário ethernet interface: eth1 demand value: no Dns 1: dns_primário Dns 2: dns_secundário Password: ****** > Placa de rede que será usada. > Verificar com seu provedor. > Verificar com seu provedor. > Digite sua senha.

142

Global Sul Informática

Com relação ao firewall, por enquanto configure-o, o nível e agora vamos ao passo mágico que é efetuar a conexão como comando /usr/sbin/adsl-start se deu certo aparecerá a mensagem “...Connected!” e para desconectar use o comando /usr/sbin/adsl-stop. Caso queira ver o status de sua conexão use o comando /usr/sbin/adsl-status. Viu só que coisa maravilhosa e simples né? Lembre-se de que a parte de rede já deverá estar configurada pois aqui é como se fosse um segundo passo de de configuração da rede. Agora use o Netscape ou outro navegador de sua preferência para se conectar ao mundo.

Configurando a impressora
A impressora é um dos periféricos mais importantes de qualquer usuário, experimente ficar sem ela pelo menos um dia e você vai descobrir quanta coisa você precisa imprimir, engraçado né? Bom, vamos aprender a configurar nossa impressora no sistema Linux. O sistema Linux tem vários utilitários para configuração de impressão, o linuxconf tem um módulo de configuração de impressão, há um utilitário chamado printtool, o gnome tem uma ferramenta para gerenciar impressão e o KDE também tem a ferramente dele. Mas o que usar então? Na verdade o que você precisa saber é qual servidor usar, pois o sistema Linux irá atuar como servidor de impressão mesmo que sua máquina não esteja em rede. O Linux servirá a impressão para o 127.0.0.1 que é o localhost, ou seja você mesmo. Já apareceram vários utilitário s “servidores” de impressão, mas o que está se consolidando é o CUPS – Commom Unix Printing System, ou seja é o sistema de impressão padrão Unix, pois com ele nós poderemos fazer os mais diversos tipos de configuração de impressora, seja ela local, remota, rede, Internet, samba, netware, Windows etc. No sistema Linux a porta da impressora é semelhante a porta do MS-DOS/Windows, ou seja, a porta de impressora é definida como lp0, lp1, lp2 e é um arquivo que aponta para um dispositivo e por isso fica no diretório /dev, e corresponde a LPT1, LPT2 e LPT3 no MS-DOS/Windows. Lá no capítulo 1 você aprendeu que o modo mais usado de redirecionamento é quando vamos criar um log do resultado da saída de um programa ou quando vamos imprimir um arquivo via linha de comando. Acompanhe alguns exemplos:
cat arquivo1.txt > /dev/lp0 cat < arquivo1.doc > /dev/lp0 cat arquivo1.txt | tee /dev/lp0 dmesg | lpr

Esses comandos imprimem via linha de comando diretamente na impressora, porém ela deverá estar configurada para isso, lembre-se e é isso que vamos aprender agora. Podemos também imprimir diretamente na impressora usando spool o qual tem o objetivo de liberar os programas do serviço de impressão. Para isso todo sistema Linux tem um processo (daemon) de impressão que normalmente é o comando lpr ou o lprng (recomendado). Veja um exemplo simples de uso de spool de impressão:
cat manual.txt | lpr cat < apostila.txt | lpr cat -n curso_linux.txt | lpr

O procedimento de imprimir via comando cat algumas vezes não nos dá o resultado esperado, pois é limitado em muitos aspectos e também muitas vezes os usuários não têm permissões de escrita nesses dispositivos. Então é aqui que entra uma outra ferramenta ao nosso serviço, o tal do comando lpr. Para usar esse comando, o sistema de impressoras já deve estar adequadamente configurado. Para imprimir use:
# lpr <nome_do_arquivo>

O comando lpr mandará o arquivo para uma fila de impressão, onde aguardará a sua vez de ser impresso. O comando lpr aceita diversos parâmetros que permitem especificar preferências, como o número de cópias para imprimir, qual impressora deve ser usada (no caso de haver várias impressoras disponíveis) ou mesmo os filtros a serem utilizados.

143

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

Ele também aceita dados pela entrada padrão, simplificando o uso de filtros e outros utilitários para mudar o aspecto da impressão:
cat <nome_do_arquivo> | lpr pr -2 -h CURSO DE LINUX -l60 nome_do_arquivo | lpr

Nesse último exemplo usou-se o comando pr para imprimir o arquivo escolhido em duas colunas, com o título CURSO DE LINUX e com 60 linhas por página. Uma outra ferramenta que pode atuar como filtro é o gs (ghostscript), que recebe como entrada um arquivo postscript e produz como saída caracteres interpretáveis por uma impressora não-postscript. A fila de impressão pode ser controlada com os comandos lpq, que mostra os trabalhos de impressão atuais e o lprm, que remove um trabalho de impressão caso você não o queira mais e ainda está em tempo de removê-lo. Temos também um pequeno utilitário que é o lpc e serve para gerenciar a fila de impressão. Todos esse comandos que você viu são comando do modo texto mas que funcionam dentro de um terminal no modo gráfico. O Gerência de Impressão cuida da fila de impressão e os trabalhos que nela se encontram; podese usar as ferramentas que vem com o programa lpr. Para que você possa fazer a gerência de impressão, existem alguns comandos em modo texto que são:
1. 2. 3. 4. 5. 6. 7. lp: Manda requisições para serviços de impressão LPRng. lpc: Programa de controle da impressora. lpd: É o processo (daemon) que controla a impressora. lpq: Programa que examina os spool de impressão. lpr: Serve para mandar os arquivos para a impressora. lprm: Remove trabalhos que estão na fila de impressão. lpstat: Mostra informações sobre o estado de impressões a partir do spool.

Veja o exemplo para mostrar documentos na fila de impressão:
[root@gabriel root]# lpstat HP656C-2 root 139264 HP656C-3 root 23552 Ter 21 Out 2003 23:06:56 BRT Ter 21 Out 2003 23:12:49 BRT

Veja o exemplo para mostrar impressoras que estão no sistema:
[root@gabriel root]# lpstat -v device for HP656C: ipp://hostname:631/ipp/ device for HP656c2: usb:/dev/usb/lp0

8. lpstyl: Controla o formato da impressão, qualidade, formato, margens etc. Ferramenta lpq : O comando lpq é usado para examinar a fila de impressão. Quando executado, ele produz a seguinte saída: “no entries”, se a fila de impressão estiver vazia, ou:
lp is ready an printing Rank Owner Job Files Total Size 1st bob 11 readme.txt 8556 bytes

Desta forma, é possível ver em que posição da fila está o arquivo de cada usuário. No caso de haver várias impressoras disponíveis, pode-se visualizar o estado da fila de impressão de uma determinada impressora, passando para o comando lpq um parâmetro auxiliar informando o nome da impressora que se deseja visualizar:
lpq -Pnome_da_impressora 2. lprm

O comando lprm é usado para eliminar entradas na fila de impressão. Sua sintaxe é simples lprm [-Pimpressora] [-] [arquivo #...] [usuario...] O parâmetro -P serve para especificar a impressora sobre a qual se quer atuar; o parâmetro “–” elimina todos os arquivos que estão na fila de impressão e que sejam do usuário que executa o comando. Se quem for executar o comando lprm é o usuário root, a fila de impressão esvazia-se; a opção ‘arquivo’ é utilizada para remover individualmente um dos arquivos presentes na fila de impressão.

144

Global Sul Informática

O número do arquivo (na fila de impressão) é obtido a partir do comando lpq (no indicador de coluna job); por último, o parâmetro “usuário” é de utilidade apenas para o usuário root. Através dele todos os arquivos específicos de um usuário podem ser removidos da fila de impressão. Ferramenta lpc : O comando lpc tem o seu uso do controle do sistema de impressão. Para cada uma das impressoras é possível:
a) b) c) d) Habilitar ou desabilitar uma impressora. Habilitar ou desabilitar uma fila de impressão. Alterar a ordem de impressão dos arquivos que estejam numa fila. Visualizar o estado de cada impressora e de sua respectiva fila de impressão.

Por exemplo, o comando lpc status produziria a seguinte saída:
lpc status lp: queuing is enable printing is enable 2 entries in spool area lp is ready an printing

O arquivo que cuida da configuração das impressoras é o /etc/printcap e é parecido com a seguinte listagem:
##PRINTTOOL3## LOCAL st800 360x360 a4 {} EpsonStylus800 Default 1 EPSON-ST-800:\ :if=/var/spool/lpd/lp/filter:\ :lp=/dev/lp0:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :sh: ##PRINTTOOL3## SMB st800 360x360 a4 {} EpsonStylus800 Default 1 EPSON-ST-650:\ :if=/var/spool/lpd/lp/filter:\ :lp=/dev/null:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :sh:

No exemplo acima podemos perceber que existem duas impressoras no sistema Linux. A EPSON-ST-800 é uma impressora local e a EPSON-ST-650 é uma impressora SMB; isso significa que é possível imprimir a partir de uma estação Windows em uma máquina Linux sem nenhum problema. A seguir veja alguns dos parâmetros desse arquivo:
sd: mx: sh: lp: if: Define o diretório de spool Define o tamanho máximo do arquivo (zero = ilimitado). Suprime impressão de cabeçalho de página. Nome do dispositivo de saída. Define filtro usado na impressão dos arquivos.

Filtros de impressão
Alguns programas no sistema Linux oferecem filtros de impressão para melhorar mais a qualidade das impressões. Esses programas permitem ao usuário liberdade de trabalho e flexibilidade no tratamento de diversos tipos de arquivos e os mais populares estão listados a seguir: Mpage Já o mpage pode ser muito útil. Ele permite imprimir várias páginas por folha, reduzindo consideravelmente o tamanho das listagens. Pode ser configurado para pôr molduras ou limites de texto e certas informações como dono do arquivo, a data ou título nos limites da folha. Com o mpage é possível criar um gerenciador de impressão no seu micro, criando um script simples pois ele captura uma entrada em arquivo texto ou em arquivo postscript e gera um outro postscript com duas, quatro ou oito páginas, agrupadas na mesma página isso é muito interessante quando você quer apenas um “rascunho” de seus trabalhos, com eu faço na Universidade para não gastar papel à toa. Para criar

145

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

um script é muito simples, nada que um pouco mais de conhecimento não resolva. Veja como criar um script chamado “mostra4” que tem o objetivo de imprimir em uma folha A4, quatro páginas do arquivo teste4.ps (arquivo postscript). Acompanhe:
#!/bin/bash mpage -4 -b A4 -a $1 > /tmp/teste4.ps gv /tmp/teste4.ps

Foi usado o interpretador de comandos bash e na segunda linha o comando mpage imprime quatro páginas em papel A4 recebendo o nome do arquivo em “$1” e usa o diretório temporário /tmp. Podemos imprimir duas, quatro ou até oito páginas de um arquivo por página A4. Gimp-print: É um recurso (plug-in) agregado ao Gimp presente nas mais recentes distribuições Linux, que oferece extrema qualidade de impressão. Como ele, o gerenciamento de cores e de tinta ficou muito mais fácil e em alguns casos a impressão é mais rápida do que a mesma impressora em ambiente Windows. Magicfilter É um programa de filtragem que, recebendo os dados que são enviados para a impressora, tenta “adivinhar” o tipo de dados a serem tratados. Em função do tipo do arquivo executa um filtro em especial (desde que este já se encontre instalado) e envia a saída para a fila de impressão. O Magicfilter possui um programa de configuração (magicfilterconfig) para cada filtro de cada impressora. A partir das informações passadas para ele, o magicfilterconfig cria o arquivo /etc/printcap de acordo com as referidas informações. A maioria dos programas para ambiente gráfico X11, incluindo o Netscape, Word Perfect, Gimp e Star Office trabalham nativamente com o magicfilter. Aspfilter É similar ao Magicfilter, só que nesse último os filtros são interpretados pela shell e não por um programa próprio. Ele também possui um programa de configuração interativo, mas diferente do Magicfilter. Ele primeiro procura filtros instalados no sistema para verificar se poderá imprimir determinado arquivo. Como o Magicfilter, ele cria o arquivo /etc/printcap, de maneira personalizada, de modo a corresponder ao(s) tipo(s) de impressora(s) instalada(s). Ghostscript O utilitário gs (ghostscript) é usado para traduzir a linguagem postscript para uma que a impressora conheça. Para isso, o gs precisa saber para que linguagem ele deve traduzir os dados recebidos, feito através do parâmetro device especificado. O Ghostscript usa o formato .ps que está se tornando uma padronização para a impressão de gráficos em ambiente Unix/Linux devido a sua boa qualidade da impressão, liberdade de configuração, gerenciamento de impressão feito pelo gs e por ser um formato universal, compatíveis com outros sistemas operacionais. Se você tiver o Ghostscript instalado, abra um terminal de dentro do modo gráfico e digite o comando gs <nome_arquivo.ps>, assim você poderá ler e trabalhar com seu arquivo .ps (arquivo post script). Vários aplicativo podem gerar arquivos em post script e em ambiente Windows podemos citar o Page Maker, Corel Draw, Illustrator, Autocad, Free Hand e até mesmo o pacote Office mas vamos lembrar que precisamos ter os drivers para isso e podemos encontrar esses drivers comerciais ou gratuitos na Internet. Para imprimir o arquivo “teste.ps” via linha de comando use o comando:
# gs -q -dSAFER -dNOPAUSE -sDEVICE=epson -r240x72 -s PAPERSIZE=legal -sOutputFile=/dev/lp0 teste.ps

Onde os parâmetros: -q, -dQUIET: Não mostra mensagens de inicialização do Ghost Script. -dSAFER: É uma opção para ambientes seguros, pois desativa a operação de mudança de nome e deleção de arquivo e permite somente a abertura dos arquivos no modo somente leitura. -dNOPAUSE: Desativa a pausa no final de cada página processada. -sDEVICE=dispositivo: Dispositivo que receberá a saída do Ghost Script. Neste local pode ser especificada a marca o modelo de sua impressora ou um formato de arquivo diferente (como pcxmono, bmp256) para que o arquivo .ps seja convertido para o formato designado. Para detalhes sobre os dispositivos disponíveis em seu Ghost Script, use o comando gs --help| less ou gs --help | gless (executa o less do modo gráfico) ou veja a página de manual. Outro utilitário

146

Global Sul Informática

interessante e importante do modo gráfico é o ggv o qual, meio que se parece com o acrobat reader, permite visualizar e imprimir arquivos em formato .ps com extrema qualidade. LPRng O LPRng – LPR Next Generation: O LPRng, escrito por Patrick Powell é a nova geração em relação ao LPR mais antigo, desenvolvido em Berkley, USA. Sendo mais completo, ele permite definir permissões de impressão, quotas e não é executado como setuid-root. Isso resolveu os buracos de segurança desnecessários do anterior. Por outro lado, esse programa é mais complexo. O LPRng não requer que a fila de impressão seja local e permitiu que os serviços de impressão fossem distribuídos através da NIS ou NIS+. Com o LPRng podemos facilmente gerenciar novos rótulos de impressora, pois ele foi projetado para suportar grandes infra-estruturas de impressão, impressão em rede, contas de impressão, dentre outras características.

Servidor de impressão CUPS e KDE
Você já pode perceber que podemos usar os mais diversos tipos de serviços de impressão, mas o que tem se firmado ultimamente é CUPS – Common Unix Printing System, ou seja é sistema de impressão padrão Unix. Ele é extremamente interessante pois é possivel configurar serviços para impressão local, em rede, remota e também via Web. Aqui nessa parte vamos ver a parte básica de configuração e empressão, pois utilitários e serviços baseados no CUPS são muito e não seria possível abordá-los por completo aqui. Como isso é um serviço, primeiramente devemos ter o pacote desse serviço intalado e depois devemos deixá-lo ativo pois somente assim poderemos configurá-lo e usá-lo como servidor e cliente de impressão. Poderemos deixá-lo ativo com o ntsysv ou em nossos arquivos rc´s. Somente para que você tenha uma idéia, o CUPS conta com mais de 1.500 (mil e quinhetas) impressoras, porém se sua impressora não estiver na lista dele, procure em www.linuxprinting.org e lá você com certeza encontrará sua impressora. Baixe o arquivo e o CUPS estará atualizado. O CUPS assim como seus arquivos estão no /etc. Veja seus principais arquivos:
cups, cups-calibrate, cups.lp, cups.lprm, cupsd, cups-config, cups.lpc, cups.lpstat, cupsdconf, cups-pcl3, cups.lpq, cupsWebAdmin, cupsdoprint, cups.cancel, cups.lpr, cupsaddsmb, cupstestppd.

Arquivos de configuração do CUPS:
a) classes.conf: Este arquivo contém informação para cada classe de impressora b) client.conf: Este arquivo fornece o nome do servidor padrão para máquinas clientes c) cupsd.conf : Este arquivo controla como o servidor cups trabalha. d) mime.convs: Este arquivo contém uma lista de filtros de conversão para arquivos padrão e) mime.types: Contém uma lista de formatos de arquivos padrão f) printers.conf : Este arquivo contém informações de cada impressora.

Vantagens do CUPS O CUPS fornece uma portável camada de impressão para sistemas operacionais baseados em sistemas Unix, fornecendo interface de linha de comando tanto no estilo System V como BSD. Ele usa o protocolo IPP – Internet Printing Protocol como base para o gerenciamento de trabalhos e filas de impressão, e outros protocolos como LPD – Line Printer Daemon, SMB – Server Message Block, AppSocket – JetDirect, são suportados com funcionalidades reduzidas. Ele ainda adicionou opções de impressão baseadas em PPD – Postscript Printer Description para suportar o mundo real de impressão do Unix. Além disso, o CUPS fornece uma interface Web, quotas, suporte a clientes IPP e LPD, suporte a encriptação, drivers de impressão baseados em PPD e vasta documentação e usa o IPP/1.1 para fornecer um completo e moderno sistema de impressão para Unix que pode ser extendido para suportar novas impressoras, dispositivos e protocolos enquanto fornece compatibilidade com as aplicações Unix existentes. E isso é o que está se tornando padrão em quase todas as distribuições Linux. O CUPS está se consolidando. Vantagens do IPP Como já sabemos o IPP é um protocolo de impressão pela Internet, esse é um novo protocolo de rede que fornece um conjunto comum de serviços de impressão, ou seja, você imprimir um documento de qualquer máquina no mundo para qualquer impressora no mundo usando IPP.

147

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

As principais vantagens do IPP em cima de outros protocolos como LPD e JetDirect é que além de todos eles poderem ser usados sobre a Internet hoje, acontece que o IPP fornece serviços que os outro não, como:
a) O IPP fornece várias opções de autenticação, você pode configurar servidor CUPS para aceitar somente trabalhos de alguns usuários. b) O IPP suporta controle de acesso, o qual restringe impressão de trabalhos, controle de trabalhos, controle de tamanho de arquivos, controle de grupos de impressão. c) O IPP fornece serviços de diretórios conhecido como printer browsing e apresenta configuração no estilo do Apache.

Configurando o CUPS pelo arquivo
Bom, agora nós já podemos dar inicio a configuração do CUPS. O primeira passo a ser feito é editar o arquivo /etc/cups/cupsdconf, o qual se parece muito com o jeito dos arquivos de configuração do servidor Apache. Esse arquivo é meio extenso mas sua configuração é bem simples. Se você entender bem esse arquivo você terá andado uns 90% na configuração do CUPS. Pois todos os utilitários de configuração do CUPS lêem e gravam informações nesse arquivo. Depois de feita as alterações/configurações no arquivo /etc/cups/cupsd.conf deveremos executar o comando cupsd que é o responsável por manter o CUPS ativado. Um detalhe que devemos atentar é de editar ou adicionar as linhas seguintes no arquivo /etc/cups/cupsd.conf para que seja possível a configuração:
# Permite que sua máquina via navegador execute # o configurador do CUPS. <Location /> Encryption IfRequested Satisfy All Order deny,allow Deny From All Allow From 127.0.0.1 # Permite impressão do localhost. Allow From 10.6.12.250 # Permite impressão somente ao 10.6.12.250. Allow From 10.6.12.* # Permite impressão a todos os usuários # dessa faixa de IP. </Location>

Isso fica dentro de uma seção chamada “Security Options” eno nosso caso está dizendo para o CUPS rejeitar toda e qualquer conexão que não seja originária de 127.0.0.1 e 10.6.12.250. Se você quiser adicionar mais máquinas, basicamente o que temos que fazer é adicionar mais linhas “Allow From”, seguido do IP da máquina. Depois não esqueça de salvar o arquivo e reinicie o CUPS no servidor e no cliente. Agora verifique com o comando lpstat -v. Se tudo correu bem, você já deve ter sua impressora funcionando e compartilhada para outros clientes Linux sem maiores dificuldades. Simples né? Já para a parte administrativa a configuração também é muito simples e fácil acompanhe o exemplo seguinte:
# Permite que sua máquina como administrador via navegador # execute o configurador do CUPS. <Location /admin> AuthType Basic AuthClass System Encryption IfRequested Satisfy All Order deny,allow Deny From All Allow From 127.0.0.1 Allow From 10.6.12.250 </Location>

Com isso já dá para você executar o comando cups-config ou cupsWebAdmin para dar inicio a configuração propriamente dita pois o que você acabou de fazer foi permitir que a máquina local (localhost ou 127.0.0.1) e a máquina local com IP (10.6.12.250) pudessem inciar a configuração. A seguir você tem uma

148

Global Sul Informática

listagem de um arquivo /etc/cups/cupsd.conf sem comentários, ou seja, somente as alterações que geram ações:
# # # # CUPS configuration file, generated by CUPS configuration tool. This tool is part of KDEPrint, the printing framework for KDE since version 2.2.2 and is used by the CUPS supporting module in KDEPrint.

ServerName gabriel.hackers.net ServerAdmin root@gabriel.hackers.net Classification unclassified ClassifyOverride No DefaultCharset ISO8959-1 DefaultLanguage pt Printcap /etc/printcap PrintcapFormat BSD RemoteRoot remroot SystemGroup sys ServerCertificate /etc/cups/ssl/server.crt ServerKey /etc/cups/ssl/server.key AuthType None <Location /> Encryption IfRequested Satisfy All Order deny,allow Deny From All Allow From 127.0.0.1 Allow From 10.6.12.250 </Location> <Location /admin> AuthType Basic AuthClass System Encryption IfRequested Satisfy All Order deny,allow Deny From All Allow From 127.0.0.1 Allow From 10.6.12.250 </Location> HostnameLookups Off KeepAlive On KeepAliveTimeout 60 MaxClients 100 MaxRequestSize 0m Timeout 300 Listen *:80 Listen *:631 AccessLog /var/log/cups/access_log ErrorLog /var/log/cups/error_log PageLog /var/log/cups/page_log MaxLogSize 9999m LogLevel info PreserveJobHistory On PreserveJobFiles Off AutoPurgeJobs No MaxJobs 500 MaxJobsPerPrinter 0 MaxJobsPerUser 0 User lp Group sys RIPCache 8m FilterLimit 0 DataDir /usr/share/cups DocumentRoot /usr/share/cups/doc FontPath /usr/share/cups/fonts RequestRoot /var/spool/cups ServerBin /usr/lib/cups ServerRoot /etc/cups

149

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

TempDir /var/spool/cups/tmp Browsing On BrowseProtocols CUPS BrowsePort 631 BrowseInterval 30 BrowseTimeout 300 BrowseAllow 10.6.12.250 BrowseDeny All BrowseOrder deny,allow ImplicitClasses On ImplicitAnyClasses Off HideImplicitMembers Yes BrowseShortNames Yes maxcopies 100 printcapgui /usr/bin/glpoptions maxclientsperhost 10

Bom, acho que você com um pouco de paciência lendo e estudando esse arquivo vai perceber que na verdade não é difícil de se configurar esse servidor de impressão. Existem inúmeros utilitários para fazer essas configurações, tanto pelo modo texto quanto pelo modo gráfico e também via navegador. Resumindo os principais arquivos do servidor de impressão CUPS:
cups-calibrate: Serve para calibrar o uso de tintas e para imprimir usando o CUPS em conjunto com o filtro de impressão gimp-print. cups.lp, cups.lprm, cups.lpr: Serve para mandar arquivos para o serviçõ de impressão. cupsd: Disponibiliza o CUPS “no ar”. cups-config: Faz configurações no servidor. cups.lpc, cups.lpq, cups.lpstat, cupsdoprint, cups.cancel: Serviçõs de impressão como status, impressão, lista e cancelamento. cupsdconf: É o arquivo de confoguração propriamente dito. cupsWebAdmin: Executa o Netscape para configuração via navegador. cupsaddsmb: Permite configuração para o servidor Samba. cupstestppd: Faz teste de impressão para ver se tudo está certo.

Configurando o CUPS pelo cups-config
Você aprendeu a configurar o arquivo /etc/cups/cupsdconf agora vai achar mais fácil ainda configurar pelo modo gráfico. Vamos ao nosso passo a passo: Passo 1: Abra um terminal e execute o comando cups-config e siga os procedimentos necessários. Passo 2: Defina o nome do servidor, a senha do administrador, Qual é a classificação desse servidor na rede, a padronização dos caracteres e seu idioma, o formato de impressão e se vai ser usado printcap. Passo 3: Aqui entre outras coisas defina se vai ter busca por nome de máquina na rede. Número máximo de cliente nesse servidor e quais portas o servidor ficará ouvindo por requisições. Você também poderá configurar uma porta sua em particular. Passo 4: Se por um acaso puder existir um usuário não participante de sua rede (usuário não cadastrado) e mesmo assim você quer permitir que ele use o servidor esse usuário poderá logar-se com usuário remroot para poder ter acesso aos recursos do servidor. Passo 5: Aqui você somente precisará confirmar onde é que realmente ficarão os arquivos de log, o servidor de impressão, número máximo de trabalhos no servidor, número máximo de trabalhos por impressora, número máximo de trabalhos por usuário e controlar o histórico de trabalhos e removê-los da fila após posterior impressão. Passo 6: Informe de existe um usuário em especial para usar o servidor de impressão e confirme os diretórios padrão como: diretórios de dados, documentos, fontes extras, arquivos do servidor e arquivos temporários. Passo 7: E por último você configura as opções de navegação e habilita o servidor para usar qualquer navegador com conjunto como CUPS e SLP, define a porta a ser usada, tempo de navegação, quais máquinas podem e quais não podem usar os serviços do servidor e a regra de navegação que proíbe tudo para depois checar quem é que pode alguma coisa. Pronto! Foi ou não foi fácil configurar o servidor de impressão CUPS dessa maneira? Agora você poderá ver o arquivo /etc/cups/cupsdconf para ver onde é que suas alterações feitas aqui fizeram modificações no arquivo.

150

Global Sul Informática

Agora algo interessante, o konqueror poderá usar recursos em conjunto com o servidor CUPS e até mesmo efetuar as configurações como adicionar e configurar impressoras. Para isso vá até Configurações ð Carregar perfil de navegação do Gerenciamento de arquivos. Agora clique no último botão do lado esquerdo e depois clique em Sistema de Impressão. Pronto, você também agora tem um novo meio de configuração de impressora. Se você tem uma impressora mas essa não aparece na listagem do servidor, você pode-se acessar o endereço www.linuxprinting.org e verificar se sua impressora é compatível ou não. Ou então se você quiser acabar mesmo com todas as suas dúvidas sobre impressão em sistemas Linux, eu lhe dou essa listagem:
– – – – – – www.cups.org/ghostscript.php, www.cups.org/ http://printing.kde.org/, http://localhost:631/ http://cups.sourceforge.net/xpp/, http://gtklp.sourceforge.net/ www.xmlsoft.org/, http://gimp-print.sourceforge.net/ www.adobe.com/products/printerdrivers/winppd.html www.kyz.uklinux.net/cabextract.php3

Configurando a impressora pelo KDE
O que nós vimos até aqui foi como configurar o servidor de impressão e a impressora e como deixá-lo no ar. Agora nós vamos aprender como é que configuraremos nossa impressora pelo KDE que usará recursos do servidor CUPS ou de outros servidores. Para isso você poderá usar o centro de controle do KDE (kcontrol) ou poderá ser mais direto executando o comando kaddprinterwizard. Vamos fazer isso segundo um guia visual passo a passo: Passo 1: Execute o comando mencionado e na segunda tela você deverá escolher qual o tipo de impressora você vai instalar. Os tipos de impressoras que podemos ter são: Impressora local (Local printer), Fila remota de impressão (Remote LPD queue), Impressora compartilhada via samba para ambiente Windows/Linux (SMB shared printer), Impressora de rede (Network printer), Impressora usando servidor remoto CUPS (Remote CUPS server). O CUPS permite impressão via Internet e Impressora de rede usando IPP, ou seja é possível imprimir via Internet. Agora escolha em qual porta está sua impressora. Só isso. Passo 2: Após, você deverá escolher o fabricante o modelo de sua impressora. Caso ela não aparecer, escolha um modelo compatível mas se mesmo assim não der certo, vá até uma daquelas páginas e tente baixar o driver de sua impressora, ou veja se o fabricante também não dispõe de um driver de impressão para Linux. Se sua impressora suportar recursos de postscript marque a opção e se usar impressão genérica (RAW), não precisar de driver de impressão. Passo 3: Após esse procedimento você poderá clicar no botão Test para fazer um teste de impressão ou clicar no botão Settings para definir alguns ajustes como tamanho da página, modo de impressão etc. Passo 4: Define se vai ter mensagens de início e fim de impressão e depois quantos dias essa impressora vai estar ativar e limite para tamanho de arquivo e de páginas. Passo 5: Agora já estamos quase terminado, só esta faltando configurar quais são os usuários que podem usar essa impressora (Allowed users)e quais não podem usar essa impressora (Denied users), e depois deveremos cadastar um nome e uma descrição para a nossa impressora, e no campo Location geralmente colocamos o IP da impressora ou o nome da máquina em que ela se encontra embora isso não seja obrigatório. A próxima tela apresenta informações sobre a impressora e agora terminamos de configurar nossa impressora. Viu que fácil. Pode recarregar os cartuchos e terminar sua “eterna monografia.” Quando você estiver imprimindo, a caixa de diálogo que aparace é o kprinter, clique em Opções do Sistema para que essa caixa se amplie e você terá um série de opções de controle de qualidade de impressão, criação de arquivo PDF, agendamento de impressão, escolha do servidor etc. As informações dessa caixa de diálogo pode mudar de acordo com sua impressora, assim como acontece no ambiente Windows. Concluindo o que nós aprendemos aqui, podemos perceber que em se tratando de impressão o sistema Linux está muito bem servido. O único detalhe é que nós devemos tomar cuidado para não se perder em tantas opções assim. Use apenas um ambiente de impressão, como por exemplo o gerenciador de impressão do KDE que é extremamente completo e oferece inúmeras possibilidades de configuração para o usuário.

151

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

Configurando o vídeo
A configuração do vídeo no sistema Linux é diferente do Windows. Geralmente no Linux o usuário escolhe uma resolução de vídeo e trabalha com ela, dificilmente ele ficará trocando os modos de vídeo, profundidade de cores, e por falar em cores parece-me que no sistema Linux as cores são mais saturadas que no Windows, ou seja elas são mais vivas, você poderá fazer um teste abrindo a mesma imagem no Windows e no Linux e fazendo uma análise. No sistema Linux o modo gráfico, nós chamamos de “X” ou “X11” e a filosofia deste é semelhante ao Windows, as operações básicas com janelas são iguais: fechar, arrastar, soltar, maximizar, minimizar. Alguma coisa novas e melhores você encontrará no modo gráfico dependendo de qual gerenciador você estiver usando. Mas nada disso funcionará se você não configurar certo a sua placa de vídeo. O modo gráfico pode ser iniciado de duas maneiras: 1. Modo automático (init 5): Usando ou o programa xdm ou kdm ou gdm que é um utilitário que vai cuidar do login no sistema, entre com o nome do usuário e senha correta e será iniciada uma sessão X com o gerenciador escolhido por você ou o default do seu sistema. O gdm (Gnome) e o kdm (KDE) permitem uma série de configurações e você poderá escolher os gerenciadores instalados. O xdm carregará um configurado por você ou executará o default do sistema. 1. Modo manual (init 3): Através do comando startx, ou xinit . Aqui seu login acontece primeiro no modo texto, entrando no sistema com nome de usuário e senha. Para que você personalize qual gerenciador de janelas você quer que o comando startx execute edite/crie o arquivo .xinitrc que ficará no $HOME do usuário. Veja o exemplo:
# arquivo .xinitrc exec xterm & exec gimp & exec windowmaker

No exemplo o xterm e o Gimp serão carregados juntos com o gerenciador de janelas WindowMaker. Para efetuarmos a configuração de vídeo no sistema Linux é simples e fácil. Em princípio é um pouco diferente do ambiente Windows, no qual você troca de resolução e profundidade de cores dentro do próprio Windows.
DICA: Para sair do modo gráfico é muito fácil, combine Alt + Backspace, isso também é útil se alguma deu errado e o modo gráfico é carregado e aparece somente um atela cinza e mais nada, assim o Linux voltará ao modo texto (runlevel 3) a não ser que ele esteja configurado para já entrar no modo gráfico (runlevel 5), então você deverá proceder combinando Control+Alt+F2 ou F3, F4 ou uma outra console que você tenha disponível.

Quando estiver na console, use o comando init 3 para que o modo gráfico seja “derrubado”, espere alguns segundos e se a console não for liberada combine Control+C que estará tudo certo. Caso você mais de uma resolução de cor poderá mudar entre uma e outra usando a combinação Control+Alt+*, isso é particularmente interessante pois há alguns jogos que usam 256 cores, não sei porque sendo que hoje a qualidade que nós usando é 24 bits de cor. Depois que você fez isso, poderá usar um dos seguintes comandos: 1. Xconfigurator: Configurador padrão em modo texto para o modo gráfico. É o mais conselhável pois você poderá efetuar suas configurações atravé de uma interface interativa em modo texto. 2. xf86config: Um dos primeiros configuradores, ele nos faz perguntas e nós respondemos conforme sabemos as informações sobre o nosso hardware. Esse configurador não configura somente o vídeo, configura teclado, mouse etc. Ele não foi traduzido, mas você encontrará uma documentação traduzida dele na Internet. 3. XF86cfg: É um novo configurador chamado pela linha de comando que abre um ambiente gráfico para você fazer as configurações, aqui também é possível fazer outras configurações além das de vídeo. A configuração é muito simples, clique com o botão direito sobre o ícone do monitor para configurar opções para o monitor e do mesmo modo sobre a placa de vídeo para configurá-la. O modeline servirá para configurar mais um monitor se necessário e seu display bem como sua posição. Depois de fazer suas configurações não se esqueça de gravar.

152

Global Sul Informática

Há também o XF86Setup que faz configurações semelhantes ao XF86cfg, mas ele não tem aparecido mais nas distribuições. E as distribuições mais recentes a configuração já dá-se pelo modo gráfico. Depois que você já estiver em modo texto, é bom usar uns comandos que buscam informações sobre sua placa de vídeo e sobre o seu monitor, pois essas informações geralmente não sabemos. Você sabe qual é a freqüência que seu monitor trabalha? Você sabe qual é a taxa de varredura (atualização) do seu monitor? É muito comun quando estamos configurando o modo X, colocarmos a famosa tela virtual, que é diferente de desktop virtual. Tela virtual é uma tela maior que que a área do seu vídeo, assim quando você chegar nas bordas deste a tela se deslocará para mostrar mais área de tela . No início é legal mas depois aborrece e não fica produtivo. Se você quiser retirar a tela virtual do seu ambiente gráfico edito o arquivo /etc/X11/XF86Config, comente a linha correspondente a sua configuração atual que começa com Virtual e apenas comente-a com um # no inicio da linha. Ah! Desktop virtual é como se fosse vários monitores um ao lado do outro assim quando um encher de janelas você pula para o outro e esse está limpinho. Veja isso na barra do KDE, do Gnome, do Enlightenment, IceWm, AfterStep enfim, praticamente todos os gerenciadores de janelas do Linux tem o seu Desktop virtual. Você pode escolher mais de uma resolução para uma mesma profundidade de cores, 1024x768 e 800x600. Caso tenha sido configurado via comando xf86config por exemplo, a tela sempre irá assumir a resolução mais alta por padrão e ao se escolher a menor, ficará com tela virtual. Depois dessas informações é hora de usar o Xconfigurator que é muito simples de usar, pois a configuração ocorrerá pelo modo interativo, ou seja, ele “tenta” encontrar de forma automática todas as configurações de sua máquina (monitor e placa de vídeo). Os usuários do sistema Linux geralmente escolhem qual será a resolução para trabalhar e fim de papo. Não é como no ambiente Windows, que se pode mudar a resolução a qualquer momento. No entanto, nada o impede de escolher três resoluções e três profundidades de cores. Para alternar entre as resoluções você poderá combinar Control+Alt++ ou Control+Alt+— e para mudar entre as profundidades de cores use Control+Alt+*. Você também poderá carregar o modo gráfico direto na profundidade de cor desejada da seguinte maneira, mas isso somente se sua placa permitir esse tipo de inicialização:
startx startx startx startx -----bbp -bbp -bbp -bbp 8 16 24 32 Para Para Para Para 8 bits de cor. 16 bits de cor. 24 bits de cor. 32 bits de cor.

As configurações que são feitas pelo Xconfigurator são gravadas em /etc/X11/XF86Config ou /etc/X11/XF86Config-4 para o XFree 4.0.
# XFree86 4.0 configuration generated by Xconfigurator # Área do mouse e do teclado. Section "ServerLayout" Identifier "XFree86 Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection # Por padrão Linux não usa o xfs Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/default/TrueType" FontPath "/usr/share/fonts/default/URW" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" ModulePath "/usr/X11R6/lib/modules" EndSection

153

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

# Área de carregamento de módulos. Section "Module" Load "dbe" # Double-buffering Load "GLcore" # OpenGL support Load "dri" # Direct rendering infrastructure Load "glx" # OpenGL X protocol interface Load "extmod" # Misc. required extensions Load "freetype" Load "speedo" Load "type1" # Load "pex5" # PHIGS for X 3D environment (obsolete) # Load "record" # X event recorder # Load "xie"# X Image Extension (obsolete) EndSection # Área de modelo de teclado e layout. Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbModel" "abnt2" Option "XkbLayout" "br" EndSection # Área de modelo de mouse, portas e resolução. Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Device" "/dev/mouse" Option "Protocol" "Microsoft" Option "Emulate3Buttons" "on" Option "ZAxisMapping" "4 5" EndSection # Área de informações do monitor Section "Monitor" Identifier "SAM1035" VendorName "Unknown" ModelName "Unknown" HorizSync 30 - 61 VertRefresh 50 - 120 Option "dpms" EndSection # Área de modelo da placa de vídeo on-board. Section "Device" Identifier "SiS 620" Driver "sis" BoardName "Unknown" EndSection # Área de frame-buffer Section "Device" Identifier "Linux Frame Buffer" Driver "fbdev" BoardName "Unknown" EndSection # Área que informa a resolução de trabalho e profundidade de cores. Section "Screen" Identifier "Screen0" Device "SiS 620" Monitor "SAM1035" DefaultDepth 16 Subsection "Display" Depth 16 Modes "1024x768" EndSubSection EndSection Section "DRI" Mode 0666 EndSection

154

Global Sul Informática

Anotações:

155

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

Anotações:

156

Global Sul Informática

Capítulo 9

Configuração básica da interface de rede
Agora vamos entrar numa das partes mais interessantes do sistema Linux que é a configuração da interface de rede e a rede propriamente dita. Ao contrário de que muita gente pensa a configuração de rede TCP/IP1 no sistema Linux é muito fácil e podemos efetuar uma configuração bem sucedida por diversos meios:
1. 2. 3. 4. Manual através da edição dos arquivos de configuração. Manual através de comandos de configuração. Interativa pelo modo texto. Interativa pelo modo gráfico.

Nós podemos trabalhar com até 4 (quatro) placas de rede simultaneament no sistema Linux de modo bem natural e do mesmo modo que você configura o primeiro cartão de rede configura-se o restante apenas cuida o que cada configuração poderá fazer: muilti IP, firewall, ADSL etc. Apesar de, nos dias de hoje praticamente todos os computares mesmo em empresas pequenas estarem conectado em rede, graças as implantações TCP/IP feita pelo Windows, muita gente ainda não tem uma noção concreta do que é e para quase serve. Uma rede é a conexão de dois ou mais computadores com o objetivo de compartilhar recursos entre um computador e outro. E esses recursos podem ser: 1. Compartilhamento diretórios ou todo seu disco rígido com outros computadores/usuários da rede. Usuários acessarão seu disco rígido como se fosse um disco local. Chamamos isso de servidor de arquivos. Ah! Quando falamos em rede o termo servidor e cliente são bem comuns e fáceis de ser entendido. O servidor “serve” algo, ou seja, se ele for servidor de arquivo o cliente que “busca” os arquivos poderá e fazer de maneira transparente. O servidor de web, serve páginas solicitadas pelos clientes. O servidor de impressão, permite que clientes imprimam na impressora desse servidor. E por aí vai. Entendeu? 3. Compartilhamento de acesso a Internet, também chamado de servidor Proxy. Os usuários poderão navegar, ler/mandar emails, jogar (Counter Strike, Half Life, Unreal, quake 3, 4 etc) de forma fácil e segura. 4. Compartilhamento de uma impressora com outros usuários. Agora você já sabe o que é. 5. Há uma série de tipos de servidores que podemos fazer como sistema Linux isso vai depender da nossa necessidade. Uns são bem fáceis de ser configurados, outros dão mais trabalhos. A comunicação entre computadores em uma rede é feita através do Protocolo de Rede. Há vários tipos de protocolos IPX, NetBEUI, TCP/IP. O Linux trabalha com todos eles porém o mais usado no mundo inteiro é o TCP/IP até porque é o protocolo usado na Internet. É esse “carinha” que vamos conhecer nas próxima páginas.

O modelo base OSI
O Modelo de Referência OSI – Open Systems Interconnection, é um modelo de referência de uma arquitetura estabelecida de modo a possibilitar uma maior compatibilidade entre diferentes plataformas. O modelo OSI, criado pela ISO – International Organization for Standardization, que divide a comunicação das redes em camadas essa preocupação surgiu com a necessidade de integração entre diferentes redes de computadores. A maioria dos protocolos de implementação adotam um menor número de camadas, agrupando camadas as redundantes facilitando assim a compreensão embora o modelo OSI não seja difícil de se entender. Não são todos os sistemas de rede que o utilizam exatamente do forma como ele é oferecido. O modelo OSI é dividido em 7 (sete) camadas diferentes. Toda informação a ser enviada parte da camada mais

157

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

alta que é a camada de “Aplicação” e que é a de número sete. E segue-se então pelas demais camadas que incluem, uma a uma, novas informações de controle. Essas informações de controle é que são responsáveis pela maior compatibilização entre máquinas de tecnologias diferentes, e são encaminhadas juntamente com a informação real para as demais estações da rede. A camada mais baixa determina o meio físico através do qual a mensagem irá trafegar, logo percebemos que o modelo OSI, assim como outros, especifica padrões de software e hardware a serem implementados pelos fabricantes. Quando a mensagem atinge o seu destino, novamente ela passa através das mesmas camadas, só que inversamente até chegar ao nível mais alto. Veja a tabela seguinte para um melhor compreensão das camadas.
Modelo OSI CAMADA 7 6 5 4 3 2 1 DESCRIÇÃO Aplicação: Serviços de rede Apresentação: Apresentação de dados Sessão: Estabelece o elo de comunicação entre a origem e o destino Transporte: Conecta processos em computadores diferentes Rede: Fornece o endereço de uma máquina na rede Enlace de Dados: Agrupa bits para transmissão Fisica: Hardware que compõe uma rede

No modelo OSI cada camada possui tarefas específicas a serem realizadas, incluindo informações de controle à mensagem de tal forma que o nó responsável pelo seu envio, e conseqüentemente o nó que irá recebê-la, saiba como manipulá-la. Essas informações de controle são armazenadas numa área da mensagem chamada de cabeçalho (header), e podem incluir informações de endereçamento, controles que bloqueiam a sobrecarga que estações mais lentas eventualmente sofreriam ao tentar receber mensagens provenientes de estações mais rápidas, informações para controle e depuração de erros e outras mais. Deve ficar entendido aqui que uma camada somente irá se comunicar com as suas camadas adjacentes, e toda informação de controle armazenada em uma camada do nó que está enviando a mensagem será utilizada na decodificação da mensagem na camada equivalente do nó que está recebendo (logo, toda informação de controle armazenada durante a passagem da mensagem na camada cinco somente será reconhecida pelo nó destinatário quando aquela estiver atravessando a camada cinco do mesmo). Muitos protocolos implementados pelos fabricantes não utilizam todas as sete camadas do modelo OSI, o TCP/IP é um desses casos, o que não impede o funcionamento correto da rede. Um determinado fabricante pode considerar desnecessário aplicar, à nível de software, toda uma série de testes na verificação e depuração de possíveis erros por considerar o meio físico de comunicação suficientemente confiável. Isto eliminaria alguma funcionalidade, mas iria tornar o tráfego da mensagem mais rápido. Normalmente, as camadas do modelo OSI são agrupadas em três grupos:
1. Camada de Aplicação – responsável pela interface com o usuário, que corresponde à camada sete; 2. Camadas para Decodificação – responsáveis pela “tradução” da linguagem humana em uma linguagem compreensível pela máquina, onde as informações de controle são acrescentadas à informação real, que englobam as camadas seis, cinco, quatro e três; e finalmente as 3. Camadas que providenciam a Conexão Física, que são as de número dois e um. Note que o sentido parte do emissor que são as camadas mais altas para o receptor que são as camadas mais baixas.

158

Global Sul Informática

Informações sobre camadas
Camada 7 – Aplicação: A camada de aplicação é usada para aquelas aplicações que são especificamente escritas para percorrer a rede e também proporciona ao sistema operacional, serviços completos para suportar aplicações. Deve também providenciar todos os serviços diretamente relacionados aos usuários. Camada 6 – Apresentação: A camada de apresentação é responsável por codificar dados estruturados de acordo com o formato interno do transmissor a um formato adequado à transmissão dos mesmos e depois decodificá-los. Camada 5 – Sessão: A camada de sessão permite a usuários em máquinas diferentes estabelecerem sessões entre eles. Camada 4 – Transporte : A principal função da camada de transporte é aceitar dados da camada de sessão, dividí-los se necessário em unidades compactas, transferi-las à camada de rede e garantir que os pedaços cheguem corretamente do outro. Camada 3 – Rede: Trabalha com o controle de tráfego dos dados entre todos os dispositivos da rede e permite que unidades de dados sejam transmitidos para outras redes. Camada 2 – Enlace: Trabalha com verificação de erros e regulação de tráfego. Camada 1 – Física: Trabalha com a transmissão pura e simples de bits através de um canal de comunicação. O fluxo de dados através das camadas é feito de acordo com a figura seguinte, ou seja, o fluxo parte da camada mais superior e vai descendo até a camada mais inferior e depois vai subindo até a camada mais superior novamente até chegar na máquina destino. :: Fluxo de dados em representação de camadas.

TCP/IP um pouco de teoria
Antes de partirmos para a configuração que eu sei que você está doido para aprender, vamos ter um pouco de teoria, para entender com oé que tudo isso funciona. Introdução ao TCP/IP A plataforma TCP/IP surgiu através dos trabalhos do DARPA – Defense Advanced Research Projects Agency, dos Estados Unidos, em meados da década de 70, constituindo a ARPANET, que mais tarde se desmembrou em ARPANET, para pesquisa, e MILNET, para instituições militares. Para encorajar os pesquisadores universitários a adotar o TCP/IP, o DARPA fez uma implementação de baixo custo, integrando-o ao UNIX, da Universidade de Berkeley (BSD), já em uso em todas as universidades americanas. Além disso, teve-se o cuidado de definir aplicações de rede similares às já conhecidas em Unix, como rusers e rcp. Mais tarde a NSF – National Science Foundation, estimulou o seu crescimento criando a NSFNET, que ligava centros de supercomputação espalhados por todo o país, numa rede de longa distância, também com os protocolos TCP/IP. Existe um grupo chamado IAB – Internet Activities Board, o qual coordena os esforços de pesquisa na área, através de vários grupos de trabalho. A documentação dos trabalhos, proposta para novos

159

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

protocolos ou alteração de outros já existentes, é feita através de artigos conhecidos como RFCs – Request for Comments. Propostas ainda em estudos são chamadas de IEN – Internet Engineering Notes ou Internet Drafts. Tanto as RFCs quanto as IENs são numeradas seqüencialmente e em ordem cronológica. São distribuídas pelo SRI-NIC, órgão que executa várias tarefas administrativas na Internet. Histórico do TCP/IP:
a) b) c) d) e) f) g) Criado pelo DARPA em meados de 1970. Surgimento da ARPANET e da MILNET. Integração ao UNIX/BSD. Surgimento da NSFNET. Comitê Organizador – IAB. Documentação – RFCs e IENs. SRI-NIC.

IP – Internet Protocol
Não é confiável, pois a entrega não é garantida, sem controle de seqüenciamento, não detecta erros nem informa o transmissor. É orientado a pacote — “connectionless”, como é chamado: cada pacote é tratado independentemente dos outros. É “bem-intencionado”, os pacotes só são descartados quando todos os recursos são exauridos. A unidade básica, que é o datagrama, é quebrada em fragmentos para se adequar ao MTU do hardware. Apresenta o TTL – Time-To-Live onde cada datagrama tem um campo que diz que após determinado tempo o datagrama pode ser descartado. Cada gateway decrementa 1 ao recebê-lo e a cada segundo, se o TTL = 0, o datagrama é retornado. Compreendendo a numeração dos IP´s Vamos aprender aqui como funciona a atribuição numérica para a interface de rede. Essa atribuição numérica, que é chamada de número/endereço IP – Internet Protocol, é simples de ser entendida. O endereço IP são números que identificam seu computador em uma rede interna (intranet) ou externa (Internet). Podemos imaginar o IP como um número de telefone. O IP é composto por quatro bytes e a convenção de escrita dos números é chamada de “notação decimal pontuada”, pois o ponto “.” também faz parte dessa numeração. Por convenção e padronização, cada interface que é a placa de rede do computador ou roteador tem um endereço IP. Também é permitido que o mesmo endereço IP seja usado em mais de uma interface de uma mesma máquina, mas normalmente cada interface tem seu próprio endereço IP. As redes do protocolo Internet são seqüências contínuas de endereços IP´s. Todos os endereços dentro da rede têm um número de dígitos dentro dos endereços em comum. A porção dos endereços, que são comuns entre todos os endereços de uma rede, são chamados de porção da rede. Os dígitos restantes são chamados de porção dos hosts que podem também ser entendidos como máquinas. Os números de bits que são compartilhados por todos os endereços dentro da rede são chamados de netmask (a famosa máscara da rede) e o papel da netmask é determinar quais endereços pertencem ou não à rede. Por exemplo, veja esse estudo:
Endereço do Host Máscara da Rede Porção da Rede Porção do Host Endereço da Rede Endereço Broadcast = = = = = = 192.168.150.24 255.255.255.0 192.168.150. .24 192.168.150.0 192.168.150.255

Classes de rede IP
Por razões administrativas, após algum pouco tempo no desenvolvimento do protocolo IP alguns grupos arbitrários de endereços foram formados em redes que foram agrupadas no que foram chamadas de classes. Essas classes armazenam um tamanho padrão de redes que podem ser usadas. Sobre o endereçamento IP podemos entender:
a) Distribuídos pelo SRI-NIC. b) Representados em notação decimal.

160

Global Sul Informática

c) Intervalo de 0.0.0.0 a 255.255.255.255. d) A máscara separa parte “rede” da parte “máquina” e segue o mesmo padrão numérico do número IP. e) Endereço de rede e de máquina com valor 0 (zero) são inválidos. f) O 127.0.0.0 é reservado para teste de loopback (máquina local). g) Porções do endereço formada por 1's é considerada um broadcast. h) São divididos em classes para melhor compreensão e resolução de problemas. i) Todos pertencem ao protocolo IPV4, mas o IPV6 já está sendo implantado.

Como os endereços IP codificam a rede e a máquina dentro da rede, eles não especificam uma máquina, mas sim uma conexão à rede. Aí temos um problema: Se uma máquina muda de uma rede para outra, o seu endereço IP também deve mudar. O endereço IP broadcast é mapeado ao broadcast do hardware. Os gateways usam o endereço de rede para o roteamento de datagramas IP. A parte “máquina” do endereço identifica unicamente uma estação dentro de uma rede específica. As faixas alocadas para redes válidas (Internet) são:
CLASSE A B C MÁSCARA DE REDE 255.0.0.0 255.255.0.0 255.255.255.0 ENDEREÇO 0.0.0.0 – 127.255.255.255 128.0.0.0 – 191.255.255.255 192.0.0.0 – 233.255.255.255 224.0.0.0 – 239.255.255.255

MULTICAST 240.0.0.0

As faixas alocadas para redes inválidas (intranet, sua rede) são:
CLASSE A B C MÁSCARA DE REDE 255.0.0.0 255.255.0.0 255.255.255.0 ENDEREÇO 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 192.168.0.0 – 192.168.255.255

DICA: Para evitar problemas futuros, você deve decidir primeiramente qual será a “largura” de sua rede e então escolher a classe de rede que será usada. Desse modo a administração é muito mais fácil de ser realizada.

Na implementação atual, que é o IPv4 (Internet Protocol v. 4.0) de números IP, os números consistem em 4 bytes (8 bits) — dando um total de 32 bits de informação disponível. Isso resulta em números que são especialmente grandes (mesmo quando escritos em numeração decimal). Então, para leitura e razões organizacionais, os números IP são usualmente escritos na notação quaternária. O número IP 192.168.1.24 é um exemplo disso: quatro números (decimais) separados por “.” (pontos). Então descobrimos que o número IP é um número gigante, por assim dizer, de 32 bits divididos em quatro partes de 8 bits. Como cada um desses quatro números é a representação decimal de um byte de 8 bits, cada um dos quatro números pode variar de 0 a 255 (isso abrange 256 valores e lembre-se de que zero é também um valor). Adicionalmente, parte do número IP de um servidor identifica a rede na qual o servidor reside, e os ‘bits’ restantes do número IP identificam o servidor, a interface de rede. Exatamente quantos bits são usados pela rede ID e quantos são disponíveis para identificar servidores (interfaces) nesta rede, determinase 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 4 3 2 1 DESCRIÇÃO Aplicação Transporte Internet Rede

Uma arquitetura de rede é definida pelas camadas ou níveis que a compõem, pela interface entre essas camadas e pelas regras de comunicação entre camadas de mesmo nível em máquinas distintas, regras estas conhecidas como protocolo. Isso é importante pois o objetivo dessa divisão em camadas é permitir a modularização do programa/aplicativo, permitindo que as alterações sejam localizadas e transparentes aos outros níveis não afetados. Quando um programador desenvolve um sistema multiusuário cliente/servidor, seu aplicativo usa todas essas camadas mas nem por isso ele precisa ser doutro nesse assunto, apenas precisa dominar seu programa no nível da aplicação, pois o restante é feito pelo próprio hardware e também o aplicativo em conjunto com o sistema operacional em uso. Os módulos de software de protocolo em cada máquina podem ser representados como camadas empilhadas. Cada camada cuida de uma parte do problema, e pelo menos não é tão difícil de ser entendido. Existem duas regras importantes para o entendimento da divisão do software de rede em camadas: A camada inferior fornece serviços á camada superior, aqui as coisas começam por baixo e vai subindo. O protocolo de nível N no nó destino tem que receber o mesmo objeto enviado pelo protocolo de nível N no nó origem. Conforme você pode observar na tabela anterior, a arquitetura TCP/IP possui apenas 4 (quatro) níveis, mas são os 7 (sete) níveis do modelo OSI: O nível 1 é a interface de rede, o nível 2 é camada Internet ou camada IP, o nível 3 é a camada de transporte e o nível 4 é a camada da aplicação. Compare as duas tabelas OSI x TCP/IP mas lembre-se que o modelo OSI é o que serve de referência.
Modelo OSI CAMADA 7 6 5 4 3 2 1 DESCRIÇÃO Aplicação Apresentação Sessão Transporte Rede Enlace Fisica 1 Rede 3 2 Transporte Internet 4 Aplicação TCP/IP CAMADA DESCRIÇÃO

Quando você se refere ao nível 1, você está trabalhando com o meio de comunicação, utilizando endereços físicos, ou seja, a parte hardware dessa história toda. Os níveis 2 e 3 são incorporados ao sistema operacional, deixe que ele cuide disso. O nível 4 pode ser escrito por usuários (programados, analistas etc). Os níveis 2,3 e 4 usam endereços IP. Você perce claramente a transposição de camadas do modelo OSI e do TCP/IP. Alguns autores chamam a camada 2 do TCP/IP de camada inter-rede.

162

Global Sul Informática

Resumo das três classes de números IP:
Classe A A classe A de números de rede IP usa os 8 bits mais a esquerda (o quarto mais à esquerda) para identificar a rede, deixando 24 bits (os três quartos restantes) para identificar as interfaces de servidores nesta rede. Endereços classe A sempre têm o bit mais à esquerda do byte mais à esquerda zero (este é um valor decimal de 0 a 127 do primeiro quarto). Então, existe um máximo de 128 números de rede classe A disponíveis, com cada um deles contendo até 33.554.430 possíveis interfaces. Contudo, as redes 0.0.0.0 (conhecidas como rota padrão) e 127.0.0.0 (a rede de repasse) têm significados especiais e não estão disponíveis para uso para identificar redes. Logo, existem somente 126 números disponíveis de rede classe A. Classe B A classe B de números de rede IP usa os 16 bits mais à esquerda (os dois quartos mais a esquerda) para identificar a rede, deixando 16 bits (os dois últimos quartos) para identificar interfaces de servidores. Endereços da classe B sempre têm os 2 bits mais à esquerda do byte mais à esquerda determinado para 1 0. Isso deixa 14 bits para especificar o endereço de rede dando 32.767 redes de classe B disponíveis. A rede de classe B tem, desta forma, uma gama de 128 a 191 para o primeiro dos quartos, com cada rede contendo até 32.766 interfaces possíveis. Classe C Os números de rede IP da classe C usam os 24 bits mais à esquerda (os três bytes mais à esquerda) para identificar a rede, deixando 8 bits (o byte mais à direita) para identificar as interfaces de máquina. Endereços da classe C sempre iniciam com os 3 bits mais à esquerda determinados para 1 1 0 ou uma gama de 192 a 255 para o quarto mais à esquerda. Assim sendo, existem 4.194.303 números de rede classe C disponíveis, cada um contendo 254 interfaces (as redes classe C com o primeiro byte maior que 223 são contudo reservadas e indisponíveis para uso).

ICMP – Internet Control Message Protocol
ICMP permite que gateways enviem mensagem de erro ou de controle para outros gateways ou máquinas e provê comunicação entre o protocolo Internet (IP) em uma máquina e o IP em outra. Porém, muitas vezes não ajuda a localizar onde está o erro, pois ele responde apenas a máquina que originou o pacote errôneo e o erro pode estar em algum gateway no caminho. Pode ser perdido como qualquer outro pacote IP. Como é que isso funciona Todo computador precisa ter um nome (gabriel, adilson, mitinik etc), pertencer a um domínio (edfutura.com.br, uol.com.br, terra.com.br etc) ou a um grupo de trabalho (Linux, Windows, UNIP etc), precisa também ter uma numeração IP (10.6.12.250, 200.213.197.183 etc), precisa também se necessário de um servidor DNS que também vai ter nome, dominio, IP etc. Se necessário mais uma vez, vai precisar de um gateway, ou seja, um outro micro que vai fazer “a ponte” entre ele uma outra rede ou a Internet. Bom, sabendo de todas essas coisas, acho que você já percebeu que se você quiser instalar uma máquina Linux em uma rede TCP/IP existente então você precisará saber ou definir o seguinte:
Endereço IP de sua máquina + dominio Endereço IP da rede Endereço IP de broadcast Máscara da Rede IP Endereço do Roteador Endereço do Servidor de Nomes (DNS)

Analogia do OSI com o TCP/IP: A seguir você tem a tabela completa de comparação de funcionamento entre o modelo OSI e o Modelo TCP/IP, perceba que a compreensão entre ambos é muito simples, precisando apenas de alguns minutos de estudos.

163

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

COMPARAÇÃO DO OSI COM A PILHA DE PROTOCOLOS TCP/IP
Nº OSI Nome da camada OSI Nº TCP/IP Nome da camada TCP/IP Unidades de encapsulamento Protocolos TCP/IP em cada camada TCP/IP Utilitários TCP

7 6  5  4  3  2  1 

Aplicação

4
Apresentação Sessão Transporte Rede Enlace de dados (LLC e MAC) Física

Aplicação

Dados

FTP, HTTP usam o TCP como transporte SMTP, DNS e TFTP Telnet, Rlogin usam o UDP como transporte TCP ou UDP  

3 2 1

Transporte Internet Rede (interface)

Segmentos Pacotes (datagramas) Quadros Bits

IP, ICMP, ARP, RARP

Ping, Traceroute

Topologia de redes
Elaborar um projeto de rede não é apenas ter os cabos, os hubs, os switches e sair ligando um no outro. Primeiro é preciso um estudos, para ver desde quantos metros de cabos vão ser gastos até qual é a melhor estratégia de posicionamento dos computadores. Esse estudo chama-se topologia de rede, e é o que vamos aprender agora.

Topologia em Estrela
Neste tipo de rede, todos os usuários comunicam-se com uma estação (nodo) central a qual tem o controle de supervisão do sistema, essa estação central, pode ser chamada de host. Através dessa estação os usuários podem se comunicar entre si e com processadores remotos ou terminais. A disposição em estrela é a melhor escolha se o padrão de comunicação da rede for de um conjunto de estações secundárias que se comunicam com a estação central. Vai que ocorre uma falha em uma estação ou no elo de ligação com a estação central, apenas esta estação vai ficar fora de operação. Mas, vai que a falha ocorre na estação central, então todo o sistema pode ficar fora do ar. O desempenho obtido numa rede em estrela depende da quantidade de tempo requerido pela estação central para processar e encaminhar mensagens, e da carga de tráfego de conexão, ou seja, é limitado pela capacidade de processamento da estação central. Esta configuração facilita o controle da rede e a maioria dos sistemas de computação com funções de comunicação possuem um aplicativo que implementa esta configuração. :: Topologia em estrela.

164

Global Sul Informática

Topologia em Barra
Nesta configuração todos as estações se interligam ao mesmo meio de transmissão. A “barra” é geralmente compartilhada em tempo e freqüência, permitindo transmissão de informação. Nas redes em barra comum, cada nó conectado à barra pode ouvir todas as informações transmitidas. Esta característica facilita as aplicações com mensagens do tipo difusão (para múltiplas estações ao mesmo tempo). Existem uma variedade de tipos de mecanismos para o controle de acesso à barra pode ser centralizado ou descentralizado. A técnica adotada para acesso à rede é a multiplexação no tempo. Em controle centralizado, o direito de acesso é determinado por uma estação especial da rede. Em um ambiente de controle descentralizado, a responsabilidade de acesso é distribuída entre todas as estações. Nas topologias em barra, as falhas não causam a parada total do sistema. O desempenho de um sistema em barra comum é determinado pelo meio de transmissão, número de estações conectadas, controle de acesso, tipo de tráfego entre outros fatores. O tempo de resposta pode ser altamente dependente do protocolo de acesso utilizado. :: Topologia por barramento.

Topologia em Anel
A topologia de rede em anel consiste de estações conectadas através de um caminho fechado onde nessa configuração, muitas das estações remotas ao anel não se comunicam diretamente com o computador central. As redes em anel são capazes de transmitir e receber dados em qualquer direção, mas as configurações mais usuais são unidirecionais, de forma a tornar menos sofisticado os protocolos de comunicação que asseguram a entrega da mensagem corretamente e em seqüência ao destino. Quando um mensagem é enviada por um nodo, ela entra no anel e circula até ser retirada pelo nó destino, ou então até voltar ao nó fonte, dependendo do protocolo empregado. O último procedimento é mais desejável porque permite o envio simultâneo de um pacote para múltiplas estações. Outra vantagem é a de permitir a determinadas estações receber pacotes enviados por qualquer outra estação da rede, independentemente de qual seja o nó destino. Os maiores problemas desta topologia são relativos a sua pouca tolerância a falhas. Qualquer que seja o controle de acesso empregado, ele pode ser perdido por problemas de falha e pode ser difícil determinar com certeza se este controle foi perdido ou decidir qual nó deve recriá-lo. Erro de transmissão e processamento podem fazer com que uma mensagem continue eternamente a circular no anel. Esta configuração requer que cada nodo seja capaz de remover seletivamente mensagens da rede ou passá-las adiante para o próximo nó. Nas redes unidirecionais, se uma linha entre dois nodos cair, todo sistema sai do ar até que o problema seja resolvido. Se a rede for bidirecional, nenhum ficará inacessível, já que poderá ser atingido pelo outro lado.

165

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

:: Topologia em anel.

Sistema Linux, a configuração
Bom, agora que nós já temos uma boa base teórica do funcionamento de uma rede e seus protocolos, vamos por a mão na massa. Caso você queira se aprofundar em redes eu lhe aconselho as seguintes literaturas:
— Redes de Computadores, Andrew S. Tanenbaum/Editora Campus. — Guia Completo de Cabeamento de Redes , José Maurício Pinheiro / Editora Campus. — Networking Redes de Computadores: Teoria e Prática, Bruce A. Halberg / Editora Alta Books. — Redes de Computadores: da Ethernet à Internet, Alexandre Fernandes de Moraes e Antonio C. Cirone / Editora Érica. — Protocolos e Aplicações para Redes de Computadores, Claude Falbriard / Editora Érica. — Utilizando na Prática: Internet e Redes de Computadores, Almir Wirth / Editora Alta Books. — Projeto E Arquitetura De Redes, J. F. Dimarzio / Editora Campus. — Redes de Computadores (Curso completo), Gabriel Torres / Editora Axcel.

Você vai descobrir agora nessas próximas páginas que é super simples (agora) a configuração de uma rede no sistema Linux. Você pode fazer efetuar a configuração editando os arquivos de configuração e depois derrubando e levantando processos, pode efetuar uma configuração via modo texto interativo e também pelo modo gráfico. Você vai aprender todos eles, prepare-se. Para que o Linux funcione em uma rede você vai precisar das seguintes informações, o item 5 e 6 não será necessário se você não os tiver:
1. 2. 3. 4. 5. 6. Endereço IP de sua máquina. Endereço IP da rede. Endereço IP de broadcast. Máscara da Rede IP. Endereço do Roteador. Endereço do Servidor de Nomes (DNS).

A interface de rede
A interface de rede nada mais é do que o seu cartão ou a sua placa de rede. Todas as interfaces de rede Linux estão no diretório /dev e a maioria é criada dinamicamente pelos aplicativos quando são requisitadas. Um desses casos é a interfaces ppp e plip que são criadas dinamicamente pelos aplicativos quando precisam efetuar uma conexão. Veja a identificação de algumas interfaces de rede no Linux.
eth0, eth1...: Placa de rede Ethernet e WaveLan. ppp0, ppp1...: Interface de rede PPP (protocolo ponto a ponto). slip0, slip1...: Interface de rede serial. eql: Balanceador de tráfego para múltiplas linhas.

166

Global Sul Informática

plip0, plip1...: Interface de porta paralela. arc0e, arc1s..: Interfaces Arcnet. fddi?: Interfaces de rede FDDI. nr0: Interface Net Rom.

Para maiores detalhes sobre essas interfaces, leia o documento NET3-4-HOWTO do Linux, ele tem informações bem mais completas sobre elas.

A interface loopback
Quando você instala o sistema Linux, mesmo que seja em um único computador e esse não tem acesso a nem um outro, mesmo assim ele comporta-se como se estivesse em rede pois essa é a naturaza do sistema. A interface loopback é um tipo especial de interface que permite fazer conexões com você mesmo, ou seja, looback é você. Para que serve isso, simples, serve para testar conexões, alguns programas “precisa” estar em rede digamos assim usam a interface loopback, assim, por exemplo, você pode testar vários programas de rede sem interferir com ninguém em sua rede. O endereço IP 127.0.0.1 foi escolhido especificamente para a loopback, até mesmo o Windows tem esse endreço, meio camuflado mas tem. Assim se abrir uma conexão telnet, ftp, ssh parao loopback (127.0.0.1), abrirá uma conexão para o próprio computador local. A abreviação de loopback é “lo”, e o seu micro local você poderá chamar de localhost e o seu dominio local você poderá chamar de localdomain. A configuração da interface loopback é super simples e normalmente feita pelos scripts padrões de inicialização existentes em sua distribuição. Porém se você quiser configurá-la via linha de comando use:
# ifconfig lo 127.0.0.1

Pronto, com o comando ifconfig você acabou bem rapidino de atribuir o IP 127.0.0.1 para a interface loopback e para o sei localhost. Mas isso não quer dizer que ela esteja nor ar. Para isso você deverá digitar:
# ifconfig lo up

Esse comando “levanta” o loopback e
# ifconfig lo down

Esse comando “derruba” o loopback. Seguindo essa idéia, você poderá fazer isso para qualquer interface em seu sistema, eth0, eth1, ppp0, ppp1 etc.

DICA: Caso você queira usar algum aplicativo de rede: telnet, ssh, ftp, samba etc eles somente funcionarão se a interface estiver no ar.

Para testar se o loopback está configurado use o comando ifconfig lo:
lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

O uso do comando ifconfig pode ser entendido da seguinte maneira: ifconfig interface [aftype] opções | endereços. Onde interface é a interface de rede que você deseja configurar como eth0, eth1 etc. O [aftype] é o parâmetro que você deverá passar para o comando. As opções são endereços, ou seja, o nome ou endereço IP da máquina (um nome de máquina será traduzido para um endereço IP) da interface. Esse parâmetro é necessário, apesar da sintaxe atualmente não requisitá-lo.

167

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

Veja um exemplo de configuração com o comando ifconfig:
# ifconfig eth0 192.168.150.5 netmask 255.255.255.0 broadcast 192.168.150.5 up

Caso o seu sistema não inicie as configurações de rede automaticamente, você deverá colocar o comando acima nos arquivos de inicialização de sua distribuição que ficam em /etc/rc.d/ e deverá usar o comando ntsysv para habilitar as seguintes opções (o que necessário para você):
a) b) c) d) e) d) inet: Cuida dos serviços de rede. network: É a rede em si. httpd: Servidor web básico se for usar recursos via browser. smd: Se for usar o servidor Samba. portmap e nfs: Se for usar NFS. sshd: Se for usar SSH em conexões.

Os principais arquivos
Primeiramente, precisamos saber quem são e onde estão esses arquivos mágicos de configuração. a) /etc/hosts Esse arquivo guarda o IP, o nome+domínio e o apelido de uma máquina na rede e um comentário para ela. É importante para uma pequena empresa cadastrar suas máquinas nesse arquivo, pois ele será lido antes de partir para um DNS da vida. Exemplo:
127.0.0.1 10.6.12.1 10.6.12.2 10.6.12.3 10.6.12.4 10.6.12.5 10.6.12.6 localhost mygateway.hackers.net mydns.hackers.net adilson.hackers.net gabriel.hackers.net sonizia.hackers.net mitnick.hackers.net mygateway mydns adilson # gabriel # sonizia # mitnick # # Gataway # DNS Server Mutibetter Extends MyLove 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 edfuturanet bonannet 127.0.0.0 213.197.183 10.6.12.1

Quando você usar o comado route, será verificado se o destino é uma rede e esta rede se encontra no arquivo /etc/networks, então o comando route mostrará o nome da rede ao invés de seu endereço. f) /etc/sysconfig/network-scripts/ifcfg-lo Esse arquivo informa o dispositivo local, que é o seu micro (DEVICE=lo), o endereço local padrão dele (IPADDR=127.0.0.1), a máscara de rede para esse endereço (NETMASK=255.0.0.0), o endereço de rede (NETWORK=127.0.0.0), o broadcast (BROADCAST=127.255.255.255), se sempre estará ativa (ONBOOT=yes) e o nome para a interface (NAME=loopback). Exemplo:
DEVICE=lo IPADDR=127.0.0.1 NETMASK=255.0.0.0 NETWORK=127.0.0.0 BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback

f) /etc/sysconfig/network-scripts/ifcfg-etho Esse arquivo informa o dispositivo da interface, que é o seu micro (DEVICE=eth0), se sempre estará sempre ativa (ONBOOT=yes), se precisa de protocolo especial para boot (BOOTPROTO=“none”), o endereço padrão IP configurado da interface (IPADDR=10.0.0.5), a máscara de rede para esse endereço (NETMASK= 255.255.255.0) e o gateway que poderá ser a sua máquina ou um servidor DNS (GATEWAY=10.6.12.1). As configurações da sua primeira placa de rede ou interface de rede que é chamada de eth0 ficam armazenadas em /etc/sysconfig/network-scripts/ifcfg-eth0. Exemplo:
DEVICE="eth0" ONBOOT="yes" BOOTPROTO="none" IPADDR="10.6.12.150" NETMASK="255.255.255.0" GATEWAY=10.6.12.1

g) /etc/protocols Esse arquivo guarda todos os protocolos que sua rede Linux poderá usar para efetuar comunicação em uma rede interna e externa. Exemplo:

169

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

# # # # # # # #

/etc/protocols: $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $ Internet (IP) protocols from: @(#)protocols 5.1 (Berkeley) 4/17/89 Updated for NetBSD based on RFC 1340, Assigned Numbers IP # internet protocol, pseudo protocol number ICMP # internet control message protocol IGMP # Internet Group Management GGP # gateway-gateway protocol ST # ST datagram mode TCP # transmission control protocol EGP # exterior gateway protocol PUP # PARC universal packet protocol UDP # user datagram protocol HMP # host monitoring protocol 22 XNS-IDP # Xerox NS IDP RDP # "reliable datagram" protocol 29 ISO-TP4 # ISO Transport Protocol class 4 XTP # Xpress Tranfer Protocol DDP # Datagram Delivery Protocol 39 IDPR-CMTP # IDPR Control Message Transport RSPF #Radio Shortest Path First. VMTP # Versatile Message Transport OSPFIGP # Open Shortest Path First IGP IPIP # Yet Another IP encapsulation ENCAP # Yet Another IP encapsulation

ip 0 icmp 1 igmp 2 ggp 3 st 5 tcp 6 egp 8 pup 12 udp 17 hmp 20 xns-idp rdp 27 iso-tp4 xtp 36 ddp 37 idpr-cmtp rspf 73 vmtp 81 ospf 89 ipip 94 encap 98

h) /etc/services Esse arquivo guarda todos os serviços que a máquina loval poderá usar, conhecido como mapeamento de serviços. Cada serviços está disponibilizado em uma porta, que poderá estar ouvindo (listen) pedidos de conexões de usuários. Caso você não queira disponibilizar um serviço momentaneamente mas precisa da rede no ar, edite esse arquivo e comente “#” a linha do serviço que voce quer desabilitar naquele momento. A seguir parte co arquivo, para que você entenda seu conteúdo pois ele é muito extenso. Exemplo:
# /etc/services: # $Id: services,v 1.4 1997/05/20 19:41:21 tobias Exp $ # # Network services, Internet style # tcpmux 1/tcp # TCP port service multiplexer tcpmux 1/udp compressnet 2/tcp # Management Utility compressnet 2/udp compressnet 3/tcp # Compression Process compressnet 3/udp echo 7/tcp # Echo echo 7/udp ... systat11/tcp users # Active Users systat11/udp users ... ftp-data 20/udp ftp 21/udp # File Transfer [Control] ftp 21/tcp #fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp telnet23/tcp # Telnet telnet 23/udp # # smtp 25/tcp mail # Simple Mail Transfer smtp 25/udp mail sql*net 66/tcp # Oracle SQL*NET sql*net 66/udp bootps67/tcp # BOOTP server

170

Global Sul Informática

gopher70/tcp # Internet Gopher gopher70/udp ... finger 79/tcp # Finger finger 79/udp www-http 80/tcp www http # WorldWideWeb HTTP www-http 80/udp www http hosts2-ns 81/tcp # HOSTS2 Name Server hosts2-ns 81/udp ... kerberos 88/tcp kerberos5 krb5 # Kerberos v5 kerberos 88/udp kerberos5 krb5 # Kerberos v5 ... linuxconf 98/tcp # Linuxconf web interface ... hostnames 101/tcp hostname # usually from sri-nic hostnames 101/udp hostname ... pop-2 109/tcp postoffice # POP version 2 pop-2 109/udp postoffice pop-3 110/tcp pop3 # POP version 3 pop-3 110/udp sunrpc111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc111/udp portmapper ... ntp 123/tcp # Network Time Protocol ntp 123/udp ... netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp sql-net 150/tcp # SQL-NET sql-net 150/udp ... vmnet 175/tcp # VMNET vmnet 175/udp ... https 443/tcp # MCom https 443/udp # MCom cups 631/tcp # cups cups 631/udp doom 666/tcp # doom Id Software doom 666/tcp # doom Id Software lotusnote 1352/tcp # Lotus Note lotusnote 1352/udp # Lotus Note linx 1361/tcp # LinX linx 1361/udp # LinX ms-sql-s 1433/tcp # Microsoft-SQL-Server ms-sql-s 1433/udp # Microsoft-SQL-Server ms-sql-m 1434/tcp # Microsoft-SQL-Monitor ms-sql-m 1434/udp # Microsoft-SQL-Monitor ... mysql 3306/tcp # (not in RFC1700) MySQL mysql 3306/udp # (not in RFC1700) MySQL ...

Bom, acho que com esse arquivo exemplo já dá para entender como é que funciona, coisa que é muito simples. Nesse arquivo cada coluna separada por uma tabulação ou por espaço, isso vai depender de como você edita esse arquivo, significa o seguinte: a) Coluna 1 – Nome do serviço: É o nome que o daemon (processo) usará quando estiver no ar. b) Coluna 2 – Porta: Número de porta é como se fosse o número de uma casa em uma rua, sendo o nome do sistema de computadores, o nome da rua. Normalmente, a porta é um número bem conhecido que está associado a um serviço particular. c) Coluna 3 – Protocolo: O protocolo especifica a forma através da qual o serviço pode ser alcançado e como a comunicação entre o cliente e o servidor é efetuada. Geralmente isso é tcp para conexões e udp para mensagens.

171

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

d) Coluna 4 – Aliases para serviço: O serviço pode ser conhecido por outros nomes. Eles são especificados aqui.

DICA: As portas “conhecidas” vão até 1.024 depois dessas até a porta 65.535 você poderá usar a porta que quiser e nomeá-las a gosto. Mas cuidado com programas que usam portas acima de 1.024 para que não entrem em conflito com as que você definir.

São exemplos de serviçõs de rede com suas respectivas portas:
Porta Porta Porta Porta Porta Porta Porta 21: FTP – transferência de arquivos. 23: Telnet – terminal virtual remoto. 25: Smtp – envio de e-mails. 53: DNS – resolvedor de nomes. 79: Finger – detalhes sobre usuários do sistema. 80: Http – www – transferência de páginas da web. 110: Pop-3 – recebimento de mensagens.

i) /etc/inetd.conf Esse arquivo cuida dos serviços que são carregados para a memória somente quando são solicitados. Há um processo (daemon) que é chamado inetd que lê as configurações deste arquivo e permanece residente na memória, esperando pela conexão das máquinas clientes, se uma conexão é solicitada, o daemon inetd verifica as permissões de acesso nos arquivos /etc/hosts.allow e /etc/hosts.deny e carrega o programa servidor correspondente no arquivo /etc/inetd.conf. Um arquivo também importante neste processo é o /etc/services que faz o mapeamento das portas e nomes dos serviços o qual nós já vimos. Alguns programas servidores como é o caso de servidores ftp, telnet, talk, etc oferecem a opção de serem executados como daemons ou através do do arquivo /etc/inetd.conf. É recomendável escolher inetd se o serviço não for solicitado freqüentemente. Para habilitar um serviço, descomente a linha que ele se encontra. Veja a seguir uma listagem desse arquivo:
... #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #time stream tcp nowait root internal #time dgram udp wait root internal # # These are standard services. # #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd # # Shell, login, exec, comsat and talk are BSD protocols. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #comsat dgram udp wait root /usr/sbin/tcpd in.comsat #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd # # Pop and imap mail services et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #pop3s stream tcp nowait root /usr/sbin/ipop3d ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd #imaps stream tcp nowait root /usr/sbin/imapd imapd # ... ...

172

Global Sul Informática

# # Authentication # auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o # # Linuxconf Web Interface: # linuxconf stream tcp wait root /bin/linuxconf linuxconf —http # # End of inetd.conf

Os módulos da interface de rede
No sistema Linux nós temos os módulos que podem ser “derrubados” e “levantados”, ou seja, eles funcionam de modo semelhante aos “drivers” do ambiente Windows, mas com a diferença de que aqui você pode usá-los apenas quando precisar realmente deles, tornando-se assim um melhor gerenciamento. Por exemplo, se você só vai usar o zip-drive no final do expediente, por que então ficar com ele carregado e gastando memória o dia inteiro? Levante-o apenas no fim da tarde e faça o seu backup, entendeu? Módulo kmod (KDE): Este é o programa usado para carregar os módulos automaticamente quando são requeridos pelo sistema. Ele é um processo (daemon) que funciona constantemente fazendo a monitoração. Quando verifica que algum dispositivo ou programa está solicitando o suporte a algum dispositivo, ele carrega o módulo correspondente. Exibindo informações sobre módulos O relacionando de módulos é feito com o comando lsmod. Se você quiser saber quais módulos estão carregados, basta usar o comando que relaciona quais módulos estão carregados atualmente pelo kernel. A listagem feita pelo comando lsmod é uma alternativa ao uso do comando cat/proc/modules, onde também você encontrará informações sobre módulos no seu sistema. O diretório /proc não existe fisicamente gravado em seu sistema, ele é na verdade um diretório “lógico” montado pelo kernel para gerenciamento de um monte de informações. Veja o comando lsmod em ação:
Module appletalk ipx sis900 nls_iso8859-1 nls_cp437 vfat fat i810_audio soundcore ac97_codec w9968cf videodev lvm-mod usb-ohci usbcore ext3 jbd ide-disk ide-probe-mod ide-mod Size Used by Not tainted 23492 1 (autoclean) 19748 1 (autoclean) 14028 1 (autoclean) 3452 1 (autoclean) 5084 1 (autoclean) 11404 1 (autoclean) 34520 0 (autoclean) [vfat] 21896 0 5892 2 [i810_audio] 11880 0 [i810_audio] 19808 0 (unused) 7488 0 [w9968cf] 57664 0 18888 0 (unused) 67904 1 [w9968cf usb-ohci] 60544 3 45524 3 [ext3] 11140 5 9864 0 176192 5 [ide-disk ide-probe-mod]

A coluna Module indica o nome do módulo que está carregado; a coluna Size indica o tamanho que esse módulo usará em memória; a coluna Used mostra quais módulos estão usando aquele recurso. O parâmetro (autoclean) no final da coluna indica que o módulo foi carregado manualmente através do comando insmod ou modprobe ou através do kmod, e será automaticamente removido da memória quando não for mais usado. O comando modinfo é útil para mostrar informação sobre um módulo do kernel e tem o seu funcionamento entendido da seguinte maneira # modinfo [opções] <arquivo_de_módulo>. Ele examina o arquivo objeto <arquivo_de_módulo> associado com um módulo do kernel e mostra qualquer informação que ele possa reunir. Veja como usar o comando modinfo para extrair mais informações do módulo cmpci, que é o módulo de uma placa de som CMI8339 on-board.

173

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

# modinfo cmpci filename: /lib/modules/2.4.5-9cl/kernel/drivers/sound/cmpci.o description: "CM8x38 Audio Driver" author: "ChenLi Tien, cltien@cmedia.com.tw" parm: mpu_io int, description "(0x330, 0x320, 0x310, 0x300) Base of MPU-401, 0 to disable" parm: fm_io int, description "(0x388, 0x3C8, 0x3E0) Base of OPL3, 0 to disable" parm: spdif_inverse int, description "(1/0) Invert S/PDIF-in signal" parm: spdif_loop int, description "(1/0) Route S/PDIF-in to S/PDIF-out directly" parm: speakers int, description "(2-6) Number of speakers you connect" parm: use_line_as_rear int, description "(1/0) Use line-in jack as rear-out" parm: use_line_as_bass int, description "(1/0) Use line-in jack as bass/center" parm: joystick int, description "(1/0) Enable joystick interface, still need joystick driver"

Os módulos no sistema Linux são arquivos já compilados que têm extenção “.o”; por exemplo o arquivo “cmpci.o” é um arquivo de módulo e quando ele não está compilado geralmente tem como extensão “.c”, ou seja, arquivo de programa fonte em linguagem C. Outro comando útil é o lspci que exibe uma listagem do seu hardware pci:
00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0740 (rev 01) 00:01.0 PCI bridge: Silicon Integrated Systems [SiS] 5591/5592 AGP 00:02.0 ISA bridge: Silicon Integrated Systems [SiS]: Unknown device 0962 (rev 25) 00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] 00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] SiS7012 PCI Audio Accelerator (rev a0) 00:03.0 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f) 00:03.1 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f) 00:03.3 USB Controller: Silicon Integrated Systems [SiS]: Unknown device 7002 00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet (rev 91) 00:0e.0 Communication controller: Lucent Microelectronics: Unknown device 048c (rev 02) 01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS]: Unknown device 6325

Removendo módulos Para remover um módulo do sistema é super-simples; primeiro você deverá usar o comando lsmod para saber o nome do módulo e depois usar o comando rmmod <módulo> para que o módulo seja removido da memória. Veja exemplos:
# rmmod cmpci # rmmod rtl8139 # rmmod ne2k

Inserindo módulos O comando insmod carrega um módulo manualmente. Para carregar módulos que dependem de outros módulos para que funcionem, você tem duas opções: carregar os módulos manualmente ou usar o modprobe que verifica e carrega as dependências correspondentes. O comando insmod funciona da seguinte maneira insmod [módulo] [opções_módulo]. Onde: módulo: É o nome do módulo que será carregado. Onde opções_módulo: Opções que serão usadas pelo módulo. Variam de módulo para módulo, alguns precisam de opções outros não, tente primeiro carregar sem opções; caso seja mostrada uma mensagem de erro verifique as opções usadas por ele. Exemplo:
# insmod ne io=0x300 irq=10 # rmmod cmpci # rmmod rtl8139

Carregando módulos O comando modprobe carrega um módulo e suas dependências manualmente. Esse comando permite carregar diversos módulos e dependências de uma só vez. O comportamento do comando modprobe é modificado pelo arquivo /etc/modules.conf, o qual você poderá verificar na listagem a seguir:
alias parport_lowlevel parport_pc alias block-major-58 lvm-mod

174

Global Sul Informática

alias block-major-109 lvm-mod alias block-major-43 off alias loop0 loop alias char-major-108 ppp_generic alias /dev/ppp ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate alias ppp ppp_async alias rtl8139 8139too alias autofs autofs4 alias sound-slot-0 i810_audio post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 alias usb usb-ohci alias eth0 sis900

O comando modprobe funciona da seguinte maneira modprobe [módulo] [opções_módulo]. Onde módulo: É o nome do módulo que será carregado. opções_módulo: Opções que serão usadas pelo módulo e também variam de módulo para módulo. Alguns precisam de opções outros não; tente primeiro carregar sem opções. Caso seja mostrada uma mensagem de erro verifique as opções usadas por ele.

DICA: Nem todos os módulos são carregados corretamente pelo comando modprobe. O módulo plip, por exemplo, mostra uma mensagem sobre porta I/O inválida; mas não mostra no caso de ser carregado pelo comando insmod. Exemplo: modprobe ne io=0x300 irq=10; modprobe sb io=0x220 irq=5 dma=1 dma16=5 mpuio=0x330.

Verificando dependência de módulos O comando depmod verifica a dependência de módulos. As dependências dos módulos são verificadas pelos scripts em /etc/init.d usando o comando depmod -av e o resultado gravado no arquivo /lib/ modules/versão_do_kernel/modules.dep. Essa checagem serve para que todas as dependências de módulos estejam corretamente disponíveis na inicialização do sistema. O comportamento do depmod pode ser modificado através do arquivo /etc/modules.conf. Exemplo depmod -av. Isso executará uma verificação completa de dependência de módulos no seu sistema Linux e isso poderá chegar a dezenas de linhas, mas fique tranquilo: tudo isso é muito rápido, pode chegar a uns cinco segundos no máximo. Configuração de módulos O comando modconf permite um meio mais fácil de configurar a ativação de módulos e opções através de uma interface através de menus. Selecione a categoria de módulos através das setas acima e abaixo e pressione Enter para selecionar os módulos existentes. Serão pedidas as opções do módulo (como DMA, IRQ, I/O) para que sua inicialização seja possível. O comando modconf apresenta uma auto-detecção, mas isso deixa o sistema um pouco mais lento, porque ele fará uma varredura na faixa de endereços especificados pelo módulo para achar o dispositivo.

Configurando no braço
Vamos começar logo então? Vamos começar pelo micro 01. Vamos fazer um passo-a-passo, tudo que você fizer, faça no micro 02 também mas lembre-se que se você colocar um gateway, esse gateway é do micro 01, caso queria poderá usar o comando netconfig para lhe ajudar a setar mais rapidamentes os IPS dos micros. Vamos ao passo a passo: 1. Edite o arquivo /etc/hosts e coloque as seguintes informações, que são o IP da sua máquina (loopback), a IP da inteface de rede eth0 e o IP do outro micro, pois a procura por máquina será feita iniciando-se por esse arquivo, acompanhe:
127.0.0.1 localhost 10.6.12.250 adilson.hackers.net 10.6.12.150 gabriel.hackers.net adilson # Dad gabriel # Son

175

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

2. Se você pretender usar a Internet (duvido que não vá), edite o arquivos /etc/resolv.conf:
# Para a máquina que estiver como servidor na rede # No nosso caso pode ser o micro 01 IP: 10.6.12.250 search seu.provedor.com.br nameserver IP.seu.provedor.com.br # Somente para as máquinas que estiverem como clientes # No nosso caso pode ser o micro 02 IP: 10.6.12.150 search adilson.hackers.net # Nome do servidor nameserver 10.6.12.150 # IP do servidor

3. Agora edit o arquivo /etc/HOSTNAME, ele guarda o nome + domínio de sua máquina para que, quando você digitar o comando hostname ele devolva o seu nome. Faça isso para cada máquina, colocando o mesmo domínio para todas mas um nome distinto para cada uma.
adilson.hackers.net

4. Vamos para o quarto? Eu estou falando do quarto arquivo. :-) Edite o arquivo /etc/sysconfig/ network. Lembra? Esse arquivo tem uma função similar ao arquivo /etc/hosts. No nosso exemplo, desejamos a rede no ar, o micro 02 já tem nome e domínio, e ele aponta para o micro 01 que vai servir de gateway.
NETWORKING=yes # FORWARD_IPV4=no HOSTNAME="gabriel.hackers.net" GATEWAY="10.6.12.1" GATEWAYDEV="eth0" # Não é mais usado. # Esse é o micro 02

5. Verifique agora com o comando ifconfig. Se for necessário use os comandos ifconfig lo up; ifconfig eth0 up. Você também poderá configurar diretamente como comando ifconfig conforme o exemplo de configuração com o comando ifconfig:
# ifconfig eth0 10.6.12.150 netmask 255.0.0.0 broadcast 10.255.255.255 up 6. Se for preciso “levante” a rede com os comandos: /etc/rc.d/init.d/inet start /etc/rc.d/init.d/network start

7. Faça o mesmo procedimento para o segundo micro tomando o cuidade de mudar o IP deste e se for colocar um gateway, faça com que ele aponte para o gateway do primeiro micro. Depois diso faça pings em ambas as máquinas e não esqueça de habilitar os serviços e protocolos que você for usar nos arquivos /etc/service e /ect/protocols. Viu que fácil? Vamos pingar agora:
# ping -c5 gabriel.hackers.net PING gabriel.hackers.net (10.6.12.250): 56 data bytes 64 bytes from 10.6.12.250: icmp_seq=0 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=1 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=2 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=3 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=4 ttl=64 time=0.0

ms ms ms ms ms

— gabriel.hackers.net ping statistics —5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@gabriel root]# ping -c5 10.6.12.250 PING 10.6.12.250 (10.6.12.250): 56 data bytes 64 bytes from 10.6.12.250: icmp_seq=0 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=1 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=2 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=3 ttl=64 time=0.0 64 bytes from 10.6.12.250: icmp_seq=4 ttl=64 time=0.0

ms ms ms ms ms

176

Global Sul Informática

— 10.6.12.250 ping statistics —5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

Se você quiser ver a tabela de roteamento use o comando netstat -rn, assim:
Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. 10.6.12.0 0.0.0.0 255.255.255.0 U 127.0.0.0 0.0.0.0 255.0.0.0 U 0.0.0.0 10.6.12.1 0.0.0.0 UG Opções 40 40 40 MSS Janela irtt Iface 0 0 eth0 0 0 lo 0 0 eth0

8. OK! Vai ter roteamento entre as duas máquinas? Seria interessante se tivesse mais máquinas, mas tudo bem. O processo de roteamento é muito simples: um datagrama, ou seja, um pacote IP é recebido, o endereço de destino, para quem ele vai ser entregue, é examinado e comparado com cada item da tabela de roteamento. O item que mais corresponder com o endereço é selecionado e o datagrama é direcionado a interface especificada. Se o campo gateway estiver preenchido, então o datagrama é direcionado para aquele computador pela interface especificada, caso contrário o endereço de destino é assumido sendo uma rede suportada pela interface. Para saber se há um gateway padrão use o comando route -n. Para adicionar uma rota é simples e podemos fazer através do co mando route. Para adicionarmos então essa rota para a rede 10.6.12.1 e torná-la acessível através da interface eth0 basta digitar o comando:
route add -net 10.6.12.1 eth0

Caso você desejar apagar essa rota apenas troque o add pelo del. O parâmetro -net quer dizer que 10.6.12.1 é um endereço de rede, porém se você quiser especificar uma máquina de destino, use o parâmetro -host. Para adicionar uma rota padrão para um endereço que não se encontre na tabela de roteamento, deveremos usar o gateway padrão da rede porque através dele, o gateway padrão, é possível especificar um computador (normalmente outro gateway) que os pacotes de rede serão enviados caso o endereço não confira com os da tabela de roteamento. Para especificar o computador 10.6.12.250 como gateway padrão usamos, com o comando que já tínhamos, usamos:
route add -net 10.6.12.0 eth0 route add default gw 10.6.12.1 eth0

Se você der uma olhada dentro do /etc/sysconfig/network-scripts poderá perceber que existem vários arquivos de scripts destinado à tarefas de rede, eles são:
chat-ppp0: Conexão discada ppp via padrão chat. if-down.d, if-up.d: Script para levantar de derrubar. ifcfg-eth0, ifcfg-eth0.OLD: Arquivo de configuração da interface eth0. ifcfg-lo: Arquivo de configuração do loopback. ifcfg-ppp0: Arquivo de configuração de acesso dicado ppp0. ifdown, ifup: Script para derrubar e levantar interfaces. ifdown-ppp: Script para derrubar o ppp. ifup-aliases: Arquivo de configuração dos aliases. ifup-ipx, ifup-plip, ifup-post ifup-ppp: Arquivo de configuração para levantar o ppp. ifup-routes: Arquivo de configuração para levantar as rotas. network-functions: Scripts que guarda funções executáveis de rede.

Monitoramente de rede

177

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

Como já vimos anteriormente, para verificarmos o tráfego em nossa rede via modo texto poderemos usar o comando tcpdump, que nos informará os pacotes que estão trafegando por ela, também podemos usar o iptraf que informa quais máquinas estão trocando informações. O trafshow que informa de onde veio, o endereço, a porta e quanto já foi efetuado da transferência. Mas existe também um outro programa muito interessante para fazer análise em tempo real do que está passando pela nossa rede. O programa netpeek é muito interessante, pois oferece uma série de tipos de verificações, como pings na rede, host lookup (pesquisa em DNS), verificar a interface de rede, atividades TCP e UDP, domínio Unix, verificar tabelas de roteamento verificar tabelas ARP e serviços RPC (NFS). Um outro comando interessante de ser usado é o comando netstat que nos fornece uma estatísca de nossa rede, ou seja, ele mostra conexões de rede, tabela de roteamento, estatísticas de interfaces, conexões masquerade e mensagens. Se não for especificada nenhuma opção, os detalhes das conexões atuais serão mostrados ou você poderá passar os parâmetros que precisar conforme a listagem a seguir:
Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. 10.6.12.0 0.0.0.0 255.255.255.0 U 127.0.0.0 0.0.0.0 255.0.0.0 U 0.0.0.0 10.6.12.1 0.0.0.0 UG Opções 40 40 40 MSS Janela irtt Iface 0 0 eth0 0 0 lo 0 0 eth0

O comando nmap: O comando nmap é uma ferramenta de exploração e escaneamento de informações de redes, ele é muito útil quando queremos “xeretar” um IP qualquer, porque ele nos devolve informações preciosas, como: nome do sistema operacional em uma máquina remota, quais portas estão abertas etc.
# nmap -O 10.0.0.5 Starting nmap V. 2.54BETA21 ( www.insecure.org/nmap/ ) Insufficient responses for TCP sequencing (3), OS detection may be less accurate Insufficient responses for TCP sequencing (3), OS detection may be less accurate Insufficient responses for TCP sequencing (3), OS detection may be less accurate Interesting ports on adilson.hackers.net (10.2.12.250): (The 1532 ports scanned but not shown below are in state: closed) Port State Service 21/tcpopen ftp 22/tcpopen ssh 23/tcpopen telnet 98/tcpopen linuxconf 513/tcp open login 514/tcp open shell 515/tcp open printer 901/tcp open samba-swat 1024/tcp open kdm 6000/tcp open X11 No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi). TCP/IP fingerprint: SInfo(V=2.54BETA21%P=i686-pc-linux-gnu%D=12/ ... Uptime 0.007 days (since Wed Dec 12 09:35:20 2001) Nmap run completed -- 1 IP address (1 host up) scanned in 6 seconds

Agora se você quiser realmente analisar o que se passa pela sua rede poderá usar o ethereal que vem com a maioria das distribuições. Ele é muito interessante pois permite capturar e analizar todos os pacotes que passa pela sua rede.

178

Global Sul Informática

Anotações:

179

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

Anotações:

180

Global Sul Informática

Capítulo 10

NFS - Cliente e Servidor
Neste capítulo aprenderemos como configurar um servidor e um cliente NFS e vamos descobrir que isso é muito fácil de fazer. Há também uma pequena passagem sobre segurança, que será técnica, e vai exigir alguns conhecimentos sobre redes TCP/IP e outros termos usados. Do mesmo modo que você pode compartilhar arquivos em uma rede Windows usando o protocolo SMB, aqui em ambiente Unix/Linux e demais variantes, nós podemos fazer também através do NFS e então depois de tudo configurado e definido como serão os acessos, para entrar em qualquer ponto de montagem é igual a um ponto qualquer e até parece que o diretório é da nossa máquina; mas na verdade ele pode estar em uma outra máquina de sua rede local ou até mesmo ser um ponto em uma máquina remota que estiver na Internet. Porém, vale lembrar que o tempo de acesso e de resposta é o tempo da velocidade da rede ou de sua conexão que pode ser lento ou rápido. Porém como hoje em dia redes de 100 Mbps é comum assim como a banda larga, quase não percebemos a diferença.

DICA: Para saber mais leia o networking-HOWTO, ou pode adquirir um livro sobre administração de rede TCP/IP para se familiarizar com os protocolos TCP/IP.

Como configurar clientes e servidores NFS
Já sabemos que o NFS é um sistema para compartilhamento de arquivos de rede. Serviço de rede que permite o compartilhamento transparente de sistemas de arquivos ou diretórios entre os nós de uma rede. Implementado usando RPC – Remote Procedure Call, cujos protocolos são descritos usando XDR – eXternal Data Representation. Antes de mais nada, NFS tem três importantes características:
a) Faz o compartilhamento de arquivos em uma rede, b) Funciona bem o suficiente para você poder trabalhar e c) Abre brechas na segurança, que são bem compreendidas pelos crackers e facilmente exploradas para conseguir acesso aos seus arquivos (para ler, escrever e apagar).

Configurando um servidor NFS
Pré-requisitos: Antes disso precisaremos ser capazes de executar um telnet entre a máquina que está configurada como servidor e a máquina configurada como cliente; então, a nossa rede precisa estar configurada corretamente, estar no ar e operante. Primeiros passos: Antes que possamos fazer qualquer coisa, precisamos de um servidor de NFS configurado. Depois que você definir a política de exportação via NFS em sua rede, é aconselhável que você deixe isso automático na hora da inicialização do seu servidor. Isso é feito através do comando ntsysv ou editando os arquivos de inicialização local.

Os daemons (processos) que você deverá marcar no ntsysv são:

181

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

1. netfs: Monta e desmonta todos os pontos de montagem NFS, SMB (Lan Manager/Windows) e NCP (NetWare). 2. nfs: O NFS é um protocolo popular para compartilhar arquivos através de redes TCP/IP. Este serviço provê a funcionalidade de um servidor NFS, que é configurado através do arquivo /etc/exports. 3. nfslock: Este serviço provê a funcionalidade de bloqueio de arquivos (file locking). 4. portmap: O portmapper gerencia conexões RPC, que são usadas por protocolos como NFS e NIS. O servidor portmap deve estar executando em máquinas com servidores para protocolos que usem o mecanismo RPC.

Esse daemons (processos) são na verdade shell scripts para verificar se é possível colocar um servidor NFS no ar. Vamos ver aqui onde estão cada um deles e como são esses shell scripts. Se você não sabe programar ou não entende nada de shell scripts, não tem importância, pois eles já estão prontos e foram colocados aqui para que você obtenha mais conhecimento técnico da situação. Vamos localizar o primeiro, que é o netfs:
/etc/rc.d/init.d/netfs /etc/rc.d/rc0.d/K75netfs /etc/rc.d/rc1.d/K75netfs /etc/rc.d/rc2.d/K75netfs /etc/rc.d/rc3.d/S25netfs /etc/rc.d/rc4.d/S25netfs /etc/rc.d/rc5.d/S25netfs /etc/rc.d/rc6.d/K75netfs /var/lock/subsys/netfs

Você poderá perceber aqui que para cada nível de inicialização (runlevel) do sistema temos um netfs e que o arquivo principal está em /etc/rc.d/init.d/netfs e que para ele nós podemos passar os seguintes parâmetros: {start|stop|restart|reload|status}. Se você tem conhecimentos de programação em shel script poderá ver o conteúdo com o comando cat /etc/rc.d/init.d/netfs, e ainda poderá personalizar algumas mensagens que estão em Inglês. Também poderá ver o o conteúdo do outro shell script com o comando cat /etc/rc.d/init.d/nfs. É esse script que você deverá “levantar” depois de “levantar” o portmap. Do mesmo modo que você tem o netfs para os níveis de inicialização (runlevel), também tem o portmap para esses níveis. Use o comando locate para encontrar os arquivos do portmap ou também podemos passar os parâmetros: {start|stop|restart| reload|status}.
/usr/share/doc/portmap-4.0 /usr/share/doc/portmap-4.0/BLURB /usr/share/doc/portmap-4.0/CHANGES /usr/share/doc/portmap-4.0/README /usr/share/man/man8/portmap.8.gz /etc/rc.d/init.d/portmap /etc/rc.d/rc0.d/K89portmap /etc/rc.d/rc1.d/K89portmap /etc/rc.d/rc2.d/K89portmap /etc/rc.d/rc3.d/S11portmap /etc/rc.d/rc4.d/S11portmap /etc/rc.d/rc5.d/S11portmap /etc/rc.d/rc6.d/K89portmap /lib/modules/2.4.21-28872cl/modules.parportmap /var/lock/subsys/portmap /sbin/portmap

Criando os locais para montagem NFS
No servidor você poderá adicionar o arquivo /etc/exports, que é o arquivo que vai guardar os volumes e quem poderá montar esses volumes via rede. Os volumes poderão ser exportados para uma máquina específica, uma faixa da rede (intranet) ou para todo mundo (Internet). Porém, cuidado em exportar para todo mundo, pois é possível montar um volume NFS via Internet e acessá-lo como se fosse um volume local e se por ventura dentro desse volume o usuário que

182

Global Sul Informática

montou tiver poder para executar programas e se tiver algum programa que roda com SUID root, ou seja, o programa vai rodar com poderes do usuário root e isso poderá significar tragédias em seu sistema. O modo mais rápido e simples de adicionarmos a configuração no arquivo /etc/exports é:
# echo “/usr/mp3/ /mnt/mp3 (ro) # músicas em mp3” > /etc/exports # echo “/usr/jpg/ /mnt/jpg (ro) # fotos em jpg” >> /etc/exports

Claro, se você tiver muita coisa para adicionar nesse arquivo é melhor editá-lo com seu editor de textos preferido.
/ /home/adilson/fotos /home/adilson/mp3 /home/sonizia/doc /home/luzia/trabalhos/ /home/universidade/odonto /home/universidade/sistemas /home/universidade/direito /home/universidade/jornalismo amigos(rw) hackers (rw,no_root_squash) amigos(ro) hackers (no_root_squash) musicas*.local.domain(rw) 10.6.12.250(ro) @amigos(rw) 10.6.12.33(rw) *.odonto.net.br(rw) *.sistema4.net.br(rw) *.direitro3.net.br(rw) *.jornalismo2.net.br(ro)

Analisando o arquivo exemplo: A primeira linha exporta o sistema inteiro (isso é muito perigoso) para as máquinas “amigos” que pode ler e gravar (rw) e para a máquina “hackers” com poder de ler e gravar, mas o usuário root não pode executar programas (rw, no_root_squash). A segunda exporta o diretórios de fotos do usuário adilson para as mesmas máquinas mas tomando-se os devidos cuidados. A terceira e quarta linha nos mostra que podemos usar coringas “*” e efetuar uma exportação para um dominio local interno, nesse caso provavelmente para troca de arquivos mp3. A quinta linha define a exportação para uma máquina específica por IP e pra um grupo de usuários. Exceto para o grupo de usuários que podem efetuar atualizações (rw) toda a máquina somente poderá ler (ro). A sexta linha é semelhante a linha anterior mas refere-se a todas as máquinas do domínio .contabil.net.br e que pode efetuar atualizações (rw). A sétima linha é para uma máquina específica por IP e com atualizações (rw). A oitava, nona e décima linha é semelhante à sexta linha e a décima primeira linha também é semelhante mas o pessoal do jornalismo só vai poder pesquisar (ro), ou seja, somente leitura.

O portmapper
O portmapper no Linux é chamado de portmap ou rpc.portmap. Sua página do manual do sistema diz que ele é a DARPA port to RPC program number mapper. Esta é a primeira falha na segurança que você conhecerá lendo este capítulo. Algumas maneiras de sanar essas falhas estão na seção de segurança. Inicie o portmapper. Ele tem o nome de portmap ou rpc.portmap e deveria estar no diretório /usr/sbin (em algumas máquinas tem o nome rpcbind). Poderemos iniciar o portmapper manualmente, mas será preciso iniciá-lo toda vez que sua máquina for inicializada, para que isso seja feito automaticamente você precisará fazer ou editar um script rc. Os scripts rc estão explicados na página init do manual, normalmente eles ficam no diretório /etc/rc.d, ou /etc/init.d ou /etc/rc.d/init.d. Se existir algum script com o nome parecido com inet, provavelmente é o script certo a ser editado. Mas o que fazer no script está fora do contexto deste capítulo. Inicie o portmap e verifique se está rodando usando ps aux. Veja como fazer isso:
[root@gabriel /]# /etc/rc.d/init.d/portmap start Iniciando portmapper: [root@gabriel /]# ps -aux | grep portmap bin 1414 0.0 0.1 1532 408 ? S 06:32 root 1422 0.0 0.3 1852 724 pts/0 S 06:32 [ OK ] 0:00 [portmap] 0:00 grep portmap

183

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

Mountd e nfsd
Os próximos programas que nós precisaremos executar são mountd e nfsd, mas antes nós precisaremos editar outro arquivo: o /etc/exports. Suponhamos que eu queira compartilhar o meu sistema de arquivo /home/adilson/fotos da máquina adilson.hackers.net com a máquina gisele.hackers.net com direitos de leitura e gravação no local. Então, deveremos colocar a seguinte linha de comando no arquivo/etc/exports da máquina adilson.hackers.net:
... /home/adilson/fotos gisele.hackers.net(rw)

A linha acima dá a gisele.hackers.net acesso de leitura e escrita em /home/adilson/fotos. Em vez de (rw) poderíamos ter colocado (ro), o que significaria somente de leitura. Depois que o portamap foi inicializado agora é a vez de inicializar o nfs:
[root@gabriel /]# /etc/rc.d/init.d/nfs start Iniciando quotas (NFS) Iniciando mountd (NFS) Iniciando statd (NFS) Iniciando nfsd (NFS) Iniciando os serviços NFS: [ [ [ [ [ OK OK OK OK OK ] ] ] ] ]

Verifique com o comando a seguir:
[root@gabriel /]# ps root 1475 0.0 root 1476 0.0 root 1477 0.0 root 1480 0.0 root 1481 0.0 root 1482 0.0 root 1483 0.0 -aux | grep nfs 0.0 0 0 ? 0.0 0 0 ? 0.0 0 0 ? 0.0 0 0 ? 0.0 0 0 ? 0.0 0 0 ? 0.0 0 0 ? SW SW SW SW SW SW SW 06:32 06:32 06:32 06:32 06:32 06:32 06:32 0:00 0:00 0:00 0:00 0:00 0:00 0:00 [nfsd] [nfsd] [nfsd] [nfsd] [nfsd] [nfsd] [nfsd]

E agora usaremos o comando ps -aux | grep rpc para verificar as chamadas rpc:
[root@gabriel /]# root 1435 0.0 root 1448 0.0 root 1461 0.0 root 1479 0.0 ps -aux | grep rpc 0.3 1940 840 ? 0.2 1568 520 ? 0.3 1596 696 ? 0.0 0 0 ? S S S SW 06:32 06:32 06:32 06:32 0:00 0:00 0:00 0:00 rpc.rquotad rpc.mountd rpc.statd [rpciod]

Use também o comando rpcinfo -p 10.6.12.250, que nesse caso é a máquina servidora para ver como é que está sendo usado os protocolos.
[root@gabriel /]# rpcinfo programa versão protocolo 100000 2 100000 2 100011 1 100011 2 100011 1 100011 2 100005 1 100005 1 100005 2 100005 2 100005 3 100005 3 100024 1 100024 1 100003 2 100003 3 100003 2 100003 3 100021 1 -p 10.6.12.250 porta tcp 111 udp 111 udp 764 udp 764 tcp 767 tcp 767 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32769 tcp 32769 udp 2049 udp 2049 tcp 2049 tcp 2049 udp 32770

portmapper portmapper rquotad rquotad rquotad rquotad mountd mountd mountd mountd mountd mountd status status nfs nfs nfs nfs nlockmgr

184

Global Sul Informática

100021 100021 100021 100021 100021

3 4 1 3 4

udp udp tcp tcp tcp

32770 32770 32770 32770 32770

nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr

Se não for especificado nada para a exportação NFS, por padrão, o acesso será somente de leitura (ro). Existem outras opções que podemos usar: vamos discutir sobre a segurança dessas opções mais adiante. Essas opções estão todas listadas na página de manual do comando exports, a qual você que quer aprender a usar NFS já deveria ter lido pelo menos três vezes. Use o comando showmount -e para saber o que está exportado e quem poderá usar. Isso pode ser feito na máquina cliente e na máquina servidor.
[root@gabriel /]# showmount -e Export list for gabriel.hacker.net: /home/gabriel/mp3 musicas*.local.domain /home/adilson/mp3 musicas*.local.domain /home/gilmara/planilhas *.contabil.net.br /home/universidade/odonto *.odonto.net.br /home/universidade/direito *.direitro3.net.br /home/universidade/sistemas *.sistema4.net.br /home/universidade/jornalismo *.jornalismo2.net.br /home/sonizia/doc @amigos,gabriel.hacker.net /home/luzia/trabalhos/ 10.6.12.33

O showmount tem os seguintes parâmetros que você poderá usar:
-a ou --all: Lista todas as máquina cliente e seus pontos de montagem. -d ou --directories: Lista apenas alguns diretórios montados por alguns clientes. -e ou --exports: Mostra a lista de exportação do servidor NFS.

Veja a saída com esses parâmetros:
[root@gabriel /]# showmount -a All mount points on gabriel.hacker.net: [root@gabriel /]# showmount -d Directories on gabriel.hacker.net:

Veja como é que ficaria o arquivo /etc/fstab:
/dev/hda5 / ext3 defaults 1 0 /dev/hda6 swap swap defaults 0 0 /dev/hda7 /home ext3 defaults 1 0 /dev/hda8 /usr ext3 defaults 1 0 /dev/cdrom /mnt/cdrom iso9660 defaults,user,noauto,ro 0 0 /dev/fd0 /mnt/floppy auto defaults,user,noauto 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 /dev/hda1 /mnt/winxp vfat user,owner,exec,dev,suid,rw 1 1 gabriel.hackers.net:/home/gabriel/mp3 /mnt/gabriel/mp3 nfs user,owner,noexec,nodev,nosuid,ro 1 1 adilson.hackers.net:/home/adilson/fotos /mnt/adilson/fotos user,owner,exec,dev,suid,ro,soft 1 1 ufo.com.br:/home/fotos/ufos nfs exec,dev,suid,rw 1 1 /mnt/ufos/fotos nfs

Como você pode constatar temos algumas coisas nova nesse arquivo mas que são simples de serem entendidas, vamos a elas pegando a linha da máquina do gabriel:
gabriel.hackers.net:/home/gabriel/mp3 /mnt/gabriel/mp3

185

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

É o nome da máquina mais (:) o seu ponto de exportação e para a máquina cliente o seu ponto de importação.
nfs user,owner,noexec,nodev,nosuid,ro 1 1

É o tipo de sistema de arquivo que no nosso caso será NFS, pode ser montado pelo usuário, pode ser montado pelo dono do dispositivo, não poderá ser executado programas aqui, sem dispositivos especiais, não executa programas com suid root, é somente para leitura e com as checagem de montagem na inicialização. Viu só como não tem muito mistério? Somente para lembrar, há também melhores maneiras para listar todos as máquinas que estão no arquivo /etc/exports. Por exemplo, podemos usar grupos de rede. Mas se estivermos usando NIS (ou NYS, o NIS era conhecido como YP – Yellow Pages, páginas amarelas) e sempre especifica o domínio de placas e subredes IP como máquinas que têm permissão para montar algo, devemos considerar que alguém pode conseguir acesso ao servidor sem autorização pelo uso dessas autorizações gerais. O arquivo /etc/exports não tem a mesma sintaxe usada em outros Unixes. Ele se apresenta um pouco diferente em máquinas Solaris, FreeBSD, QNX etc. Mas é fácil de ser compreendido. Agora nós iniciaremos o mountd (que também pode se chamar rpc.mountd) e então o nfsd (que pode se chamar rpc.nfsd). Ambos ‘lerão’ o arquivo /etc/exports. Se editarmos o arquivo /etc/exports teremos que fazer o nfsd e o mountd “saberem” que o arquivo foi mudado. A maneira tradicional é rodar o comando exportfs. Mas em várias distribuições do Linux o programa exportfs não está presente. Se você não tem o exportfs pode instalar o seguinte script em sua máquina:
#!/bin/sh killall -HUP /usr/sbin/rpc.mountd killall -HUP /usr/sbin/rpc.nfsd echo “Ok! Sistema de arquivos re-exportado.”

Grave-o em /usr/sbin/exportfs, e não se esqueça de configurar as permissões com o comando chmod a+rx. Agora, toda vez que você mudar o arquivo exports, deverá executar, como root, o script exportfs depois. Agora você deve verificar se o mountd e nfsd estão rodando apropriadamente. Primeiro com o comando rpcinfo -p, que deve mostrar algo desse tipo:
[root@gabriel /]# rpcinfo programa versão protocolo 100000 2 100000 2 100011 1 100011 2 100011 1 100011 2 100005 1 100005 1 100005 2 100005 2 100005 3 100005 3 100024 1 100024 1 100003 2 100003 3 100003 2 100003 3 100021 1 100021 3 100021 4 100021 1 100021 3 100021 4 -p 10.6.12.250 porta tcp 111 udp 111 udp 764 udp 764 tcp 767 tcp 767 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32769 tcp 32769 udp 2049 udp 2049 tcp 2049 tcp 2049 udp 32770 udp 32770 udp 32770 tcp 32770 tcp 32770 tcp 32770

portmapper portmapper rquotad rquotad rquotad rquotad mountd mountd mountd mountd mountd mountd status status nfs nfs nfs nfs nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr

Como podemos ver, o portmapper anunciou os serviços, e assim temos o mountd e o nfsd. Se o rpcinfo retornou a mensagem: “Can’t contact portmapper: RPC: Remote system error – Connection refused” ou algo similar, então o portmapper não está rodando. Faça funcionar. Se o rpcinfo retornou: “No remote programs registred”, então o portmapper não quer falar com você, ou algo está falhando. Então pare o nfsd, o mountd, e o portmapper e tente novamente a seqüência desde o início.

186

Global Sul Informática

Depois de verificar que o portmapper relata os serviços (mountd e nfsd), você pode verificar se eles estão rodando com comando ps também. Porque o portmapper continua relatando os serviços mesmo depois que os programas terminaram. Então, uma verificação com comando ps é uma coisa inteligente se algo está falhando. Também poderemos usar o comando top ou em modo gráfico o ktop, gtop, kpm etc., todos eles nos informam situações com processos. É claro que precisaremos modificar os scripts rc´s para iniciar o mountd e o nfsd, bem como o portmapper no boot da máquina ou então configurá-los através do linuxconf. É provável que os scripts já existam em sua máquina, você deve descomentar ou ativar a seção correta do runlevel. As páginas portmap, mountd, nfsd e exports do man devem ser familiares agora. Bem, se foi feito tudo exatamente do modo correto deveremos estar com tudo configurado para iniciar o cliente NFS. Há um comando muito útil, o nfsstat que carrega e exibe informações atuais do Kernel NFS. Essas informações (estatísticas) apenas são suportadas do lado do servidor devido ao fato de máquinas cliente não coletarem dados ainda. A seguir temos algumas opções que podemos usar:
-s: -c: -n: -r: Exibe Exibe Exibe Exibe estatísticas do lado servidor e da máquina cliente. informações apenas do lado cliente. apenas informações estatísticas do NFS e informações RPC. apenas informações estatísticas do RPC.

Configurando o cliente NFS
Para configurarmos os clientes NFS, primeiro precisaremos de um kernel com suporte a sistema de arquivo NFS ou compilado para suportá-lo como módulo. Isso é configurado antes de compilarmos o seu kernel. Agora poderemos, como root, entrar com o comando mount apropriado e o sistema de arquivo “aparecerá”. Continuando o exemplo da seção anterior, onde nós queríamos montar o /home/adilson/fotos da máquina adilson.hackers.net para a máquina gisele.hackers.net. A linha de comando para isso, que deve ser executada na máquina trzciak, é:
# mount -o rsize=1024,wsize=1024 adilson:/home/bonan /mnt/gisele/fotos

Veja a seguir um pequeno exemplo de um arquivo /etc/fstab que guarda a máquina e os devidos pontos de exportação:
... gabriel.hackers.net:/home/gabriel/mp3 user,owner,noexec,nodev,nosuid,ro 1 1 /mnt/gabriel/mp3 nfs

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 nfs exec,dev,suid,rw 1 1 /mnt/ufos/fotos

Nós voltaremos a discutir as opções rsize e wsize. Agora o sistema de arquivo está disponível em /mnt/gisele/fotos da máquina gisele.hackers.net e poderemos entrar com cd, usar o ls e ver cada arquivo individualmente. Perceberemos que não é tão rápido como um sistema de arquivo local, mas é bem mais conveniente que o ftp, que depois de um certo tempo tende a ficar inativo ou se tiver muito fluxo pela rede fica muito lento rapidamente. Se em vez da montagem do sistema de arquivo, o comando mount produzir uma mensagem de erro do tipo:
“adilson.hackers.net:/home/adilson/fotos denied”, failed, reason given by server: Permission

...então o arquivo /etc/exports está errado ou foi esquecido de executar o comando exportfs depois que o arquivo foi modificado. Se a mensagem de erro retornada pelo comando mount for algo do tipo:
“mount clntudp_create: RPC: Program not registered”

187

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

...isso significa que o nfsd ou o mountd não está rodando no servidor. Para desmontar o sistema de arquivo é muito simples, basta usar o comando:
# umount /mnt/gisele/fotos

Para fazer o sistema montar um sistema de arquivo NFS na inicialização devemos editar o arquivo /etc/fstab. Para o nosso exemplo, a linha a ser adicionada a esse arquivo seria:
adilson.hackers.net:/home/adilson/fotos /mnt/gisele/fotos nfs rsize=1024,wsize=1024 0 0

Uma idéia interessante é o compartilhamento da uma unidade de CD/DVD, assim algumas coisas não precisarão ficar gravadas na máquina e gastando espaço. Quer uma idéia? Quantas músicas padrão mp3 cabem em um CD? Acho que com boa qualidade umas 200 (duzentas), se for em DVD acho que umas 1000 (mil) ou mais. Podemos trabalhar ouvindo música o dia inteiro.

Opções de montagem
Existem algumas opções que devem ser consideradas e adicionadas ao que foi visto até aqui. Elas controlam a maneira que o cliente NFS trata uma queda no servidor ou na rede. Uma das coisas legais sobre o NFS é que ele pode tratar esses contratempos de maneira elegante, se configurarmos o cliente corretamente aplicando em nosso exemplo anterior, a entrada no nosso arquivo /etc/fstab seria:
... adilson.hackers.net:/home/adilson/fotos /mnt/gisele/fotos hard,intr 0 0 ... nfs rsize=1024,wsize=1024,

Otimizando o NFS
Normalmente, se as opções rsize e wsize não são especificadas, o NFS lerá e escreverá em blocos de 4096 ou 8192 bytes. A combinação do kernel do Linux com algumas placas de rede não podem manipular blocos tão grandes, e isso não é bom. Então nós iremos experimentar e encontrar um tamanho para o rsize e para o wsize que trabalhe tão rápido quanto possível. Nós podemos testar a velocidade das opções com um comando simples. Dê o comando mount de maneira que tenha acesso para escrita no disco, usando a linha seguinte para testar o desempenho da escrita seqüencial:
time dd if=/dev/zero of=/mnt/arquivo_teste bs=16k count=4096

Essa linha criará o arquivo “arquivo_teste” de 64 MB de bytes nulos (que deve ser suficientemente grande para que o caching não seja significante para o desempenho, use um arquivo maior se tiver muita memória). Faça isso algumas vezes (de 5 a 10) e calcule a média. Esse é o elapsed ou wall clock do tempo, e é o que nos interessa nessa conexão. Então poderemos testar o desempenho de leitura ao ler o arquivo criado com a linha abaixo:
time dd if=/mnt/testfile of=/dev/null bs=16k

Faça várias vezes e calcule a média. Então desmonte e monte novamente com um rsize e um wsize maior. Eles devem ser múltiplos de 1024 e não devem ser maiores que 16.384 bytes, pois esse é o tamanho máximo para o NFS versão 2. Imediatamente depois da montagem com um tamanho maior, entre no sistema de arquivo montado (comando cd) e execute comandos como o ls, explore um pouco o sistema de arquivo para ter certeza de que tudo está como deveria. Se rsize/wsize está muito grande, os sintomas são muito estranhos e não muito óbvios. Um sintoma típico é obter listas de arquivos incompletas sem nenhuma mensagem de erro quando usar o ls. Depois de verificado que os valores de rsize/wsize usados funcionam, você pode realizar os testes de velocidade novamente. Provavelmente em servidores de plataformas diferentes, o wsize/rsize terão valores diferentes para um desempenho melhor. O SunOs e o Solaris são mais rápidos com blocos de 4096 bytes do que com blocos de outro tamanho. Lembre-se de editar o arquivo /etc/fstab para refletir o rsize/wsize que foi encontrado nos testes.

188

Global Sul Informática

Uma dica para melhorar o desempenho de escrita do NFS é desabilitar a escrita síncrona no servidor. A especificação do NFS diz que a requisição de escrita não pode ser considerada acabada antes que os dados estejam em uma mídia não volátil (normalmente o disco). Isso restringe o desempenho de escrita. Escritas assíncronas irão aumentar a velocidade de escrita do NFS. O nfsd do Linux não usa escrita síncrona, pois a implementação do sistema de arquivo do Linux não permite, mas em servidores não Linux poderemos melhorar o desempenho desta maneira, com a seguinte linha no seu arquivo /etc/exports: /diretório -async,access=distribuição linux. Ou algo semelhante. Por favor procure a página de manual do exports. Perceba, também, que isso aumenta o risco de perda de dados.

NFS e segurança
Aqui vai alguns conselhos para que você tenha uma segurança consciente. Mas fique avisado: essa não é uma lista completa dos problemas relatados do NFS e se você pensa que está seguro porque leu e implementou tudo isso, tome cuidado. Esta seção não leva em consideração se você está em uma rede fechada na qual confia em todos os usuários, ou se não confia em quem tem acesso às máquinas da rede, não deveria haver nenhuma maneira de entrar na rede, e ela não deveria estar conectada de nenhuma maneira a outras redes onde você não confia em ninguém que a usa, bem como na sua segurança. O NFS tem um problema básico em que o cliente, se não for de outro modo, confia no seu servidor e vice-versa. Isso pode ser ruim. Significa que, se a conta do root do servidor for quebrada, pode ser muito fácil quebrar a conta de root do cliente também e vice-versa. Existem várias estratégias contidas aqui, das quais nós voltaremos a falar.

Segurança no cliente
No cliente nós podemos decidir o quanto queremos confiar no servidor; também, com as opções de montagem. Por exemplo, nós podemos proibir que programas suid trabalhem fora do NFS com a opção nosuid. Isso é uma boa idéia e você deverá considerar o uso dela em todos os sistemas NFS montados. Significa que o usuário root do servidor não pode usar um programa suid-root do sistema de arquivos, para logar no cliente como se fosse um usuário comum e então usá-lo para se tornar superusuário no cliente também. Nós também poderíamos proibir completamente a execução de arquivos do sistema de arquivos montado com a opção noexec. Mas isso, provavelmente, é uma idéia pior do que a opção nosuid, pois é provável que um sistema de arquivos tenha alguns scripts e programas que precisam ser executados. Nós colocamos essas opções na coluna de opções, como o rsize e wsize, separadas por vírgula.

Segurança no servidor: nfsd
No servidor nós podemos decidir o quanto queremos confiar no superusuário do cliente. Nós podemos fazer isso usando a opção root_squash no arquivo /etc/exports:
... /home/adilson/fotos amigos(ro) hackers (no_root_squash) ...

Agora, se um usuário no cliente com UID 0 tentar acessar (ler, escrever, deletar) o sistema de arquivo do servidor, o UID é substituído pelo UID de nobody do servidor. O que significa que o usuário root do cliente não pode acessar ou modificar arquivos que somente o root do servidor pode acessar ou mudar. O que é bom, e você deve usar root_squash em todos os sistemas de arquivos exportados. Outro cuidado que deveremos ter é se o usuário root no cliente puder usar o comando su para se tornar qualquer usuário para acessar e modificar os arquivos desse usuário. Isso é verdade e é um dos perigos em se ter Unix/Linux com NFS. Isso tem uma importante implicação: todos os binários e arquivos importantes devem ser do root, e não de outro usuário não root, pois somente assim o usuário root do cliente não poderá acessar o servidor como root. Na página de manual do nfsd existe várias outras opções squash listadas, então poderemos decidir em confiar (ou não) no cliente. Há também opções de squash para qualquer faixa de UID e GID que você queira. Tudo isso está descrito na página de manual do nfsd, então eu já vou lhe falar LEIA OS MANUAIS. A opção root_squash é ativada como padrão no NFS do Linux e para garantir o acesso do root ao sistema de arquivo use a opção no_root_squash. Outra coisa importante é assegurar que o nfsd verifique todos os pedidos que venham de uma porta privilegiada. Se o pedido for aceito de qualquer porta

189

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

desprotegida no cliente, um usuário sem privilégios especiais pode rodar um programa facilmente obtido na Internet. Esse programa fala com o protocolo nfs e reivindica ser qualquer usuário que queira. Assustador. O nfsd do Linux faz essa verificação por padrão, em outros sistemas operacionais você tem que ativar a verificação. Isso deve estar descrito nas páginas NFSd do man do Sistema Operacional em questão.

DICA: Nunca exporte um sistema de arquivo para o localhost ou para 127.0.0.1 com privilégio total, pois se um hacker com más intenções conseguir acesso a essa exportação do seu localhost, acredite, você estará perdido.

Segurança no servidor portmapper
O portmapper básico, em combinação com o nfsd, tem um problema de projeto que torna possível a captura de arquivos no servidor NFS sem nenhum privilégio. Felizmente, o portmapper que o Linux usa é relativamente seguro contra esse ataque, e pode ficar mais seguro com a configuração dos dois arquivos de lista de acesso. Primeiro nós editaremos o /etc/hosts.deny. Ele deve conter a linha portmap: ALL, que irá negar o acesso para todos. Isso talvez seja um pouco radical, então nós permitiremos o acesso editando o arquivo /etc/hosts.allow. Mas primeiro precisamos entender o porquê disso. O arquivo lista basicamente todas as máquinas que devem ter acesso ao seu portmapper. Na execução do sistema Linux existem algumas máquinas que precisam de algum acesso por qualquer razão. O portmapper administra o nfsd, o mountd, o ypbind/ypserv, o pcnfsd e os serviços “r” como ruptime e rusers. Desses somente o nfsd, o mountd, o ypbind/ypserv e talvez o pcnfsd são de alguma importância. Todas as máquinas que precisam acessar serviços na sua máquina devem ter permissão para isso. Suponhamos que o endereço da sua máquina seja 10.6.12.250 e que está na subrede 10.6.12.0, que deve ter acesso a ela (nos termos que foram introduzidos pelo networking-HOWTO, volte e refresque sua memória se precisar). Então nós escreveremos no hosts.allow:
portmap: 10.6.12.0/255.255.255.0

Isso é o endereço da rede dado para o roteador e a máscara que você deu para o comando ifconfig. Para o dispositivo eth0 o ifconfig dessa máquina deverá mostrar:
eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56 inet addr:129.240.223.254 Bcast:129.240.223.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:360315 errors:0 dropped:0 overruns:0 TX packets:179274 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x320

E o comando netstat -rn deverá mostrar:
Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. Opções 10.6.12.0 0.0.0.0 255.255.255.0 U 127.0.0.0 0.0.0.0 255.0.0.0 U 0.0.0.0 10.6.12.254 0.0.0.0 UG MSS 40 40 40 Janela 0 0 0 irtt Iface 0 eth0 0 lo 0 eth0

O endereço da rede está na primeira coluna. Os arquivos hosts.deny e hosts.allow são descritos nas páginas de seus nomes do man.

190

Global Sul Informática

DICA: Não coloque nada além de números de IP na linha do portmap desses arquivos. Lookups em nomes de hosts pode causar indiretamente atividade do portmap o qual desencadeará um lookups em nomes de hosts, que pode causar indiretamente atividade do portmap o qual desencadeará.

Com as coisas vistas, devemos fazer da sua máquina uma máquina segura. O único problema (Yeah, certo!) é alguém quebrar a senha do root (ou usando o MS-DOS) de uma máquina em que se confia e usar esse privilégio para enviar pedidos de uma porta segura como qualquer usuário que queira.

NFS e firewalls
É uma boa idéia usar firewall para as portas de nfs e portmap no seu roteador ou firewall. O nfsd opera na porta 2049, para os protocolos udp e tcp. O portmapper opera na porta 111, para o udp e o tcp, e o mountd na porta 32768 para o tcp e 747 para o udp e o nlockmgr na porta 32770. Normalmente. Você deve verificar as portas com o comando rpcinfo -p.
[root@gabriel /]# rpcinfo programa versão protocolo 100000 2 100000 2 100011 1 100011 2 100011 1 100011 2 100005 1 100005 1 100005 2 100005 2 100005 3 100005 3 100024 1 100024 1 100003 2 100003 3 100003 2 100003 3 100021 1 100021 3 100021 4 100021 1 100021 3 100021 4 -p 10.6.12.250 porta tcp 111 udp 111 udp 764 udp 764 tcp 767 tcp 767 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32768 tcp 32768 udp 32769 tcp 32769 udp 2049 udp 2049 tcp 2049 tcp 2049 udp 32770 udp 32770 udp 32770 tcp 32770 tcp 32770 tcp 32770

portmapper portmapper rquotad rquotad rquotad rquotad mountd mountd mountd mountd mountd mountd status status nfs nfs nfs nfs nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr

Se por outro lado você quiser que o NFS passe através do firewall, existem opções para os novos NFSds e mountds para fazer o uso de uma porta específica (nonstandard) a qual pode ser aberta em um firewall. Em resumo, se você usa o hosts.allow/deny, root_squash, nosuid e características de privilégios nas portas do software portmapper/nfs, evita muitos dos bugs conhecidos do nfs e pode se sentir quase seguro. Mas, afinal: quando um invasor tem acesso à sua rede, ele pode fazer comandos desconhecidos aparecer em seu /var/spool/mail montado dentro do NFS. Por essa razão, você nunca deve ter acesso à sua chave privada PGP dentro do NFS. Ou então deve ter total conhecimento dos riscos que isso implica. E agora você já conhece um pouco disso. O NFS e o portmapper formam um subsistema complexo e, portanto, não é totalmente improvável que novos bugs serão descobertos, ou em seu projeto básico ou na implementação que nós usamos. Pode, talvez, existir falhas conhecidas agora, a qual alguém está atacando. Qual é a vantagem de se usar NFS? Simples, você pode exportar uma unidade de um CD para uma máquina que não tenha CD-ROM e esta poderá usar como se fosse um CD-ROM local, ou todas as máquinas poderão usar essa unidade também.

191

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

Anotações:

192

Global Sul Informática

193

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

Capítulo 11

SAMBA – Cliente e Servidor
Você provavelmente já ouviu fala em “samba” no sistema Linux e com certeza, assim como todo mundo faz você fez a analogia ao samba que conhecemos. Mas não nada disso, sambódromos a parte, o samba1 no sistema Linux nada mais é servidor do que um poderoso servidor o que permite que uma rede windows converse de modo transparente com uma rede Linux. Com o servidor samba é possível compartilhar serviços (arquivos, diretório, impressão) através do protocolo SMB – Server Message Block e CIFS – Common Internet File System, equivalentes a implementação NetBEUI no Windows. O servidor samba é uma das soluções em ambiente Linux capaz de interligar redes heterogênea e é de graça, licenciado pelo GPL, você não vai precisar pagar R$ 1.000,00 (mil) por um servidor de impressão. Usuários de redes Windows poderão enxergar e navegar, apagar, copiar mover, criar e remover diretórios, executar programas etc em uma máquina Linux como se esta fosse uma extensão de seu computador e vice-versa de modo transparente. Aqui vamos aprender o básico de como é que devemos proceder para fazer com que micros pertencentes a uma rede Linux e micros pertencentes a uma rede Windows possam compartilhar informações. Se for configurado de modo correto é perfeitamente possível e fica totalmente transparente para o usuário, pois esse tipo de tarefa é feita pelo administrador da rede; portanto, prepare-se para ser um deles. Na atualidade, redes locais tornaram-se um padrão e uma necessidade em grande parte, senão na maioria, das organizações desde micro, média e grandes empresas. Em inúmeros casos, essas redes são compostas por clientes Windows que utilizam um servidor Windows NT, Windows 2000, Netware, Unix etc. como repositório de dados, controlador de acesso às informações e gerenciador de tarefas de impressão. Com a popularização do sistema Linux, em especial no mercado latino-americano, muitas redes passaram a utilizar o Linux como cliente ou estação de trabalho, pois é muito mais confiável e seguro pelo fato de não cair, “não ter tela azul”, ou seja, aquilo que todos nós já sabemos, em redes mistas com servidores ou clientes Windows. O quadro pode ser extremamente heterogêneo, onde as funcionalidades e facilidades de cada plataforma podem ser exploradas pelo usuário de forma produtiva e adequada às suas necessidades. Aspectos como robustez, performance, estabilidade, baixo custo e farta disponibilidade de aplicativos inerentes ao Linux podem ser aproveitados na sua plenitude, sem que isso signifique uma mudança radical de plataforma num primeiro momento.
DICA: A escalabilidade do SAMBA é muito boa eu diria até excelente. Empresas então usando com mais de 500 (quinhentos) clientes e obtendo uma performance excelente. Cada cliente SAMBA ocupa cerca de 600 a 800 K de memória no servidor dependendo do tipo de utilização, use esse parâmetro para cálculo da memória do seu servidor. Desta forma, ele vem substituindo os servidores Windows, OS2, Netware e Unix, devido à sua estabilidade e à necessidade de pouco em termos de hardware.

Outra grande vantagem é dele e de ser licenciado pelo GPL, de livre distribuição, sem limite de usuários ou custos por licença. Tecnicamente também há ganhos em performance e segurança de dados.

194

Global Sul Informática

Características do servidor
O servidor samba possui inúmeras características muito boas e interessante para o administrador, a seguir veja algumas delas: — Ele compartilha arquivos entre as máquinas Windows e Linux ou de máquinas Linux (sendo o servidor SAMBA) com outro SO que tenha um cliente NetBEUI (Macintosh, OS/2, LanManager, etc). — Ele permite montar um servidor de compartilhamento de impressão no Linux que receberá a impressão de outras máquinas Windows da rede, isso é você pode perfeitamente ter seus documentos e mandar imprimir remotamente em uma máquina Linux onde há uma impressora compartilhada. — Controle de acesso aos recursos compartilhados no servidor através de diversos métodos (compartilhamento, usuário, domínio, servidor). Controle de acesso leitura/gravação por compartilhamento e também po usuário autenticado. — Possibilidade de definir contas de “Convidados”, que podem se conectar sem fornecer senha. Isso é interessante pois não é necessário ter que cadastrar um usuário para que ele só de vez em quando acesse uma máquina Linux. O samba pode usar o banco de dados de senha /etc/passwd. — O samab permite que o conteúdo de determinados diretórios fiquem ocultos, também permite auditoria tanto dos acessos a pesquisa de nomes na rede como acesso a compartilhamentos. Entre os detalhes salvos estão a data de acesso, IP de origem, etc. — O samba permite montar unidades mapeadas de sistemas Windows ou outros servidores Linux como um diretório no Linux, conforme você poderá confirmar nas figuras desse capítulo. — O samba permite a configuração de recursos simples através de programas de configuração gráficos, tanto via sistema, como via web. A configuração poderá ser feita pelo linuxconf, pelo webmin, pelo swat e por outros programas gráficos que você encontrar pela Internet. — Permite executar comandos no acesso ao compartilhamento ou quando o acesso ao compartilhamento é finalizado. Tal como smbtar e outros. E mais um monte de outras coisas legais.

Arquivos de configuração do Samba
O servidor samba é divido em duas partes :
1. Arquivo de configuração /etc/samba/smb.conf. 2. Serviços SMBD e NMBD.

O arquivo smb.conf está localizado no diretório /etc/samba , sendo responsável por toda a configuração nos acessos aos diretórios, arquivos e impressão. Dentro do arquivo /etc/samba/smb.conf existem algumas subdivisões que devem ser respeitadas para uma correta configuração. O processo SMBD verifica a porta 139 (porta usada pelo samba) e replica-se a cada solicitação do cliente na realização de tarefas de impressão e compartilhamento de arquivos. O protocolo SMB foi originado na plataforma MS-DOS e se dispõem a cobrir os aspectos de segurança de forma direta. Todo o recurso compartilhado pode estar protegido por uma senha, a qual pode ser implementada de duas formas distintas:
1. Senha por compartilhamento: Onde cada item compartilhado como discos, diretórios, impressora etc. tem uma senha própria. 2. Senha por Usuário: Neste caso todo o usuário deve identificar-se no servidor através de um nome e de uma senha. Após uma validação positiva, o servidor fornecerá os acessos de acordo com as permissões predefinidas para o usuário.

O processo NMBD recebe todo o tráfego da porta UDP/137 e UDP/138 para os serviços de nomes, registros e browsing (navegação). A diferença entre os dois métodos é definida no próprio servidor, não podendo coexistir para um mesmo recurso compartilhado através da rede. Se você pretende diariamente usar o Samba em sua intranet é bom deixá-lo ativo logo na inicialização. Para isso pode use ntsysv e marque os serviços do samba. Conforme sua distribuição você poderá encontrar duas linhas: smbd e nmbd ou então a opção samba. O importante é que você marque essas opções.

195

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

Principais arquivos do servidor samba
O servidor samba possui vários arquivos mas nós usaremos poucos deles para aprendermos nesse capítulo. Para saber quais são digite smb e pressione duas vezes a tecla TAB e você terá a listagem abaixo:
[root@gabriel root]# smb smbadduser smbcontrol-srv smbpasswd smbstatus smbcacls smbd smbpasswd-srvsmbstatus-srv smbclient smbd-srv smbprint smbtar smbclient-srv smbmnt smbspool smbumount smbcontrol smbmount smbspool-srv

A seguir eu lhe apresento um resumo de alguns deles para que você saiba o que cada um faz: smbadduser: Permite o cadastramento de novos usuários no servidor e segue a seguinte regra: unixid:ntid ou seja bonan:adilsonbonan. Um nome válido padrão Unix para um nome válido padro NT. Exemplo:
[root@gabriel futura]# smbadduser sulamita ERROR: Must use unixid:ntid like -> zak:zakharoffm [root@gabriel futura]# smbadduser sulamita:sulamita Adding: sulamita to /etc/samba/smbpasswd ---------------------------------------------------------ENTER password for sulamita New SMB password: Retype new SMB password: Password changed for user sulamita. Password changed for user sulamita. [root@gabriel futura]# smbadduser janaina:janaina Adding: janaina to /etc/samba/smbpasswd ---------------------------------------------------------ENTER password for janaina New SMB password: Retype new SMB password: Password changed for user janaina. Password changed for user janaina. [root@gabriel futura]# cat /etc/samba/smbpasswd adilson:500:134D56C76640A683AAD3B435B51404EE:822F3F0C6A348CC441EE7 E3C30FBF0FD:[UX]:LCT-3F6CF4DB: gabriel:501:E974D02472809498AAD3B435B51404EE:1D6154A0227577A83164B 24184EC7C00:[UX]:LCT-3F6CF4D5: sulamita:503:ECB2A658A1353072AAD3B435B51404EE:F406178D9213F304E5FB 9D28D1CB4AB2::/home/sulamita:/bin/bash janaina:506:C04F781A2CDE10A3AAD3B435B51404EE:DD1BACC2C216A4B694B82 F62CBE8A498::/home/janaina:/bin/bash

O arquivo cat /etc/samba/smbpasswd guardará os usuários es suas respectivas senhas criada pelo samba. smbpasswd: Depois que você criou usuários, permite que você adicione senhas de acessos para esses usuários. Exemplo:
# smbpasswd -a adilson New SMB password: Retype new SMB password

Passe as duas senhas corretas e o usuário adilson passará a valer no sistema e poderá usar o servidor samba. Uma dica interssante seria, se você quiser, use o comando mksmbpasswd /etc/passwd /etc/ samba/smbpasswd para converter toda a base de usuários do /etc/passwd e gerar um arquivo /etc/samba/smbpasswd contendo as contas destes usuários. Por padrão, todas as contas são DESATIVADAS por segurança quando este novo arquivo é criado. O novo arquivo terá o seguinte formato:

196

Global Sul Informática

adilson:500:134D56C76640A683AAD3B435B51404EE:822F3F0C6A348CC441EE7 E3C30FBF0FD:[UX]:LCT-3F6CF4DB: gabriel:501:E974D02472809498AAD3B435B51404EE:1D6154A0227577A83164B 24184EC7C00:[UX]:LCT-3F6CF4D5: sulamita:503:ECB2A658A1353072AAD3B435B51404EE:F406178D9213F304E5FB 9D28D1CB4AB2::/home/sulamita:/bin/bash janaina:506:C04F781A2CDE10A3AAD3B435B51404EE:DD1BACC2C216A4B694B82 F62CBE8A498::/home/janaina:/bin/bash

Vaja algumas opções do smbpasswd: – smbpasswd -U anarosa: Para ativar a conta do usuário anarosa depois a senha do usuário e repita para confirmar. Assim que a senha for definida, a conta do usuário é ativada. – smbpasswd -U áurea: Para Adicionando usuários do smbpasswd. – smbpasswd -x fabiano: Para remover um usuário fabiano do arquivo smbpasswd. Se desejar, você pode manter o usuário no /etc/passwd ou removê-lo com o userdel. Se você remover um usuário deste arquivo fará que ele não tenha mais acesso ao SAMBA. – smbpasswd -d henrique: Para desabilitar temporariamente o usuário henrique no smbpasswd caso ele estaja usando “demais” sua conta, ou seja, enchendo o HD de MP3, fotos e downloads de Windows. – smbpasswd -e luzia: Para habilitar uma conta no smbpasswd que foi desativada com o uso do comando smbpasswd -d. Agora a usuária luzia poderá usar o sistema novamente, conforme os agrados, é claro. :-) – smbpasswd -r servidor -U andersom: Para alterar a senha do usuário remoto andersom. A opção -r servidor pode ser o IP ou um nome remoto, porém a senha antiga do usuário sempre será solicitada para troca, pois lembre-se que o usuário root de uma máquina pode não ser o mesmo de outra. – smbpasswd -n adilson: Para fazer o usuário adilson acessar sem senha. Não é uma coisa muto interessante pois é necessário que a opção null passwords da seção [global] no arquivo /etc/samba/smb.conf esteja ajustada para yes (que NÃO é o padrão). Mas eu lhe pergunto: — Para quê entrar sem senha, só para não termuita segurança e ficar mais vulnerável? Lembre-se do velho ditado: – Quanto menos souberem do teu sucesso, mas rápido você o alcaçará. Pois tem menos para puxar o teu tapete. smbstatus: Mostra o status do servidor samba. O programa smbstatus informa a situação atual das conexões Samba. Pode ser usado na linha de comando com as seguintes opções:
-b: fornece uma saída resumida e -d: fornece uma saída comentada. -L: faz com que o programa relacione somente os recursos em uso. -p: relacione os processos servidores smbd e finaliza. Útil para ser usado em programas. -S: relacione todos os compartilhamentos definidos. -s arquivo de configuração: permite que seja utilizado um arquivo de configuração diferente do definido em tempo de compilação. -u nome do usuário: relaciona as informações relevantes sobre o usuário informado.

smdb e nmdb: São os processos (daemons) que colocarão o samba no ar. Eles devem ser usados depois que o arquivo de configuração /etc/samba/smb.conf foi editado com as regras para os usuários. Toda vez que você fizer uma alteração nesse arquivo você deverá “derrubar” e “levantar” esses processos para a nova configuração seja válida smbclient: Depois de tudo configurado certinho, mostra os compartilhamentos disponíveis para uso. Exemplo:
# smbclient -L 10.6.12.150 Can't find include file /etc/samba/smb.conf. added interface ip=10.6.12.250 bcast=10.255.255.255 nmask=255.0.0.0 session request to 10.6.12.150 failed (Called name not present) session request to 10 failed (Called name not present) Password: Domain=[EDFUTURA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] Sharename --------Impressora IPC$ SharedDocs print$ Type ---Printer IPC Disk Disk Comment ------hp deskjet 656c series IPC remoto Drivers de impressora

197

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

NOTEBOOK (C) DVD-NOTEBOOK TEMP Disk ADMIN$ DOWNLOAD-5 Disk C$ Server --------NOTEBOOK Workgroup --------EDFUTURA LINUX

Disk Disk Disk Disk Administra remota Recurso compartilhado padrão Comment ------NOTEBOOK Master ------NOTEBOOK GABRIEL

O comando smbclient -L 10.6.12.150 mostrou os compartilhe-mentos da máquina 10.6.12.150 e nós ficamos sabendo no notebook (10.6.12.150) tem impressora compartilhada, tem DVD compartilhado, tem a pasta TEMP e o disco C (isso não é muito aconselhável) e também tem uma pasta DOWNLOAD-5 compartilhada. Há dois grupos de trabalhos, o da máquina GABRIEL com grupo LINUX e NOTEBOOK com EDFUTURA como grupo. E ficamos sabendo também que o notebook usa o Windows XP (Windows 5.1) e seu servidor Windows 2000 conforme: Domain= [EDFUTURA] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]. Se o arquivo /etc/samba/smb.conf tiver erros de configuração ou o samba não estiver no ar (samba start) o comando smbclient não funcionará. Exemplo:
[root@gabriel root]# smbclient -L 10.6.12.250 Can't find include file /etc/samba/smb.conf. added interface ip=10.6.12.250 bcast=10.6.12.255 nmask=255.255.255.0 error connecting to 10.6.12.250:139 (Connection refused) Error connecting to 10.6.12.250 (Connection refused) Connection to 10.6.12.250 failed

smbprint: Permite que seja usado recursos de impressão. smbtar: Do mesmo modo que você usa o comando tar poderá usar o comando smbtar. Isso é útil para que você faça backup´s. Este programa possibilita a geração de cópias de segurança de compartilhamentos SMB/CIFS diretamente em fitas magnéticas sob o Unix. Pode ser acionado através da linha de comando com as seguintes opções:
–s servidor: Gera a cópia de segurança do servidor SMB informado. –x serviço: Gera a cópia de segurança dos arquivos residentes no serviço (compartilhamento). –X : Modo de exclusão, onde se pode omitir arquivos na criação ou restauração. –d diretório: Altera o diretório inicial antes de restaurar ou copiar os arquivos. –v: Modo informativo. –p senha: Informa a senha de acesso ao recurso. –u usuário: A identificação a ser usada na conexão. –t : Dispositivo de saída. Pode ser um arquivo regular ou um dispositivo de fita. O padrão é igual à variável de ambiente TAPE. –b tamanho de bloco: Define o tamanho do bloco a ser utilizado no arquivo de saída. –n nome do arquivo: Copiar somente os arquivos que são mais recentes que o arquivo definido. Pode ser usado para a criação de cópias de segurança incrementais. –i modo incremental: Arquivo tar somente serão copiados caso tenham o bit de configuração ativos e -r restaurar: os arquivos serão copiados do arquivo tar para a área compartilhada.

Uma interessante aplicação do smbclient é a produção de cópias de segurança em um formato padrão e comum a todas as plataformas. Todos os arquivos da máquina SMB/CIFS serão guardados no formato de arquivo tar. Por exemplo, para criar um arquivo chamado copia.tar contendo todos os arquivos sob o diretório usuarios/docs do serviço windows01/usuarios, pode-se executar o seguinte comando:
# smbclient //notebook/temp “” -N -Tc copia.tar usuarios/docs

198

Global Sul Informática

smbmount e smbumount: Use o comando smbmount para criar pontos de montagens padrão samba e o comando smbumount para desmontar esses pontos de montagens. Também é possíel usar o comando smbmount para montar. Seu uso é simples:
# mount -t smbfs -o username=<nome_usuário>,password=<senha_usuário> //origem/diretório /destino/diretório

Viu como é simples? Só não é interessante você passar o nome de usuário e senha pela linha de comando. O melhor é fazer assim:
# mount -t smbfs //notebook/c /mnt/notebook

Esse comando monta o disco C do notebook no /mnt/notebook após ser informada a senha correta. Para testar se o servidor está funcionando, digite o seguinte comando smbclient -L servidor -U usuario e digite a senha de usuário quando solicitado. Caso a senha for informada errada não haverá conexão. Exemplo:
[root@gabriel MP3]# mount -t smbfs //notebook/c /mnt/notebook/ INFO: Debug class all level = 1 (pid 2545 from pid 2545) Password: 2545: tree connect failed: ERRDOS - ERRnosuchshare (You specified an invalid share name) SMB connection failed

9. smbstatus: Use-o para saber a situação atual das conexões do servidor samba do seguinte modo: – smbstatus -b: Lista o PID, usuário, nome da estação e data de acesso de quem está neste momento conectado no servidor. – smbstatus -p: Lista os processos smbd e finaliza em seguida. Útil quando utilizado em programas. – smbstatus -S: Lista todos os compartilhamentos definidos e smbstatus -s: Permite utilizar outro arquivo de conffiguração (smb.conf2 por exemplo), que deve ser especificado após a opção. – smbstatus -u: Lista as informações rellevantes sobre o usuário, que deve ser especificado após a opção. 10. Os utilitários testparm e testprns: O programa testparm é utilizado na verificação da configuração do arquivo /etc/samba/smb.conf. Ele pode ser utilizado na linha de comando, e caso o programa indique que não há problemas com o arquivo, pode ser utilizado na configuração de um servidor smb. Para testar se seu arquivo de configuração está certo use o assim:
# testparm /etc/samba/smb.conf

E então leia atentamente o resultado apresentado na tela, se algo estiver errado você poderá voltar e configurar editar o arquivo novamente. O programa testprns verifica o nome da impressora junto ao servidor smbd, a fim de determinar se há um nome válido sendo informado para uso pelo serviço de impressão. Válido nesse contexto significa que pode ser encontrada uma entrada em printcap para a impressora informada e que pode ser ativado da seguinte forma:
testprns nome_da_impressora [nome_do_arquivo_printcap]

Caso seja encontrada uma impressora válida, será apresentada a mensagem “Impressora <nome da impressora> é válida”. O arquivo de definições de impressoras pode ser normalmente encontrado em /etc/ printcap.

199

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

Executando os servidores
Antes de mais nada você deve lembrar que o serviço de rede inetd deverá estar no ar. Caso não esteja, isso poderá ser feito pelos comandos:
# /etc/rc.d/init.d/inet stop # /etc/rc.d/init.d/inet start

Os dois servidores SMB são denominados /usr/sbin/smbd e /usr/sbin/nmbd. Para que a rede possa funcionar, esses servidores devem estar permanentemente ativos. Caso algum deles seja finalizado por qualquer motivo, há uma forma de fazer com que ele seja reinicializado imediatamente. Para tanto eles devem ser executados a partir do servidor de rede inetd. Neste caso insira ou edite as seguintes linhas no arquivo /etc/inetd.conf:
# Serviços NetBIOS e SAMBA # (para compartilhamento de arquivos e impressoras) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Para inicializar os servidores automaticamente quando todo o sistema for iniciado, acione o programa ntsysv e torne a opção smb ou samba ativa, mas isso vai depender de sua distribuição. Após alterar algum parâmetro de configuração, esteja seguro de reinicializar o servidor para que os parâmetros sejam ativados. Esse procedimento é realizado a partir dos seguintes comandos:
# /etc/rc.d/init.d/smb stop # /etc/rc.d/init.d/smb start

Após feitas todas as configurações que aprenderemos na seqüência para colocar o samba no ar, que é muito simples, o comando samba start já é o suficiente. Porém, se sua distribuição não tem esse script, você poderá criá-lo e colocá-lo em /usr/sbin/, veja como (Após criar o seu script use o comando chmod 755 / usr/sbin/samba. Desse modo ele será um executável):
#!/bin/sh # Gerencia os servidores do Samba (smbd e nmbd) # usados para fornecer os serviços de rede SMB. . /etc/rc.d/init.d/functions . /etc/sysconfig/network [ ${NETWORKING} = "no" ] && exit 0 [ -f /etc/smb.conf ] || exit 0 unset TMP TMPDIR case "$1" in start) gprintf "Iniciando %s servicos: " "SMB" daemon smbd -D echo gprintf "Iniciando %s servicos: " "NMB" daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) gprintf "Parando %s servicos: " "SMB" killproc smbd echo gprintf "Stopping %s services: " "NMB" killproc nmbd echo rm -f /var/lock/subsys/smb ;; status) status smbd status nmbd ;; restart) $0 stop

200

Global Sul Informática

*) esac

$0 start ;; gprintf "Use: %s {start|stop|status|restart}\n" "samba" exit 1

:: Ambiente de rede do XP e compartilhamentos Windows e Linux

Como podemos ver aqui no ambiente Windows XP, há compartilha-mentos em uma máquina Linux chamada Gabriel que usa o servidor samba. Nessa máquina temos vários compartilhamentos, entre eles o GabrielHD, JanainaHD, AdilsonHD etc. Olha só que moleza! Depois que você configurou o servidor samba, usando o konqueror (KDE), você poderá acessar transparentemente uma máquina Windows sem nenhum problema, desde que você tenha autorização para isso, é claro. Na próxima figura a estação Windows foi montada pelo samba e o konqueror é usado para fazer as tarefas rotineiras de disco: copiar, colar, pesquisar, exibir, apagar etc. Figura X: Ambiente Linux acessando ambiente Windows.

Algo interessante de ser observado é que como estamos falando de redes TCP/IP nós poderemos montar uma estação que poderá estar fora na nossa “jurisdição”, seguindo essa idéia é como se tivéssemos um cliente de ftp na nossa frente. Na internet você vai encontrar inúmeras dicas legais para uso do samba em conjunto com o Windows. É bom lembrar que você precisa ter diretos de conexão em um compartilhamento samba, não é porque você o poderá estar vendo que já entrando assim numa boa. Algumas pastas são visíveis. porém o seu conteúdo não, é preciso de autorização para ver o que tem lá dentro da área 51. :-)

201

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

E não se esqueça que, agora podendo ver o conteúdo de um compartilhamento, esse poderá ser somente para leitura, e não será autorizado a exclusão de arquivos. No samba, alguns usuários podem ter acesso somente leitura e outros pode ter leitura e escrita.

Configurando o Samba
Hoje é possível fazer a configuração do Samba por vários meios, desde a configuração “braçal”, ou seja, editando o /etc/samba/smb.conf com o editor vi, pico, joe, jed, kedit, gedit, emacs, gvim etc. eu lhe aconselho o bom e velho vi pois ele colore as tags de configuração do arquivo smb.conf e facilita muito a configuração. Ou através de uma edição mais “amigável” usando o linuxconf ou o swat com o netscape ou mesmo outros utilitários que existem por aí. Porém, o que importa é que a coisa funcione bem, e que não seja preciso pagar uma fortuna por um servidor de impressão sob o Windows NT, sendo que existe o Samba e é gratuito. Pense na economia que isso irá gerar em qualquer empresa. O arquivo /etc/samba/smb.conf O arquivo smb.conf é constituído por seções e parâmetros. Seções são iniciadas por um nome encerrado entre colchetes, como por exemplo [global], [homes], [printers], [temp] etc. Parâmetros estão inseridos em seções e são definidos no formato “nome=valor”. Cada seção do arquivo de configuração descreve um compartilha-mento específico, exceto a seção [global] que é aplicada a todos os compartilhamentos do servidor. O nome da seção é igual ao nome do recurso compartilhado. Há três seções com nomes especiais:
1. [global] 2. [homes] 3. [printers]

As permissões de acesso ao servidor são definidas de acordo com os padrões Unix.

Configurando pelo modo texto
A configuração do Samba pelo modo texto é feita geralmente por usuários mais experientes que sabem exatamente onde é que devem ser feitas as alterações ou adicionar novas informações para que o servidor Samba funcione da maneira adequada. A configuração é feita editando o arquivo /etc/samba/smb.conf. Os “#” e “;” são comentários. Para ativar a opção apenas tire o comentário. O arquivo apresentado aqui não é necessariamente a configuração que você irá fazer, pois aqui ele está apresentado com explicações para fins didáticos, que através dele você vai preparar o seu arquivo de configuração para as suas reais necessidades: [global] A Seção [global] significa que a configuração especificada abaixo aplica-se ao servidor ou são gerais. Enfim, é a base para o funcionamento do Samba. ; shared mem size = 1048576 Especifica a quantidade de memória do servidor SAMBA quanto mais melhor, mas 10 MB já é bastante para cinco a dez estações. workgroup = LINUX Nome do workgroup que as estações Windows irão mostrar. server string = Servidor Samba %h - Versão %v Observação que irá aparecer sobre o computador, e caso a observação do compartilhamento esteja vazio o compartilhamento usará essa observação. ; announce as = NT Server Especifica o tipo de servidor nmbd (Servidor de Nomes NetBIOS) que será divulgado na rede. O padrão é igual a Windows NT. As opções válidas são "NT", "NT Server", "NT Workstation", "Win95" ou "WfW". ; logon script = %U.bat O diretório-base dos logon scripts é o volume [netlogon]. No exemplo, se o diretório de compartilhamento netlogon for igual a ‘/home/samba/netlogon’, o script do usuário ‘adilson’ seria procurado em /home/samba/netlogon/adilson.bat. ; hosts allow = 150.203. EXCEPT 150.203.6.66 150.203.15.0/255.255.255.0

202

Global Sul Informática

Este parâmetro define o conjunto de máquinas que podem acessar o servidor Samba. Pode-se utilizar o nome ou o endereço IP da máquina. É possível, por exemplo, restringir o acesso a somente uma sub-rede de classe C, como em ‘allow hosts = 150.203.5.’. Pode-se ainda usar o sub-parâmetro "EXCEPT" para excluir alguma(s) máquina(s), como por exemplo: ; hosts allow = edfutura @academicos Abaixo abre acesso para edfutura e somente hosts no NIS com o grupo da net: academicos ; hosts deny = 150.203.5. microsoft.com microsoft.com.br Exatamente o oposto do parâmetro anterior, pois aqui podem ser listadas todas as máquinas que não devem ter acesso aos serviços. printcap name = /etc/printcap load printers = yes Carrega a configuração das impressoras que estão instaladas no servidor Samba ; printing = bsd Tipo de impressão padrão, caso não funcione normalmente, bsd, sysv, plp, lprng,aix, hpux, qnx. Se usar CUPS coloque cups. ; guest account = guest Transforma todos os usuários que de algum modo foram indicados como visitantes em usuário guest. log file = /var/log/samba/log.%u Criará um arquivo de log para cada usuário. Ex. log.adilson. É possível usar %m para obter logs por máquinas. max log size = 50 Tamanho máximo permitido para um log. debug level = 1 Nível do log, enquanto maior mais detalhes são mostrados. É recomendado usar até 2 e o nível 0 representa nenhum. keepalive = 20 ... Máquinas Windows tendem a travar de tempos em tempos. Este parâmetro é utilizado para verificar o estado da conexão, a cada 20 segundos.

Autenticação de usuários — modalidade de segurança
A seguir vamos falar um pouco sobre segurança no Samba: security=share Sem segurança. Todo e qualquer usuário será aceito. As operações de arquivo e impressão serão executadas com as permissões do usuário Unix associado ao hóspede (guest account = ...). Se você escolher essa modalidade, verifique se o usuário Unix terá permissões suficientes para acessar arquivos e, se for o caso, imprimir. Assim, senhas de acesso são solicitadas por recurso compartilhado e não por usuário. Ou seja: cada diretório ou impressora poderá ter uma senha única conhecida por todos os usuários autorizados. security=user Segurança por usuário, local. A senha do usuário é reduzida a letras minúsculas e confrontada com a senha Unix. Essa modalidade de segurança obriga que os usuários sejam cadastrados no Linux, e suas senhas sejam atribuídas corretamente. As operações sobre arquivos e de impressão serão feitas com a permissão do respectivo usuário Unix. Todavia, pode-se abrir aos hóspedes o acesso a determinados volumes ou impressoras — para esses objetos, a segurança operará no estilo SHARE. security=server Segurança por usuário, remota. O Samba pega o nome de usuário e a senha, e autentica junto a outro servidor, que poderá ser outro Linux rodando Samba, ou um Windows NT. Apesar da autenticação ser remota, ainda é necessário criar os usuários Unix localmente em determinados casos. security=domain Segurança por usuário, remota. Praticamente idêntica à modalidade SERVER, porém convive com instalações mais complexas onde existem computadores NT operando como PDCs (primary domain controllers) e BDCs (backup domain controllers). Nesse modo, mais de um servidor de autenticação pode ser especificado na linha password server do arquivo de configuração.

203

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

Continuação do /etc/samab/smb.conf: map to guest = Bad User Quando tentarem efetuar um login, e o usuário ou a senha não sejam válidos, será repassado para o usuário visitante: Onde são válidos: “Bad User” (mau usuário), “bad password” (má senha)ou “never” (não será repassado para o usuário visitante). ; password server = Senhs_server Servidor de senhas, ou seja, o NetBIOS da máquina a qual o Samba vai fazer autenticações. ; password server = <NT-Server-Name> Especifica o nome do servidor de usuários e senhas, quando especificado security = server. ; password level = 8 ; username level = 8 Quando a senha não for válida tente oito modos diferentes. Ex.: Para uma senha ou usuário “abcdefgh”, tente abcdefgh Abcdefgh aBcdefgh ... ABCDEFGh ABCDEFGH. ; encrypt passwords = yes ; smb passwd file = /etc/smbpasswd O Windows 98, bem como versões mais recentes do Windows NT Workstation, transmitem senhas criptografadas no processo de autenticação. Como não é possível usar o mesmo padrão de criptografia, é necessário executar o programa smbpasswd para a criação de senhas criptografadas. ; unix password sync = Yes ; passwd program = /usr/bin/passwd %u ; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* ; username map = /etc/smbusers É usado para sincronizar a alteração de senhas feitas no Windows, para o servidor linux. Usuários UNIX não precisam necessariamente ter o mesmo nome dos usuários NetBIOS. A tabela /etc/smbusers permite estabelecer equivalências entre nomes de semelhantes. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 Esta opção é um tuning de performance. Em muitos casos ela realmente melhora o desempenho. ; max xmit = 16384 É o tamanho do pacote de dados enviado para as estações, normalmente é melhor deixar tudo com 16 KB em se tratando de interfaces de rede tipo NE2000. ; remote announce = 192.168.2.255/GABRIEL Esta opção indicará para as máquinas da rede 192.168.2.255, que esta máquina estará no grupo de trabalho GABRIEL, além do grupo original. ; remote browse sync = 192.168.3.25 192.168.5.255 Esta opção vai anunciar para outra rede, que existe o workgroup remoto e que pode ser acessado. local master = yes Navegador-mestre local (local master browser). É um servidor onde são guardados os nomes das máquinas que existem na rede windows. Configure a seguinte opção como “no” se você não quiser que o Samba se torne um mestre local. Do contrário, as regras normais de eleição é que valerão (ou seja, local master = yes NÃO garante que o Samba seja o mestre local). os level = 33 Nïvel do sistema operacional, que determina sua preferência em tornar-se mestre local. Quanto maior o número, maior a chance de o servidor tornar-se um mestre. O padrão do Windows NT é 32. Evite colocar o mesmo número de alguma máquina Windows, pois a mesma não gosta de perder eleições para máquinas Linux que tenham o mesmo número. ; domain master = yes Se a seguinte linha for configurada como “yes”, o Samba será o navegador-mestre do DOMÍNIO. Não use esta opção se você já tem um servidor NT que seja o PDC. preferred master = yes Esta opção força uma eleição para mestre local quando o Samba é acionado, e lhe dá uma pequena vantagem na disputa. Não habilite esta opção em mais de uma máquina, do contrário os diversos 'preferred masters' vão ficar promovendo eleições para mestre o tempo todo; isso causará tráfego inútil de

204

Global Sul Informática

rede e pode prejudicar a qualidade das listas de navegação; por exemplo: elas poderão não conter todas as máquinas da rede e não ficará tão lento, se tudo estiver configurado corretamente. ; domain controller = <NT-Domain-Controller-SMBName> Use somente se existe um NT SERVER em sua rede, configurado para ser o primeiro domínio de controle. ; domain logons = yes Caso seja habilitado, tornará o linux um domínio de login, para estações windows 95 time server = True Sicroniza a data do sevidor para as estações. Interessante para ter controle sobre data/hora de criação de arquivos e coisas do gênero. E em sua máquina Windows/MS-DOS digite para configurar a hora: net time /set /yes. name resolve order = wins lmhosts bcast É a forma de como será procurada a máquina: As opções são: lmhosts, host, wins e bcast lmhosts – Tenta usar um arquivo de configuração do Samba. Hosts - Tenta resolver o nome pelo ip, usando o /etc/hosts, o NIS ou o DNS. Wins – Procura o ip no servidor wins. Bcast – Procura a máquina por Broadcast. É recomendável deixar sempre o bcast como último recurso, pois assim pelo menos a rede local continuará funcionando se por acaso ficar isolada das demais redes. ; wins support = yes A comunicação inter-redes Wins grava as informações repassadas pelos servidores masters de cada rede e possibilita que uma rede converse com outra. Ao retransmitir essas informações do mestre de domínio, o mestre obtém a lista de servidores mestre do servidor Wins. Essa retransmissão demora em média 15 minutos, e usa endereços IP. ; wins server = 10.120.1.26 Indique aqui o IP do servidor WINS da instalação. Se o computador for ele mesmo o servidor WINS (a linha “wins support = yes” está ativa), não use esta opção, pois do contrário o Samba acabará conectando a si mesmo, recursivamente, e *travará*. ; wins proxy = yes Se o nmbd responder às perguntas do nome da transmissão em nome de outras máquinas. Você pode necessitar ajustar este a “sim” para alguns clientes mais velhos. dns proxy = no Diz ao Samba se é ou não para tentar resolver nomes netbios, através do nslookup do DNS. ; preserve case = yes Diz para o SAMBA preservar o nome do arquivo como foi enviado pela estação. ; short preserve case = yes Diz para o SAMBA interpretar minúsculas como minúsculas. ; interfaces = 168.1.1.1/24 10.120.1.24/16 Se a máquina possuir mais de uma placa de rede, é necessário estabelecer em que interface(s) o Samba vai atuar. Note que isso NÃO é suficiente para evitar conexões originárias de redes diferentes da(s) especificada(s), pois os soquetes UDP do Samba ‘ouvem’ em todas as interfaces. Veja a linha “hosts allow”, mais acima, para configuração de segurança. No exemplo abaixo, a máquina tem 2 intefaces, cujos números IP e netmasks estão bem óbvios. [homes] comment = Diretórios Pessoais A seção [homes] especifica que deve ser ativado um serviço que permite o acesso aos diretórios pessoais de seus respectivos usuários. Isso permite que os usuários acessem seu home. browseable = no Evita que os diretórios pessoais sejam vistos por outros usuários read only = no Samba proíbe por padrão a gravação em recursos exportados. O parâmetro a seguir permite que os usuários possam gravar em seus diretórios pessoais. guest only = no Permite que apenas o hóspede(convidado) tenha acesso ao volume ou impressora que contiver o parâmetro guest only = yes. writeable = yes Permite que exista gravação no compartilhamento.

205

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

[printers] A seção [printers] especifica como se configura uma impressora, para ser usada pelo Samba, ou faz o sistema ler as configurações do printcap. A configuração abaixo fará com que os usuários das estações Windows vejam todas as impressoras do servidor. ; printer name = laserwriter comment = Spool de Impressão path = /var/spool/samba Este parâmetro define o nome da impressora para a qual os serviços de impressão serão enviados. Exemplo: browseable = no Controla se o compartilhamento será visualizado na lista de recursos disponíveis. O padrão é: guest ok = no Caso este parâmetro seja definido como “yes” para um serviço, então nenhuma senha será solicitada ao usuário. Os privilégios serão iguais aos definidos para a conta “guess account” definida no parâmetro anterior. Exemplo: ; read only = no ; writeable = yes ; write ok = yes Caso este parâmetro seja definido como "no", não será permitida a criação ou modificação de arquivos no diretório compartilhado. Note-se que o parâmetro "printable = yes" sempre permitirá a gravação através de operações de geração de arquivos temporários de impressão. Exemplos: São iguais printable = yes Caso public seja = yes não é necessário possuir uma senha para entrar no compartilhamento. public = no read only = yes Este parâmetro permite que a seção atual seja uma cópia de qualquer seção anterior. Caso haja necessidade de alterar um parâmetro, basta informá-lo na seção atual. Esta funcionalidade é muito útil para a criação de modelos que podem ser replicados e rapidamente alterados para todos os recursos compartilhados.
[home] copy = homes guest ok = yes read only = yes

Especifica o diretório ao qual o usuário do serviço terá acesso. No caso de impressoras, será o diretório de arquivos temporários de impressão. Exemplo:
[PUBLICO] comment = Diretorio Publico path = /home/samba public = yes guest ok = yes printable = no

Permite configurar o número máximo de conexões simultâneas a esse serviço. Exemplo: ; max connections = 10 Permite definir um limite aparente da área em disco que pode ser utilizada pelo compartihamento. A unida de padrão é igual a Mb (megabytes). Exemplo: ; max disk size = 250

206

Global Sul Informática

Para compartilhar o CD-ROM do servidor nas estações. Usa o mesmo princípio do diretorio PUBLICO.
[CDROM] comment = CD-ROM SAMBA path = /mnt/cdrom read only = yes public = yes

Permite a gravação no spool.
printable = no guest ok = yes browseable = yes

; admin users = adilson, gabriel, katia Permite definir os usuários que terão privilégios de administração do compartilhamento, ou seja, terão poderes de superusuário. E pode ser usado a qualquer seção de compartilhamentos.
; [netlogon] ; comment = Network Logon Service ; path = /home/netlogon ; guest ok = yes ; writable = no ; share modes = no

Descomentando essas linhas seguintes será criado o diretório do netlogon para login's de uma sessão do domínio.
; [fredsprn] ; comment = Fred's Printer

A impressora privada será usada somente por fred. Os dados do spool serão colocados no diretório home, usado somente por fred. Abaixo o usuário terá acesso de gravação para o diretório spool.
; ; ; ; ; ; ; invalid users = @user valid users = fred path = /homes/fred printer = freds_printer public = no writable = no printable = yes

Valid users é usado para especificar quais os usuários que podem usar o serviço. E invalid users expecifíca quais não têm acesso. Caso deseje trabalhar com um grupo use @.
; force create mode = 775 ; force directory mode = 2775 Quando o sistema for carregar um arquivo é para ele utilizar as permissões informadas aqui. ; [pchome] ; comment = PC Directories ; path = /usr/pc/%m ; public = no ; writable = yes ...

No próximo compartilhamento, cada máquina terá um compartilhamento diferente. Pode ser usado uma configuração por usuários, para isso, basta substituir o %m por %u. Calma, são apenas umas “trezentas” linhas, veja que tem bastante comentários “#” para que o usuário saiba o que faz aquela parte da configuração e o que tiver “;” também é um comentário, mas se for retirado o “;” aquela linha valerá na configuração do seu servidor Samba. Lembra?

207

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

Esse é o arquivo original /etc/samba/smb.conf com umas pequenas mudanças, por isso que ele é grande desse jeito, mas depois que o usuário fizer suas configurações, ficará bem pequeno, talvez não chegue nem a cinqüenta linhas. O ideal é que antes de editarmos esse arquivo, façamos uma cópia dele com o comando cp -v /etc/samba/smb.conf /etc/samba/smb.conf.bkp. Assim teremos o arquivo /etc/samba/smb.conf.bkp que é o arquivo original, qualquer coisa que dê errada é só fazer o processo ao contrário que recuperaremos o arquivo original. Veja ainda neste capítulo como é que fica o arquivo /etc/samba/smb.conf depois de editado certinho e apenas com as mudanças necessárias; isso será feito no subtópico “Configurando pelo modo texto — Swat”— lá o leitor poderá acompanhar as mudanças com mais exatidão e por enquanto é só ler os ensinamentos aqui e depois colocar em prática. Com o Samba um usuário poderá acessar máquinas Windows e máquinas Linux, imprimir em máquinas Windows e/ou Linux de um modo totalmente transparente e fácil de ser entendido e algumas vezes pode ser solicitado uma senha ou não. Adicionando o SAMBA a um Domínio Windows NT/2000 Vamos supor que sua rede já possui um servidor PDC (WindowsNT) e você deseja adicionar um servidor samba, então será necessário antes de tudo configurar o samba agora com algumas pequenas mudanças, porém simples de entender. Não podemos aqui utilizar o parâmetro “domain master” e “domain logons”, como vimnos anteriormente e também devemos manter o parâmetro “os level” inferior a 65. O nome NetBios do servidor samba deve também ser adicionado ao PDC do Domínio NT, isso é feito através do Gerenciador de Servidores para Domínios. Assim, uma conta será criada para o samba no PDC. Como exemplo, vamos citar um servidor samba como o nome NetBios “Meu Samba” e o Domínio chamado “COMERCIAL”. O PDC terá o nome “File_Server” e vamos supor que também existam também dois controladores de backup´s com os nomes “Meu_Backup1” e “Meu_Backup2”. Agora para juntar-se ao Domínio, o servidor SAMBA deve executar o comando:
smbpasswd -j COMERCIAL -r File_Server

Caso tenha dado certo, você terá a mensagem:
smbpasswd: Joined domain COMERCIAL

Porém, se algo der errado, confira o nome NetBios dos servidores, se o samba está ativado e os parâmetros do arquivo /etc/samba/smb.conf e tente novamente. O comando anterior ativa o protocolo de mudança de senhas, gerando um nova conta aleatória para o servidor samba e normalmente guardada em: /usr/local/samba/private. O nome do arquivo será semelhante a “COMERCIAL.Samba.mac”. Edite o /etc/samba/smb.conf e inclua os seguintes parâmetros na seção [global]:
# O SAMBA agora pertence a um Domínio existente. security = domain # Nome do Domínio utilizado. workgroup = COMERCIAL # Para logon com criptografia. encrypt passwords = yes # Para a autenticação no domínio. password server = File_Server Meu_Backup1 Meu_Backup2

Reinicialize o servidor samba para validar as mudanças. Adicionando estações NT e 2000 em domínio SAMBA Agora a situação aqui é um pouco diferente, vamos supor que você possui um PDC SAMBA e estações Windows NT Workstation ou Windows 2000, deve seguir o modelo abaixo para criar contas específicas para estas estações. Somente podemos adicionar estações NT Workstations e 2000 a um domínio samba se a encriptação de login estiver habilitada sendo no servidor samba, necessário especificar o parâmetro encrypt passwords = yes. Se o arquivo smbpasswd ainda não existir vamos criá-lo:
touch /usr/local/samba/private/smbpasswd chmod go-rwx /usr/local/samba/private/smbpasswd

208

Global Sul Informática

DICA: É interessante destacar que dependendo da distribuição este arquivo pode estar no diretório /etc como link (ou não) para seu diretório original, guardando muitas vezes a configuração sem nada escrever em /usr/local/samba/private/smbpasswd. Confira a localização correta do arquivo e só então siga em frente.

Agora vamos adicionar a conta NT/2000. Veja que o “$” foi adicionado ao final do nome mas para servidores samba posterior a versão 2.0.7, isso não é mais necessário. Ficaria assim:
adduser -g ESTACOES -c ALIAS_ESTACAO_1 -m -s /bin/false NOME_ESTACAO_1$

Agora lá o /etc/passwd há uma conta semelhante essa:
... nome_estacao1:x:505:501:apelido_estacao1:/dev/null:/bin/false ...

Feito isso, agora vamos criar uma conta da estação no Samba:
smbpasswd -a -m NOME_ESTACAO_1

Simples não? Crie uma conta válida do usuário no Linux:
useradd -G grupo1,grupo2 -n <nome_do_usuario> ou useradd -g grupo -n <nome_do_usuario>

Não vamos esquecer da senha né? Comando passwd <nome_do_usuario>. Quase lá, crie esta conta do usuário no samba utilizando a mesma senha, comando smbpasswd -a <nome_do_usuario>. Para que a estação NT/2000 possa agora participar do Domínio, vá até o Painel de Controle do Windows e selecione Network - Identification Tag. Mude o Domínio para o qual você especificou em /etc/samba/smb.conf (workgroup = “nome_do_dominio”). Não marque a opção “Create a Computer Account in the Domain” pois não irá funciona. Pressione OK e após alguns segundos a mensagem “Welcome to Whatever Domain” aparecerá na tela. reinicialise (como sempre), e “voi-a-lá” o logon estará disponível. Atenção: há outras técnicas se se fazer isso, existem utilitários que melhoram a maneira de se configurar, mas é mais ou menso por aí. Resumo das seções Seção [global]: Os parâmetros nesta seção aplicam-se ao servidor como um todo ou como padrões para que todas as seções não necessitem especificá-los novamente. Seção [homes]: Caso uma seção com essa denominação seja incluída no arquivo de configuração, os serviços de conexão de clientes com os seus diretórios pessoais serão disponibilizados automaticamente. No Linux eles serão iguais a /home/nome_do_usuário. É sugerido o uso do parâmetro ‘browsable = no’ nesta seção, evitando assim que um usuário comum possa visualizar os diretórios pessoais alheios. Seção [printers]: Seção dedicada a impressoras, permitindo que os clientes (Linux, Windows, DOS, ...) possam utilizar uma impressora conectada à máquina local, configurada através do utilitário printcap. Uma típica seção de impressora terá o seguinte aspecto:
[printers] path = /usr/spool/public writeable = no guest ok = yes printable = yes

Parâmetros: Parâmetros definem os atributos das seções em que se encontram, sendo que alguns deles são específicos e podem ser usados somente em determinadas seções. Varíaveis: Muitos valores definidos para um parâmetro podem ser substituídos por um valor definitivo somente no momento do acesso ao recurso compartilhado. Por exemplo: a opção “path = /tmp/

209

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

%u” pode ser interpretada como “path = /tmp/adilson”, caso se tenha acessado o sistema com o nome de usuário igual a adilson. Dentre as diversas variáveis disponíveis, apresentamos a seguir as mais significativas: Modelos de compartilhamento Olha, aqui eu vou apresentar alguns modelos de compartilhamento que você poderá estudar para melhorar os seus modelos. Mas você poderá encontrar exemplos bem interessantes na Internet para usar na sua Intranet. Somente Leitura Qual a importância desse tipo de compartilhamento? Isso é útil quando não desejamos que pessoas alterem o conteúdo de um compartilhamento. Vai que você já está com quase 1 GB de MP3 como eu e dai vai um “carinha” lá e dá um delete, sim, pois ele pode ver e acessar o compartilhamento pelo Windows, lembra? Já foi para o espaço semanas de garimpagem na Internet atrás de bons Mp3. Como se proteger então? Simples, podemos fazer de duas formas: a) negando o acesso de gravação para todo o compartilhamento ou b) permitindo leitura somente para algumas pessoas, as “mais chegadas” sabe como é né? O parâmetro usado para fazer a restrição de acesso somente leitura é o read only = yes ou seu antônimo writable = no. Exemplos:
[MP3] comment = Acesso a leitura para todos path = /home/mp3 read only = yes public = yes

No exemplo, o diretório/home/mp3 foi compartilhado com o nome [MP3], de forma pública, acesso sem senha: public = yes, e todos podem apenas ler seu conteúdo read only = yes. Pronto acabou a festa do delete.
[DIVIX] comment = Acesso a gravação para todos com excessões path = /home/divix read only = no read list = @chefia, adilson, gabriel, aurea, sonizia invalid users = root, katia

Neste, o compartilhamento[DIVIX] foi definido como acesso leitura/gravação para todos, read only = no, mas os usuários do grupo @chefia (claro!) e os usuários adilson, gabriel, aurea, sonizia terão sempre acesso leitura, read list = @chefia, adilson, gabriel, aurea, sonizia. Observe também que foi colocado uma proteção para que o superusuário não tenha acesso a ele, invalid users = root e também uma usuária katia, alias essa não vai ter direito nunca mais. Sempre que você não quiser que um usuário compartilhe, coloque-o aqui. Leitura e escrita Aqui já fica interessante as coisas, vai que você é da turminha do MP3, e a sua missão é baixar por dia no mínimo umas 2o (vinte) músicas MP3, veja só quantas você vai ter no fim do mês, isso sem contar com os seus amigos das salas ao lado. Então é interessante que você e seus amigos sugadores de MP3 possa gravar no acesso do samba não é mesmo? Isso é bem simples de ser feito e pode ser feito de duas formas: a) acesso total de gravação para os usuários e b) acesso de gravação apenas para determinados usuários. Este controle é feito pela opção read only = no e seu antônimo equivalente writable = yes. Exemplos:
[FESTAMP3] comment = Acesso de gravação para todos. path = /home/mp3 writable = yes public = yes

210

Global Sul Informática

No exemplo, o diretório /home/mp3 foi compartilhado com o nome teste [FESTAMP3], de forma pública, acesso sem senha, public = yes e todos podem ler/gravar dentro dele, writable = yes que é o que nos interessa.
[FESTADIVIX] comment = Acesso a leitura para todos com excessões path = /home/divix writable = no write list = @chefia, adilson, gabriel, aurea, sonizia

Neste, o compartilhamento path = /home/divix foi definido como acesso de leitura para todos, writable = no, mas os usuários do grupo @chefia e os usuários adilson, gabriel, aurea, sonizia serão os únicos que terão também acesso a gravação. Modo oculto A idéia de criar um compartilhamento invisível ou oculto é muito importante, pois algumas vezes precisamos do compartilhamento mas não queremos que todos o vejam, entendeu? Para não exibir um compartilhamento da lista de compartilhamentos das máquinas é simples, utilize o parâmetro browseable = no. Exemplo:
[FOTOS] path = /home/fotos comment = Diretório temporário de “arquivos fotográficos” read only = yes browseable = no

Neste exemplo, o diretório path = /home/fotos foi compartilhado através de [FOTOS] com acesso somente leitura, read only = yes e ele não será mostrado na listagem de compartilhamentos do ambiente de rede do Windows. Mas como é que você vai acessá-lo? Veja que o compartilhamento continua disponível, porém ele poderá ser acessado da estação Windows, especificando a \\máquina\compartilhamento. Lembre do caminho compartilha e no Windows Explorer ou pelo menu executar use:
\\nome_do_servidor_samba\teste

Ao contrário das máquinas Windows onde é necessário adicionar um “$” do nome de compartilhamento para criar um compartilhamento oculto (como FOTOS$) o SAMBA cria um compartilhamento realmente oculto, não aparecendo mesmo na listagem do smbclient. Que interessante né? Sem pedido de senha Bom, logo de início eu já vou lhe avisando que isso não é nada interessante, mas como é possível e precisamos aprender, vamos lá. Aconte em algumas situações onde uma hora precisamos tornar um compartilhamento acessível publicamente, exemplos disto incluem um diretório que contém drivers de impressoras, arquivos comuns, um diretório temporário, diretório geral de download da Internet, êta festa danada hein? etc. Para fazer isso ao publico é muito simples use a opção public = yes ou guest ok = yes. O UID utilizado no acesso público é especificado pelo parâmetro guest account, portanto ele deverá ser um usuário válido do sistema, então esses “carinha” deverá estar cadastrado. Caso você queira somente definir acesso guest a um compartilhamento, especifique a opção guest only para o serviço, desta forma, mesmo que o usuário tenha acesso, ele será mapeado para o usuário guest. Você sabia ? Que uma boa medida de segurança é usar o usuário nobody pois a maioria das distribuições de Linux seguras adotam-o como padrão como usuário que não é dono de quaisquer arquivos/diretórios no sistema, não possui login, senha ou sequer um diretório home, o apache por exemplo é um caso desses. Veja um exemplo disponibilizando o compartilhamento [download] para acesso público com acesso a gravação:
[global] guest account = nobody ... ... [download]

211

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

path = /downloads comment = Jaz aqui os downloads de Usuários. Oh Festa. guest ok = yes (aqui poderá ser também "public = yes"). writable = yes follow symlinks = false

O parâmetro guest account também poderá ser especificado no compartilhamento, isto é útil quando não quiser que o usuário que acesse o compartilhamento não seja o mesmo usado na diretiva [global].

DICA: O compartilhamento funciona de modo recursivo, ou seja, todos os arquivos e subdiretórios dentro do diretório que compartilhou serão disponibilizados, portanto tenha certeza da importância dos dados que existem no diretório, verifique se existem links simbólicos que apontam para ele, etc.

Pontos de montagem com Samba
Supondo-se que temos uma máquina Windows com IP 10.6.12.150, para isso use o comando smbclient -L 10.6.12.150 para saber o que está compartilhado nessa máquina. Agora que nós já obtivemos aquelas informações com o comando smbclient poderemos perfeitamente montar a estação Windows na estação Linux depois acessá-la normalmente, como se fosse um diretório qualquer. Vamos montar o notebook (Windows) no micro gabriel, que é o micro 02 (Linux) onde o micro 01 que é o notebook tem o seu disco “C” compartilhado:
[root@gabriel MP3]# mount -t smbfs //notebook/c /mnt/notebook/ INFO: Debug class all level = 1 (pid 2545 from pid 2545) Password:

O comando smbmount serve para montar o notebook no micro gabriel. Não é preciso passar o parâmetro “-t smbfs” como faríamos, se estivéssemos usando o comando mount, ou seja, seria assim mount t smbfs //notebook/c /mnt/notebook/. Será solicitada a senha que deve ser uma senha válida na máquina Windows. Depois para ver se foi montado certinho use o comando df. E você verá que a notebook pronto para ser acessado, tando pelo modo texto quanto pelo modo gráfico. Depois que você tiver o acesso ao notebook que é o nosso caso, todas as operações de gerenciamento de arquivos, como renomear, copiar, duplicar, copiar, colar, apagar, mover, métodos de visualização, preview etc. são válidas aqui; basta que você conheça o gerenciador que está usando no sistema Linux.

DICA: Depois que estiver tudo montado você poderá por exemplo, copiar qualquer arquivo/pasta de qualquer lugar para os ponto de montagens controlados pelo servidor samba, no caso da figura anterior. A sua única limitação se você tiver essa permissão será o espaço em disco.

Windows imprimindo em Linux Se você que configurar o Linux como um servidor de impressão Windows, é simples, será necessário ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo /etc/samba/smb.conf:
[IMPRESSORA] path = /tmp printer name = Minha Impressora printable = yes print command = lpr -r -h -P %p %s valid users = adilson gabriel sulamita create mode = 0700

O compartilhamento acima tornará disponível a impressora local, conhecida como “lp” para máquinas Windows com o nome “Minha Impressora”. Caso você esteja configurando esse arquivo na mão,

212

Global Sul Informática

coloque aqui o nome de sua impressora, exemplo “HP 656 Seria c”. Também uma impressora alternativa pode ser especificada modificando a opção “–P” da linha de comando do comando lpr. No noss caso somente os usuários “adilson gabriel sulamita” poderão usar esta impressora, pois está muito caro o cartucho novo de tinta. Os arquivos de spool (para gerenciar a fila de impressão) serão gravador em /tmp e o compartilhamento [IMPRESSORA] será mostrado como uma impressora, printable = yes. Mas não é só isso você precisará instalar o driver sua impressora no Windows e escolher impressora instalada via rede e seguir os demais passos de configuração que todos nós já sabemos. Para imprimir em uma máquina Linux é muito fácil. Você apenas precisa certificar queo servição de impressão está no ar, hoje o mais usado é o CUPS – Commom Unix Printing System, que é uma idéia muito boa de impressão local e remota, pois com o cups é possível imprimir pela Internet, claro, deixe-o configurado e a impressora ligada. Linux imprimindo em Windows Para imprimir em uma máquina Windows estado em uma estação Linux você faz a mesma coisa. Instale sua impressora no Linux e depois na hora de imprimir é só apontar para o IP da máquina Windows correspondente. Existem vários utilitários de impressão, desde o velho printtool, mas eu recomendo que você use o CUPS, pois a grande maioria das distribuições estão o adotando como configurador oficial. O CUPS além de ser moderno permite uma série de configurações que somente ele tem para oferecer. Como o CUPS é um servidor você deverá “levatar” e/ou “derrubar” seus serviços lembre-se disso. Caso você precise de um driver de impressora que não tiver no CUPS, tente verificar em www.linuxprint.org ou www.cups.org,lá com certeza você vai achar pois tem mais de 2000 (doi mil) drivers, para tudo quanto é tipo de impressora. Você já aprendeu com configurar sua impressora no Linux, porém vamos relembrar bem rapidinho. Use o comando cupsdconf para carregar o configurador do servidor de impressão. Lembre-se: — uma coisa é configurar o servidor e outra coisa é configurar a impressora, essa você poderá configura pelo centro de controle do KDE, comando kcontrol ou pelo centro de controle da Conectiva, comando kclcontrol. Algumas distribuições apresentam o kprint, kprinwizard que é um assistente bem legal de configuração de impressora no sistema. Caso você ussae o gnome, saiba também que ele apresenta alguns utilitários para configuração de impressoras. Eu lhe aconselho que configure sua impressora com calma, pois o configurado oferce inúmeras possibilidade de impressão, dentre elas a impressão em postscript muito usado em impressoras laser e impressão diretamente em formato PDF da adobe, muito útil para a criação de documentão para leitura online. Depois que você configurar su impressora, a partir de qualquer programa você poderá imprimir, pode ser para uma impressora lccal ou para um impressora remota como é o nosso caso. Para quem usa o LPRng+SMB Há usuários que usa o formato de impressão LPRng, ao invés do tradicional lpr e do CUPS. Então você vai precisar fazer umas mudanças em seu arquivo de configuração. Além de alterar a variável “printing” no /etc/samba/smb.conf (altere de bsd para lprng), são necessárias algumas outras alterações. Vamos supor que a sua impressora está sendo compartilhada via samba seja “MinhaImpressora”, você deverá mudar o dono e as permissões do diretório de spool dela que é /var/spool/lpd/MinhaImpressora:
chown root.root /var/spool/lpd/MinhaImpressora chmod 1777 /var/spool/lpd/MinhaImpressora

Agora você deverá colocar na seção [printers] do seu /etc/samba/smb.conf os seguintes comandos para a impressão e depois é só testar:
print command = lpq command = lprm command = lppause command = lpresume command = queuepause command = queueresume command = /usr/bin/lpr /usr/bin/lpq /usr/bin/lprm /usr/sbin/lpc /usr/sbin/lpc /usr/sbin/lpc /usr/sbin/lpc -U%U@%M -U%U@%M -U%U@%M -U%U@%M -U%U@%M -U%U@%M -U%U@%M -P%p -r %s -P%p -P%p %j hold %p %j release %p %j -P%p stop -P%p start

Outra coisa que você deve saber é que o spool de impressão vai ficando cheio, pois o samba vai deixando todos os arquivos impressos no diretório de spool, e com o tempo diretório vai ficar lotado e dái não

213

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

tem como você e os outros usuários imprimirem. Mas isso é simples de ser resolvido com o comando seguinte:
find /var/spool/lpd/MinhaImpressora -type f -mtime 1 -exec rm -f {} \;

Esse comando apago “o lixo” que tenha pelo menos um dia. Agora para não ter digitar esse comando todo dia você pode colocá-lo nos arquivos de incialização para que quando você entre no sistema ele já faça uma limpeza ou no diretório /etc/cron.daily.

Configurando o samba através do Swat no Linux
O SWAT é uma ferramenta Web de Administração do Samba onde nós poderemos usar um navegador para que as configurações necessárias do servidor Samba sejam feitas, pode ser qualquer navegador, Netscape, Mozilla, Galeon, Konqueror etc. Ele é disponibilizado em conjunto com o pacote Samba e está presente em praticamente todas as distribuições Linux. Para usarmos o SWAT deveremos editar o arquivo /etc/services, adicionando-se a seguinte linha ou descomentando-a caso esteja comentada:
swat 901/tcp

A escolha do número da porta não é importante, porém não deve ser menor que 1024 e não pode estar em uso no momento. Depois deveremos editar o arquivo /etc/inetd.conf e adicione o descomentar à seguinte linha:
swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat

Pronto. A seguir pare e reinicie o inetd para que as mudanças tenham efeito. Isso poderá ser feito por um dos seguintes comandos:
/etc/rc.d/init.d/inet stop; /etc/rc.d/init.d/inet start;

ou
# killall -HUP inetd

Para acessar o swat, carregue o navegador de sua preferência. Geralmente usamos o Netscape e digite na linha de endereço http://localhost:901/. Então vai aparecer uma caixa onde você deverá entrar como usuário root e sua devida senha. Depois de entrar com a senha correta, o navegador carregará o SWAT e agora pelo modo visual e intuitivo você poderá fazer as configurações do servidor Samba. Bom, o restante da configuração permanece igual, a única diferença é que agora estamos dentro do Netscape e o SWAT é que irá gerar o arquivo /etc/smb.conf somente com as opções configuradas. O arquivo final fica bem enxuto e compreensível e desse jeito é muito mais fácil ler e interpretar as configurações.

Anotações: 214

Global Sul Informática

215

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

Capítulo 12

Conexões remotas
Vamos aprender neste capítulo, o básico sobre conexões remotas1 em ambiente Linux. Essas conexões podem ser testadas em seu próprio micro e em outros micros, é claro. As conexões remotas mais utilizadas são conexões do tipo Telnet que não oferece criptografia, SSH que tem uma boa criptografica, conexões ftp para fazer download e upload de arquivos, conexões do tipo rLogin etc. No sistema Linux Linux, isso já está implementado nativamente bastando que você apenas tenha os pacotes/programas instalados e “levantes” os serviços necessários. Nada de ficar comprando programas e pagando licenças, certo?

Usando o Telnet
Acho que você já ouviu falar em serviço telnet, esse tipo de serviço oferece login remoto em outro computador ou no seu, e permite que você trabalha conectado como se estivesse em frente ao seu micro. O problema é que ele é um pouco lento e não oferece criptografia, e se você estiver sem sorte uma pessoa mais esperta com um bom sniffer poderá varrer os seus pacotes pela rede e capturar informações que poderão revelar seu nome de login e sua senha de acesso e daí para fazer um estrago e apenas questão de tempo. Ele substitui o rlogin e possui muitas melhorias em relação a ele, como o controle de acesso, personalização de seção e controle de terminal. O telnet é nada mais do que uma conexão entre duas máquinas com o objetivo de se fazer alguma coisa nelas, que pode ser uma manutenção, execução de programas etc. Então para que usar telnet? Eu diria apenas para aprender um pouco sobre conexões remotas , “pegar o jeitinho” e depois partir para algo mais seguro, como um SSH por exemplo. As principais características do telnet que você deve saber é que sua conexão é “rápida” porque não utiliza transmissão de dados criptografada, recomendado para ambientes seguros, nesse sentido. O telnet poderá ter suporte a criptografia se for via via SSL e ele possui controle de acesso tcpd feito pelo uso do /etc/hosts.allow e /etc/hosts.deny os quais permitem ou impedem certos tipos de acessos. O telnet é popular, pois maioria dos sistemas operacionais trazem este utilitário por padrão como sistema de acesso remoto e também oferece suporte a terminais ANSI, tais como cores e códigos de escape especiais para o console e uma grande variedade de outros terminais. Ele é muito simples, basta digitar telnet IP Porta, onde IP é o IP da máquina, exemplo 10.6.12.150 e Porta é a porta 23 mas poderá ser uma outra que esteja livre e aceita conexões por ela.

Habilitando telnet entre máquinas
Para usar o telnet, primeiro sua rede deverá estar configurada e estar no ar e o outro micro para onde você está fazendo telnet deverá permitir sua conexão, senão não adianta falar que o telnet não está funcionando. Feito isso procure a linha: # telnet 23/tcp no arquivo /etc/services e retire o comentário “#” para que seja possível habilitar o serviço. Os arquivos inetd precisão estar no ar; para isso use o comando:
/etc/rc.d/init.d/network restart /etc/rc.d/init.d/inet restart

Outro fato importante é que os tcpwrappers precisam liberar uma entrada ou saída de telnet, ou seja, no micro destino (onde vai conectar) o arquivo /etc/host.deny não poderá negar um conexão de telnet, senão essa não ocorrerá. Depois para conectar ao servidor use o comando telnet [endereço] [porta] para realizar conexões com uma máquina rodando o servidor telnet.

216

Global Sul Informática

:: Telnet de Windows para uma máquina Linux.

Você também poderá usar alguns parâmetros como:
-l [usuario]: Envia o nome de usuário ao computador remoto. Muito útil se você estiver usando com o telnet-ssl. -E: Desativa o caracter de escape -a: Tenta fazer o login automático usando o nome de usuário local. Se o login falhar, será solicitado o nome de usuário. Esta opção é usada por padrão com o cliente telnetssl.

Você pode efetuar um teste em você mesmo com o comando telnet localhost, automaticamente será usada a porta 23. Para conectar em outro micro veja esse exemplo telnet -l fabiano 192.168.150 24000. Aqui está sendo feita uma conexão no servidor telnet com o nome de usuário fabiano e a porta usada será a 24000. Depois que estiver tudo OK, execute o comando telnet <máquina> <porta>. Onde <máquina> é o IP ou nome da máquina que você que acessar e <porta> é a porta de conexão que geralmente é a 23. Veja aqui o usuário adilson se conectando no diagramacao de uma intranet. Para que o usuário adilson possa entrar na máquina, ele precisará informar o seu login de acesso e sua senha, caso contrário ele não terá acesso ao micro05.
[adilson@micro05 adilson]$ telnet diagramacao Trying 10.6.12.250... Connected to diagramacao.hackers.net. Escape character is '^]'. Conectiva Linux 9.0 kernel24-2.4.21-28872cl login: adilson Password: Last login: Mon Sep 17 10:12:28 from 10.6.12.150 [adilson@diagramacao adilson]$

Agora, a partir desse ponto já é possível executar qualquer comando no servidor.

217

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

Usando o SSH
Vamos aprender aqui a usar o SSH — Secure Shell, como o próprio nome diz, é um shell seguro para usar e trabalhar, pois oferece métodos de criptografia que o simples telnet não faz. Um administrador poderá utilizar o SSH para acessos remotos substituindo serviços que apresentam problemas graves de segurança como FTP, Telnet, POP3, X11 e outros. Vale lembrar que esses serviços não possuem nenhum mecanismo de encriptação, facilitando a captura de dados por sniffers. O SSH é muito parecido com o Telnet, mas possui suporte a criptografia de dados tornando a técnica de sniffer ineficiente, evitando que logins, senhas, cartões de créditos e outros dados sejam grampeados por hackers/crackers com más intensões. O SSH possui atualmente várias implementações cliente e servidor, entre elas podemos destacar ssh, openssh, ossh, sftp (Secure FTP) e outras. Os clientes são distribuídos para quase todas as plataformas existentes e possuem interface gráfica ou trabalham em modo texto. A grande vantagem do SSH é o grande suporte que possui em listas de discussão, profissionais, documentações, news group e diversas implementações. O SSH é uma fantástica ferramenta de administração remota, e vamos ver através de exemplos práticos como ele pode substituir não só outras ferramentas de administração remota como telnet, rlogin, rsh etc. como também serviços como, por exemplo, o FTP. Tudo isso com a certeza de que quem está conectando na outra ponta está seguro, pois tem criptografia dos dados. O que é SSH? Esta ferramenta foi originalmente desenvolvida pela empresa finlandesa de mesmo nome www.ssh.fi e surgiu como uma maneira de suprir as deficiências não só do telnet que não oferece criptografia, mas como também do rlogin (Remote Login) e do rsh (Remote Shell). Com o tempo acabou transformandose na ferramenta padrão para a administração de sistemas no mundo Unix/Linux, substituindo totalmente o telnet, tanto que o nome SSH é usado hoje não só para designar o programa e a empresa que o criou como também suas variantes e clones (como era de se esperar). A grande vantagem do SSH está em encriptar os dados que são transmitidos durante a sessão e provavelmente ninguém gosta da idéia de ter suas informações transitando pela rede totalmente abertas, principalmente senhas. Além disso, é possível que o SSH agregue outros serviços como, por exemplo, o SCP (Secure Copy) que substitui com tranqüilidade e até com mais praticidade o bom e velho FTP.

Clientes SSH para Windows e Linux
Existem diversos clientes disponíveis, desde o original da SSH, que é um produto comercial com versões para várias plataformas e sistemas operacionais, até versões gratuitas. Aqui vamos utilizar do OpenSSH em www.openssh.org, que é originário do projeto OpenBSD www.openbsd.org, que é uma versão adaptada do SSH de livre distribuição desenvolvido por Tatu Ylonen, mas com a inclusão de novos recursos e outros algoritmos de encriptação que são o RSA e DES, como o Blowfish. Caso você possua um outro cliente SSH, saiba que os comandos e a utilização são praticamente idênticos, portanto, se você já possui uma outra versão não fique preocupado. Em virtude da política de exportação de software de criptografia nos Estados Unidos, as versões internacionais, distribuições originárias de lá, não podem conter o SSH, ficando com o usuário a tarefa de instalá-lo. Caso você queira utilizar um cliente SSH a partir de uma estação Windows, para administrar suas estações, saiba que existem clientes SSH para Windows, como o PuTTY, o TeraTERM ou o SecureTTY, basta uma leve pesquisa no google www.google.com.br e você encontrará inúmeros utilitários para esse fim. O utilitário PuTTY é o mais usado para fazer conexões telnet e SSH, pois ele é extremamente leve e rápido e permite uma série de configurações além de ser muito simples de ser usado. O PuTTY tem versões para Windows 95, 98, ME, NT, 2000 e XP e Linux e por isso vou falar um pouco sobre ele. Você poderá obter o Putty em http://www.chiark.greenend.org.uk/~sgtatham/putty/. Os principais arquivos do PuTTY são:
a) PuTTY: O próprio utilitário para telnet e SSH. b) PSCP: Um pequeno cliente SCP de linha de comando para cópia segura de arquivos. c) PSFTP: Outro pequeno cliente de linha de comando para tranferências de arquivos tipo FTP. d) PuTTYtel: Um cliente apenas para telnet. e) Plink: Interface para linha de comando para o Putty. f) Pageant: Um agente SSH autenticador para PuTTY, PSCP e Plink. g) PuTTYgen: Utilitário para geração de chaves RSA.

218

Global Sul Informática

Para usar o PuTTY é muito simples, execute-o e em Host Name or IP Adress digite o nome do servidor ou IP, escolha a porta (23 ou 23), escolha o protocolo Raw, Telnet, Rlogin ou SSH. Quando a conexão for efetua será solicitado uma nome de usuário e sua senha. Lembre-se que no servidor os serviços (daemons) para o protocolo escolhido deverá estar no ar. Lembra da idéia de executar remotamente aplicativos gráficos? Então, com o SSH também é possível e não precisa fazer nenhum malabarismo. A vantagem é que como nós já sabemos a conexão está criptografada. :: Utilitário Putty para conexões Telnet e SSH.

Preparando o servidor
O pacote do SSH traz tanto o cliente como o servidor, o SSHD (ou SSH Daemon). No caso de uma instalação a partir de pacotes RPM ou DEB, um script estilo System V (ou seja, funciona com os parâmetros start, stop, restart etc.) será criado no respectivo diretório /etc/rd.d/init.d. Na maioria das distribuições o arquivo de configuração SSH está no /etc:
###### $OpenBSD: ssh_config,v 1.10 2001/04/03 21:19:38 todd Exp $ ... # Host * # ForwardAgent no # ForwardX11 no # RhostsAuthentication no # RhostsRSAAuthentication no # RSAAuthentication yes # PasswordAuthentication yes # HostbasedAuthentication no # BatchMode no # CheckHostIP yes # StrictHostKeyChecking ask # IdentityFile ~/.ssh/identity # IdentityFile ~/.ssh/id_rsa # IdentityFile ~/.ssh/id_dsa # Port 22 # Protocol 2,1 # Cipher 3des # Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc # EscapeChar ~

Os parâmetros desse arquivo serão explicados mais adiante. Após instalar o SSH, vamos utilizálo. Para quem está usando o SSH pela primeira vez, é interessante criar o par de chaves públicas e privadas para a sua estação. Isso é feito pelo comando ssh-keygen, basta executá-lo do seguinte modo ssh-keygen -b

219

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

512 -t rsa dentro do $HOME do usuário para que a chave criada seja para esse usuário, nesse caso a chave será por padrão de 512 bits e usará criptografia RSA:
[gabriel@gabriel gabriel]$ ssh-keygen -b 512 -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/gabriel/.ssh/id_rsa): Created directory ‘/home/gabriel/.ssh’. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/gabriel/.ssh/id_rsa. Your public key has been saved in /home/gabriel/.ssh/id_rsa.pub. The key fingerprint is: 53:19:3f:3a:ce:5d:76:e7:a9:ef:16:ec:39:3a:4b:af gabriel@gabriel.hackers.net [gabriel@gabriel gabriel]$

Nesse exemplo, o usuário gabriel que tem direito de usar o ssh acabou de gerar uma chave pública e poderá efetuar suas conexões agora a partir de qualquer máquina que operar com ssh tanto em ambiente Windows, Linux, Unix, QNX, OpenBSD, FreeBSD etc. Ele poderá efetuar conexão a partir de uma máquina Windows ou Linux. Para efetuar conexões de uma máquina Linux ele deverá usar o comando SSH <nome_ou_IP>. Na linha que informa “Enter file in which to save the key (/home/gabriel/.ssh/id_rsa):”, o usuário gabriel poderia informar um arquivo para conter as informações do SSH ou simplesmente pressionar [ENTER], para que os arquivos de configuração sejam criados automaticamente no diretório .ssh. Depois é sugerido uma frase de identificação que poderá auxiliá-lo mais tarde quando da perda da senha. Resumindo, será criado o par de chaves RSA que serão gravadas, por padrão, em seu diretório HOME. Esse procedimento não é obrigatório, mas pode facilitar bastante a sua vida. Para testar se tanto o cliente quanto o servidor estão funcionando corretamente, tente conectar-se em sua própria estação usando ssh localhost. Usar o SSH é bastante simples, bastando incluir o nome (ou endereço IP) da máquina que se deseja usar. Aqui poderemos verificar como é uma chave pública que está fortemente criptografada e é muito difícil de ser quebrada até mesmo por programas hackers consagrados.
[gabriel@gabriel gabriel]$ cat .ssh/id _rsa ——BEGIN RSA PRIVATE KEY——Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,E3687E79E75B5657 M/B9KIw/nxHU4PG8PRTmfQwonguWLoblQnfC5FYPA/6zoyZTi4ju1c9BjNgTF8JX qMEzsWH+0TswcmnIGYO7r8aNlCV2N/SMUUni7PfcTZs+axAUaWDEtcLWbzpDHx0S 3+S0G53xws0sIaZoYCDKTxFUGzGcQgaxQ1TecoUimwZP9sPGNUNpu90hFBkZltc0 qxtATdtY+OFrMYLy/lg3WEGCjQ2QPh+MnExHzhF83+XDHyDFJIJzZx4B0qPfQ/vr VHqh6Rv/IGAwsaD8jQmFgezu7/OGYqag3OzYr4GGuQ2xISN1oeJDT3g+D5n/p/E7 YCXxFCkHwU9wxT8yert3OdvY5dZk8cziT0Rsy5BdzaO2Ep1xh8ufYVC6eJEQu2aK 2t8D7iR1fwcrNzjiJczBK8z5dycV36oP2O7avKFb9JE= ——END RSA PRIVATE KEY——[gabriel@gabriel gabriel]$

O utilitário ssh-agent serve para guardar a autenticação da chave pública (RSA, DSA). A idéia é que o ssh-agent é iniciado em uma seção X (modo gráfico) ou em uma seção de login modo texto e em todas as outras janelas e programas que são iniciadas como cliente do programa ssh-agent. Depois que a conexão ocorreu com sucesso você estará pronto para “brincar” com o SSH. Quando da primeira conexão em uma determinada estação, ele perguntará se deseja adicioná-la à sua lista de hosts conhecidos (.ssh/know_hosts). E geralmente o SSH irá tentar se conectar na estação remota usando a mesma conta que você está usando no servidor local. Para contornar esse problema, use o parâmetro “-l” ou então “usuário@host” para especificar quem você deseja usar na conexão remota.

Execução de comandos no servidor
Depois de conectado a um servidor SSH nós temos algusn comandos que poderemos usar para trabalharmos com arquivos. a) Secure Copy: Pelo que foi mostrado até agora é bastante fácil substituir o telnet pelo SSH na tarefa de administração de suas estações. Porém, o SSH permite que você utilize outros serviços usando a conexão segura. O exemplo mais conhecido é o scp (Secure Copy) que permite a transferência de arquivos entre estações.

220

Global Sul Informática

Supondo que você queira enviar um arquivo local para o seu servidor scp [arq_local] [usuario@servidor_remoto]:[arq_servidor] ou supondo que você queira na sua máquina um arquivo que está no servidor use o comando scp usuario@servidor_remoto:arq usuario@sua_maquina:arq. Flagramos aqui uma tentativa de conexão sem sucesso; acompanhe:
[gabriel@micro05 gabriel]# ssh -l regina 10.6.12.5 regina@hackers.net ls | less The authenticity of host '10.6.12.5 (10.6.12.5)' can't be established. DSA key fingerprint is fc:aa:e7:5f:4c:d9:23:c6:a5:8f:60:83:91:96:af:1c. Are you sure you want to continue connecting (yes/no)? Warning: Permanently added '10.6.12.5' (DSA) to the list of known hosts. regina@10.6.12.5's password: Permission denied, please try again. regina@10.6.12.5's password: bash: regina@hackers.net: command not found

O usuário gabriel de alguma forma tentou executar um comando na máquina com IP 10.6.12.5; mas, como ele não tem posse de todas as informações de que necessita, não conseguiu. NOTA: O comando scp, como padrão de conexão, usa o rsh para fazer seu trabalho de cópias de arquivos. Você tem, a seguir, uma descrição encontrada nas páginas de manual do rsh. O comando rsh é um shell remoto que executa comandos na máquina que aceito sua conexão. O rsh copia sua entrada padrão para o comando remoto, a saída padrão do comando remoto para a saída padrão, e a saída padrão de erro do comando remoto para sua saída padrão de erro. O rsh normalmente termina quando um comando remoto termina. As opções são as seguintes:
-K: Desliga a autenticação Kerberos. -k: Requisita ao rsh obter tickets para a máquina remota. -l: Por padrão, o nome-de-usuário remoto é o mesmo que o nome-de-usuário local. A opção -l permite ser especificado um nome de usuário para a máquina remota. -n: Redireciona a entrada de um dispositivo especial /dev/null. -x: Liga a criptografia DES para todos os dados trocados. Isso pode introduzir um atraso significante no tempo de resposta.

Alguns parâmetros de configuração do SSH A seguir veremos alguns poucos parâmetros interessantes para configuração do arquivo /etc/ssh/ssh_config. São eles: X11 Forward Outro serviço interessante que pode ser usado junto com o SSH, é o X11 Forwarding. Como todos sabem (ou deveriam saber), o X/Window é bem mais do que uma interface gráfica, é um protocolo de comunicação cliente/servidor que se utiliza do TCP/IP. Graças a isso, o cliente (a aplicação que você está usando) e o servidor (quem está colocando as janelas na tela) podem tranqüilamente estar em computadores diferentes. Assim como no telnet, o uso do X11 Forwarding dentro de uma sessão SSH garante a encriptação daquilo que está indo de um lado ao outro da rede. Você precisa antes habilitar o acesso da estação remota em seu X/Window local usando o comando # xhost +<nome ou IP da estação remota>. Depois de conectar-se e redirecionar a saída dos programas mudando a variável do sistema DISPLAY para sua estação com o comando, # export DISPLAY=(nome ou IP da estação local):(n). Sendo “n” a sessão do X que você pretende usar (geralmente este valor é 0). Aumentando a segurança do SSH Algumas vezes só a encriptação não basta, pois pela rede poderá estar trafegando informações “altamente confidenciais”, logo vem aquele pergunta: Será que eu estou seguro de verdade? Então vamos aumentar um pouco a segurança: no arquivo sshd_config poderemos configurar alguns parâmetros que podem nos deixar mais garantidos quanto a quem e de onde nossa máquina pode ser acessada. Os parâmetros que podem realmente restringir o acesso são:
1. PermitRootLogin: Yes ou No para habilitar o login como root. 2. AllowHosts: A relação de estações que podem se conectar, use o endereço IP ou então o nome da máquina. 3. DenyHosts: A relação das estações que não podem se conectar.

221

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

4. AllowUsers: Aqueles que podem se logar na estação. 5. DenyUsers: Aqueles que, por motivos que não vamos discutir agora, não podem se logar. Após essas alterações você vai precisar reinicializar o processo (daemon), isso pode ser feito usando o script que está no init.d com ssh restart ou, então, com o comando killall -HUP sshd ou pelo comando /etc/rd.d/init.d/ssh restart.

Caso queira disponibilizar o SSH automaticamente na hora de inicialização da máquina, use o programa ntsysv e marque e opção sshd. Se você quiser saber com que e/ou quem está fazendo uma conexão usando o SSH em sua máquina é muito simples, use o comando netstat | grep ssh.

Usando o FTP
O FTP – File Transfer Protocol, ou seja, protocolo de transferência de arquivos é a interface com o usuário para o padrão ARPANET de protocolo de transferência de arquivos envolvendo computadores conectados em rede. O programa permite a um usuário transmitir arquivos de/e para um ponto remoto na rede local (intranet) ou via Web (Internet). Há várias maneiras de você usar um serviço FTP em sua máquina e isso vai depender de sua distribuição, por exemplo, sua distribuição poderá trabalhar com o FTP anônimo, como WU-FTP ou o ProFTPD 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 WUFTP e o Pro-FTPD e deverá aprender a configurá-los, eu lhe aconselhoo Pro-FTPD. Na internet você encontrará inúmeros tutoriais sobre isso, veja em ww.linux.trix.net ou www.olinux.com.br. Aqui vamos aprender como é que poderemos usar o serviço de ftp que o sistema Linux já tem nativo. Usar esse tipo de serviço é muito simples, para isso sua rede deverá estar no ar, operante e com os serviços habilitados. Vale lembrar que devemos descomentar, tirar o “#” no arquivo /etc/inetd.conf, a seguinte linha:
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

Assim, será possível usar o serviço de ftp. Lembre-se de ativar esse serviço (/etc/inetd e /etc/network) automaticamente em processo de inicialização usando o ntsysv. Caso o serviço não esteja no ar será possível ativá-lo com os comandos:
/etc/rc.d/init.d/network start ou restart etc/rc.d/init.d/inet start ou restart

Esses dois comandos são responsáveis pelo “levantamento” da rede e pelo “levantamento” do serviço que disponibiliza o ftp. A máquina destino com a qual o ftp irá se comunicar pode ser especificada na linha de comandos. Se isso for feito, o ftp irá tentar estabelecer uma conexão imediatamente para um servidor FTP nesse destino; de outro modo, o ftp irá entrar em seu modo interpretador de comandos e aguardar instruções do usuário. Enquanto o ftp estiver esperando por comandos, o prompt ftp> será mostrado ao usuário. Se tudo der certo o usuário poderá tentar um ftp nele mesmo da seguinte maneira:
ftp localhost Conectado na máquina localhost. 220 gabriel.hackers.net FTP server (Version wu-2.6.1(1) Sun Sep 24 18:36:35 BRT 2000) ready. Usuário (localhost:root): adilson 331 Password required for adilson. Senha: 530 Login incorrect. Falha no login. ftp> quit 221 Goodbye.

O caso anterior é típico de senha errada e não que o serviço não esteja no ar. Aqui o usuário adilson (propositalmente) informou a senha errada e o ftp não continuou a conexão. Quando isso acontece de

222

Global Sul Informática

maneira correta, o diretório HOME padrão de um serviço ftp é liberado e nesse diretório (padrão) encontramos os seguintes subdiretórios:
# ls -laF /home/ftp/ total 24 drwxr-xr-x 6 root drwxr-xr-x 37 root d—x—x—x 2 d—x—x—x 2 drwxr-xr-x 2 root drwxr-sr-x 2 root

root root root root root ftp

4096 4096 root root 4096 4096

Jul Jul 4096 4096 Jul Oct

3 20 Jul Jul 3 17

14:24 12:51 3 3 14:24 2000

./ ../ 14:24 bin/ 14:24 etc/ lib/ pub/

Vale lembrar de que os diretórios /bin/ e /etc/ são usados somente para execução de scripts e programas se assim forem configurados, enquanto o /lib/ e /pub/ poderão ser configurados com outros tipos de permissões. Por exemplo: quando fazemos um ftp para atualizar nossas páginas em um provedor qualquer, nosso diretório HOME lá está configurado para “rwx” depois que informamos nosso login e senha.

Comandos básicos para ftp
Os seguintes comandos são reconhecidos pelo ftp: append arquivo-local [arquivo-remoto]: Adiciona um arquivo local a um arquivo na máquina remota. Se o arquivo remoto não for especificado, o arquivo local é usado para dar nome ao arquivo remoto após ser alterado por qualquer configuração de ntrans ou nmap. Transferências de arquivos usam os ajustes de tipo, formato, modo e estrutura atuais. ascii: Ajusta o tipo de transferência de arquivo para ASCII na rede e binary. Ajusta o tipo de transferência de arquivos para suportar imagens de arquivos binários. bell: Após cada comando de transferência completado faz um beep. bye: Termina a sessão ftp com o servidor remoto e sai do ftp. Um fim de arquivo também irá encerrar a sessão e sair. cd: Lista o diretório-remoto; lcd: Lista o diretório-local e cdup: Muda o diretório de trabalho na máquina remota para o diretório imediatamente superior ao atual. chmod modo nome-do-arquivo: Muda as permissões do arquivo nome-do-arquivo no sistema remoto para modo. Mas somente se o usuário que está conectado tiver as permissões para isso. close: Termina a sessão ftp com o servidor remoto e retorna ao interpretador de comandos. Quaisquer macros definidas são apagadas. disconnect: Um sinônimo para close. delete arquivo-remoto: Apaga o arquivo arquivo-remoto na máquina remota. dir [diretório-remoto]: Mostra a listagem do diretório diretório-remoto. get arquivo-remoto [arquivo-local]: Recupera o arquivo-remoto e o armazena na máquina local. Se o nome do arquivo local não for especificado, ele terá o mesmo nome que na máquina remota, sujeito às alterações impostas pelas configurações case, ntrans e nmap. As atuais configurações para type, form, mode e structure serão usadas en quanto o arquivo estiver sendo transferido. help [comando]: Mostra uma mensagem informativa sobre o significado do comando. Se nenhum parâmetro for especificado, o ftp mostrará uma lista de todos os comandos válidos. lcd [diretório]: Muda o diretório de trabalho na máquina local. Se nenhum diretório for especificado, o homedir do usuário será usado e ls [diretório-remoto]: Mostra uma listagem do conteúdo de um diretório da máquina remota. mdelete [arquivos-remotos]: Apaga os arquivos-remotos na máquina remota. mdir arquivos-remotos arquivo-local: Como o dir, exceto que múltiplos arquivos podem ser especificados. Se o prompt interativo estiver habilitado, o ftp irá questionar o usuário para confirmar que o último parâmetro é realmente um nome de arquivo na máquina local para receber a saída do comando mdir; mkdir nome-do-diretório: Cria um diretório na máquina remota. mget arquivos-remotos: Expande os arquivos-remotos na máquina remota e faz um get para cada nome de arquivo obtido (download). mput arquivos-locais: Expande coringas na lista de arquivos passada e faz um put para cada arquivo resultante da lista. Os nomes resultantes serão então processados de acordo com as configurações ntrans e nmap; put arquivo-local [arquivo-remoto]: Armazena um arquivo local na máquina remota (upload). nlist [diretório-remoto] [arquivo-local]: Mostra uma lista dos arquivos de um diretório da máquina remota. Se o diretório-remoto não for especificado, o diretório atual será usado.

223

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

open máquina [porta]: Estabelece uma conexão para o servidor ftp da máquina especificada. Um número de porta opcional pode ser especificado, fazendo com que o ftp tente contatar um servidor ftp nesta porta. prompt: Habilita/desabilita o prompt interativo. O questionamento interativo acontece durante a transferência de múltiplos arquivos para permitir ao usuário seletivamente recuperar ou armazenar arquivos. Se o prompt interativo for desativado (o padrão é estar ativado), qualquer mget ou mput transferirá todos os arquivos, e qualquer mdelete deletará todos os arquivos. pwd: Mostra o nome do diretório atual na máquina remota; quit: Um sinônimo para bye; rename [de] [para]: Renomeia o arquivo na máquina remota. rmdir nome-do-diretório: Deleta um diretório na máquina remota. send arquivo-local [arquivo-remoto]: Um sinônimo para put. trace: Habilita/desabilita o rastreamento de pacotes.
DICA: Para abortar uma transferência de arquivos, use a tecla de interrupção do terminal (normalmente CONTROL+ C). Transferências de envio serão automaticamente suspensas. Transferências de recepção serão suspensas enviando um comando ABOR para o servidor remoto e descartando quaisquer dados novos que sejam recebidos. A velocidade com que isso será completado depende do suporte da máquina para o processamento do comando ABOR.

login nome: Identifica um usuário na máquina remota. Se esse item estiver presente, o processo de auto-login será iniciado usando o nome especificado. password senha: Fornece uma senha. Se este item estiver presente, o processo de auto-login fornecerá a senha especificada se o servidor remoto exigir uma senha como parte do processo de entrada. Perceba que se esse item estiver presente no arquivo .netrc para qualquer outro usuário que não seja o anonymous, o ftp irá abortar o processo de auto-login se o arquivo “.netrc” for legível para qualquer usuário exceto o próprio usuário.

Fazendo ftp via modo texto
Para fazer um ftp via modo texto, basta digitar o comando ftp seguido do IP ou nome da máquina que desejamos acessar ou somente ftp e depois que a conexão for efetuada digita-se o comando open seguido do IP ou nome da máquina a ser acessada. Em muitos casos quando estamos baixando arquivos de HOW-TO´s em modo texto é possível visualizá-los assim que terminar o download; para isso, depois de conectado use o comando ftp> get index.txt “| more”. Um exemplo mais interessante ainda é quando você tem um arquivo postscript e quer baixá-lo e visualizá-lo com o ghostscript após o download, tudo isso porque você é “fominha” e não pode esperar. Depois de conectado use o comando ftp> get hacking_passwd.ps.gz “| gzip -dc | gs -”. Legal, agora é o fato de que você tem direito de gravação remota via ftp e quer fazer transferências de arquivos e/ou diretórios. Use o comando ftp> put “| tar cvf - .” arquivo.tar. Assim, será criado um arquivo chamado arquivo.tar e depois ele será enviado para a máquina remota. Quer melhorar esse comando? Mande-o compactado com o comando compress assim ftp> put “| tar cvf - . | compress -c” arquivo.tar.Z.

Fazendo ftp via modo gráfico
Para fazermos ftp em modo gráfico, o sistema Linux nos oferece vários utilitários desde os mais simples até os mais avançados e com inúmeras opções e entre eles um dos melhores é o gftp do ambiente Gnome, alé de outro utilitários como o Kget, WebDownloader, IglooFTP, wget, WsFTP etc. Se você já usou utilitário para Windows semelhante, você não vai encontrar dificuldade. O Linux também tem o WS_FTP o qual é muito bom e é igualzinho o do Windows, e também tem o Cute FTP que apresenta a mesma “cara” e muitos semelhantes. Havendo erro na verificação, será necessário repetir o download, tomara que isso não seja necessário pois o download é demoraaaaaado. :-)

224

Global Sul Informática

Arquivo de configuração do servidor ftp
Exemplo de arquivo configuração do ProFTPd. A seguir nós temos um exemplo de configuração do ProFTPd:
## Configuração do ProFTPD# # # Configuração personalizada # ServerName “::Servidor ProFTPD Editora Futura::” ServerType standalone # Também pode ser usado o inetd. DefaultServer on ScoreboardFile /var/run/proftpd/scoreboard DeferWelcome on ServerAdmin gabriel@hackers.net SyslogFacility AUTH # Permite baixar arquivos aos poucos. AllowRetrieveRestart on # Para standalone usamos a porta 21 Port 21 # impede gravação de novos diretórios e arquivos. Umask 022 # Número máximo de instâncias. MaxInstances 30 # Máximo de clientes conectados ao mesmo tempo. MaxClients 10 # Modo de transferência de arquivos. DefaultTransferMode binary # Permite listagem colorida. LsDefaultOptions "-al --color=auto" # Usuário root não pode fazer conexões. RootLogin off # Desconecta após 5 minutos se nada acontecer. TimeoutIdle 500 # Mostra links simbólicos para listagens. ShowSymlinks On # Usuário apenas acessa seu diretório $HOME dele. DefaultRoot ~ # Usuário e grupo para o servidor User nobody Group nobody <Directory /*> AllowOverwrite no </Directory> # Configuração básica de ftp anônimo, sem diretório # para recepção de arquivos. <Anonymous ~ftp> User ftp Group ftp DirFakeUser on DirFakeGroup on RequireValidShell off # ftp = anonymous UserAlias anonymous ftp # número máximo de logins anônimos MaxClients 10 "Número máximo de clientes, tente mais tarde." # No máximo duas conexões por cliente MaxClientsPerHost 2 "Você já está com muitas conexões abertas." # O Welcome.msg mostrado na conexão e .message mostrado para cada # diretório acessado. DisplayLogin welcome.msg DisplayFirstChdir .message AccessGrantMsg "Acesso anônimo aceito para %u."

225

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

# Limite gravação no chroot anônimo <Limit WRITE> DenyAll </Limit> </Anonymous>

Conforme você pode perceber aqui a configuração do servidor Pro-FTPD não tão complicada assim. Basta apenas uma observação no arquivo e já podemos descobrir como é que ele funciona. Também podemos percebemos no exemplo a existência de várias diretivas até se iniciar o contexto <Directory>. Estas diretivas fazem parte do contexto principal. Em outras palavras: as diretivas que não estiverem dentro de algum contexto do tipo <Contexto> será considerado do contexto principal e por uma questão de organização, deverão ser declaradas no início do arquivo. Logo após o contexto principal, temos o contexto <Directory> determinando como o ProFTPd se comportará ao acessar o diretório /*, ou seja, todos os diretórios. O próximo contexto é o <Anonymous>, que neste caso utilizará o diretório ~ftp (diretório raiz do usuário ftp) para servir arquivos a serem acessados pelo login anonymous. Perceba que neste exemplo temos o contexto <Limit> com a ação WRITE determinando como o ProFTPd se comportará quando um usuário anonymous tentar fazer um upload de um arquivo.

226

Global Sul Informática

Anotações:

227

Sign up to vote on this title
UsefulNot useful