linux - tutoriais

254
  Linux -

Upload: camillo-andre

Post on 08-Jul-2015

264 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 1/254

 

 Linux -

Page 2: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 2/254

Page 3: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 3/254

 

Conteúdo

•  APT-RedHat: Instruções de como instalar e usar o APT, um poderoso gerenciador de pacotes, no

 RedHat ou Fedora. Contém também instruções para fazer um espelho do FTP do RedHat e criar um repositório do APT na sua máquina.

•  Backup remoto: Um tutorial que explica como fazer um backup simples de arquivos no sistema(backups completos ou diferenciais) e armazenar em um servidor remoto via FTP.

• Comandos: Uma série de explicações sobrecomandos no Linux, para quem está querendoiniciar ou aprender mais.

• Compartilhando Internet : Uma das coisas que o Linux faz melhor é compartilhar uma conexão Internet, seja ela discada ou fixa, com outroscomputadores em uma rede. Além decompartilhar bem, pode dar até segurançaadicional através de um firewall. Este tutorial traz o básico para quem quiser compartilhar suaconexão com uma rede local.

• Crontab: Como utilizar o cron e os arquivoscrontab para automatizar as tarefas do Linux,agendando qualquer tipo de coisa. Ótimo paraquem quer poupar tempo e trabalho!

•  Dispositivos: Os dispositivos são uma coisa quetemos que conhecer no Linux, senão agente se

 perde aos poucos nas configurações mais

básicas. Por isso fiz esse tutorial tentandoexplicar algo sobre eles...

•  Distribuições: Alguns comentários meus sobre asdistribuições atualmente disponíveis. Pode estar um pouco desatualizado, e não incluir todas

Page 4: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 4/254

 

distribuições, mas pode servir pra alguma coisa:)

•  File Server: Muitas pessoas que tem máquinas Linux como servidores, com links bons e tudo

mais, não acham um jeito de servir arquivos anão ser por ftp. Eis aqui uma solução para fazer um tradicional file server por IRC com o Linux,

 sem precisar de interface gráfica.• htaccess: Um tutorial sobre como usar os

arquivos .htaccess no Apache, incluindoautenticação de usuários, muito útil para quemmexe com servidores Web.

•  Instalando Java – um texto de como instalar Java•  Introdução ao Linux: Um texto um pouco grande

com uma introdução teórica do Linux, como suahistória, seu funcionamento "atrás do palco", sualicença, entre outros. Bom para quem nuncaouviu falar de Linux :P 

•  LILO: Aprendendo a configurar o clássico gerenciador de boot do Linux fica fácil com esse

tutorial, bem, pelo menos eu acho que vai ficar  fácil :P •  Manipulação de usuários: Como adicionar ou

remover usuários no Linux, entendendo como funciona tudo.

•  Modem – como instalar mode 56kbps•  MRTG: Como configurar o MRTG para analisar 

o tráfego de seu roteador, e gerar gráficos em

tempo real a partir dele.•  Placas de Som – como instalar audio nas placas

de som.•  Primeiros Contatos: Uma série de textos falando

 sobre os primeiros contatos entre o usuário e o sistema Linux, sem se aprofundar muito.

Page 5: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 5/254

 

•  Permissões: Um tutorial clássico sobre permissões de arquivos, com o que vocë precisa saber para controlar quem acessa o que no seu sistema Linux.

•  Programando em bash – como criar um script embash

• qmail: Como montar um servidor de e-mail utilizando o qmail, um robusto e seguro servidor de e-mail. Contém instruções e passo-a-passos

 para instalar um sistema completo de e-mail, com filtros, anti-virus, servidor IMAP e POP3, contas gerenciáveis via MySQL, entre outros.

•  Recompilando o kernel: Um passo a passo paraa recompilação do kernel, bem simples, paraquem quer começar a entrar na aventura que é

 personalizar o Linux.•  Reparticionamento: Reparticione seu HD sem

 precisar perder seus dados, de diversas formas. Métodos bem seguros e sem o uso de programascomerciais. SARG: Neste tutorial você poderá

aprender como gerar relatórios completos deacesso ao Squid com o programa SARG, queapropósito é muito bom e feito por um brasileiro:)

• Sistema de arquivos proc: o /proc no Linux é umdiretório virtual que serve como "diagnóstico" econfigurações em tempo real do kernel. Estetutorial traz uma breve introdução à ele.

Webalizer: Aprenda a montar estatísticas precisas e com gráficos a partir dos arquivos delog do servidor de páginas Apache. Saiba quemestá acessando o seu servidor.

• Webmin: Aprenda a fazer a simples instalaçãodo Webmin, um poderoso gerenciador de

Page 6: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 6/254

 

computador via Web feito em Perl. Ótimo paraadministrar máquinas e servidores remotamente.

•  ZipSlack : Para quem quiser experimentar umadistribuição Linux simpleszinha, como o

Slackware, o ZipSlack é bom porque nãonecessita de reparticionamento, e aqui vai umtutorial de como fazer esta instalação.

2. Dicas sobre Linux

•  Apache: Aprenda mais sobre o mais usado e poderoso servidor Web! :)

• Tomcat: Respostas às dúvidas dosadministradores de sistema que usam o Tomcat como servidor de páginas JSP.

• VIM: Dicas para o uso deste poderoso editor detexto de modo console no Linux.

• Servidor X: Dúvidas sobre o funcionamento do servidor gráfico no Linux, o X-Window.

•  ProFTPd: Com este poderoso servidor FTP,você pode obter muito, então aqui estão algumasdicas e dúvidas sobre ele.

•  IPTables: Algumas dicas para se usar com este filtro de pacotes do kernel do Linux.

 Início

APT no RedHat/Fedora

1. O que é o APT?

O APT (Advanced Package Tool, ou Ferramenta de Pacotes Avançada) é uma ferramenta que gerencia deuma maneira muito intuitiva os pacotes de programasno Linux. O APT foi originalmente criado para

 funcionar junto com dpkg, do Debian, mas ele foi portado pela Conectiva para funcionar com o sistema

Page 7: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 7/254

 

de pacotes RPM, criado pela RedHat. O APT resolveos conflitos e dependências de pacotes de uma maneiramuito fácil e automática. Além disso ela é uma ótima

 ferramenta para a atualização do sistema através da

 Internet, instalação de programas adicionais, entreoutros. Neste tutorial irei ensinar como instalar e usar o APT em sistemas RedHat ou Fedora, mas comalgumas adaptações, os métodos descritos aqui podem

 ser feitos em outras distribuições que utilizam o RPM. No caso do Debian, nada precisa ser feito pois o sistema já vem com o APT por padrão.

2. Instalando o APT no RedHat ou Fedora

 Para cada versão do sistema, há pacotes específicos a serem baixados. No site (http://apt.freshrpms.net/ 

 

 ) vocêobtém uma lista das versões do APT para cada versãodo seu RedHat ou Fedora. Abaixo segue o link direto

 para o RPM dos principais sistemas:

•  Fedora Linux 1 -http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/1/a

 pt/apt-0.5.15cnc3-0.1.fr.i386.rpm•  Red Hat Linux 9 -http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/apt -0.5.5cnc6-fr1.i386.rpm•  Red Hat Linux 8 -http://ftp.freshrpms.net/pub/freshrpms/redhat/8.0/apt/a

 pt-0.5.5cnc6-fr0.rh80.1.i386.rpm•  Red Hat Linux 7.3 -

http://ftp.freshrpms.net/pub/freshrpms/redhat/7.3/apt/a pt-0.5.5cnc5-fr0.rh73.2.i386.rpm

 Neste tutorial, iremos usar como exemplo o RedHat 9. Então para instalar o RPM no seu sistema depois debaixado através dos links acima, utilize o comando:

Page 8: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 8/254

 

# rpm -Uhv apt-0.5.5cnc6-fr1.i386.rpm

 Depois de instalado no sistema, você terá deconfigurar o APT através de seus arquivos de

configuração. O diretório /etc/apt foi criado nainstalação do pacote e é nele que você vai editar osarquivos necessários para o funcionamento da

 ferramenta.

O arquivo /etc/apt/apt.conf contém as configurações padrões do utilitário APT. As configurações nestearquivo já vêm prontas para o uso, e você só precisarámodificar alguma coisa se realmente estiver 

 precisando disso. Um exemplo do que você teria que fazer é habilitar o campo Proxy na seção Acquire parautilizar um Proxy ao baixar os pacotes na Internet.

 Já o arquivo /etc/apt/sources.list precisa de nossaconfiguração. Este arquivo contém a localização dosíndices dos pacotes e os próprios pacotes na Internet.

 Editando este arquivo, você ira especificar onde o APT irá baixar os pacotes para instalá-los na sua máquina.

O nome que damos à essa localidade é "repositórioapt". Vamos pegar o exemplo que já vem por padrãona configuração:

rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpmsrpm-src http://ayo.freshrpms.net redhat/9/i386 osupdates freshrpms

 As duas linhas acima especificam dois tipos de

repositórios APT: um de RPMs binários, e outro de RPMs com código-fonte (SRPMS). Caso você nãoutilize SRPMS, só é necessário a primeira linha. Alinha consiste em campos: O primeiro campo pode ser rpm ou rpm-src como já explicado. O segundo campo éo Host onde o APT se conectará para chegar ao

Page 9: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 9/254

 

repositório do APT. Este host pode ser HTTP ou FTP.O terceiro campo é o diretório onde o repositório estálocalizado. E por último, o quarto campo em diante sãoos módulos contidos no repositório.

 Na primeira linha, eu especifiquei que acessaria orepositório ayo.freshrpms.net, e faria o índice dos

 RPMS do os (parte principal do sistema, ou seja, os RPMs que vem no CD; updates que são as atualizaçõesde segurança da distribuição; e freshrpms que é umrepositório especial do http://freshrpms.net/ quecontém pacotes extras que a distribuição oficial nãodisponibiliza (por exemplo, o apt é um desses pacotes

extras).Como host do repositório apt, você pode também usar os mirrors (espelhos) disponíveis, como listado na

 página do http://apt.freshrpms.net/:

• ayo.freshrpms.net (Principal) - Completo• ayo.ie.freshrpms.net (HEAnet - Dublin, Ireland) -Completo•

ayo.us5.freshrpms.net (JTL Networks, Inc. -Colombus, OH USA) - Parcial • ayo.pt.freshrpms.net (Interacesso - Portugal) -

 Parcial • ayo.si.freshrpms.net (CAMTP - Maribor, Slovenia) -

 Parcial 

...Ou você pode criar seu próprio mirror, comoexplicado mais a frente neste tutorial.

3. Utilizando o APT 

 Agora é hora de colocar a ferramenta pra funcionar. Antes de mais nada precisamos atualizar os índices dorepositório APT, armazenando-o no nosso sistema.

 Para fazer isso, você só precisa de um comando:

Page 10: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 10/254

 

# apt-get update

 E ele irá atualizar o índice do repositório configuradono arquivo /etc/apt/sources.list como explicado antes.

Se tudo ocorrer bem, tudo ira seguir mais ou menoscomo mostro abaixo:

# apt-get updateGet:1 http://ayo.freshrpms.ne redhat/9/en/i386 release[714B]

 Fetched 714B in 0s (4010B/s) Hit http://ayo.freshrpms.net redhat/9/en/i386/os pkglist  Hit http://ayo.freshrpms.ne redhat/9/en/i386/os release

Get:1 http://ayo.freshrpms.ne redhat/9/en/i386/updates pkglist [434kB] Hit http://ayo.freshrpms.ne redhat/9/en/i386/updatesrelease

 Fetched 434kB in 2s (208kB/s) Reading Package Lists... Done Building Dependency Tree... Done

 Depois do indice atualizado no sistema, é hora de você

começar a colocar as coisas pra funcionar. Vamosagora por exemplo, tentar atualizar o sistema:

# apt-get upgrade Reading Package Lists... Done Building Dependency Tree... DoneThe following packages will be upgraded 

libxml21 packages upgraded, 0 newly installed, 0 removed and 

0 not upgraded. Need to get 584kB of archives. After unpacking 160B of additional disk space will beused.

 Do you want to continue? [Y/n] yGet:1 http://ayo.freshrpms.net 

Page 11: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 11/254

 

redhat/9/en/i386/updates libxml2 2.5.4-3.rh9 [584kB] Fetched 584kB in 0s (4262kB/s) Executing RPM (-Uvh)...warning: /var/cache/apt/archives/libxml2_2.5.4-

3.rh9_i386.rpm: V3 DSA signature: NOKEY, key IDdb42a60e

 Preparing...########################################### [100%]

1:libxml2########################################### [100%]

Como você pôde ver acima, eu utilizei o comando apt- get upgrade para procurar por pacotes mais novos eatualizar o sistema com eles. Na minha configuração,eu coloquei o módulo updates no /etc/apt/sources.list,então isso quer dizer que as atualizações que estiveremneste local do repositório serão reconhecidas pelo

 APT. É assim que fica fácil de se atualizar o sistema.

Se eu fizer novamente o processo acima, olha o quevou conseguir:

# apt-get upgrade Reading Package Lists... Done Building Dependency Tree... Done0 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.

Ou seja, todos os pacotes estão atualizados no meu

 sistema.Suponhamos agora que você queira instalar uns

 pacotes do PHP, mas não sabe ao certo como eles sechamam. Com o APT, você pode procurar no índice

 por pacotes que tenham em sua descrição certas

Page 12: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 12/254

 

 palavras, como por exemplo PHP. Para fazer isso,utilizamos o comando apt-cache, veja só:

# apt-cache search phpasp2php - Converts WWW Active Server Pages to PHP 

 pagesasp2php-gtk - gtk+ frontend for asp2phpquanta - K Desktop Environment - core files

 php - The PHP HTML-embedded scripting language.(PHP: Hypertext Preprocessor)

 php-devel - Files needed for building PHP extensions. php-imap - An Apache module for PHP applicationsthat use IMAP.

 php-ldap - A module for PHP applications that use LDAP. php-manual - The PHP manual, in HTML format. php-mysql - A module for PHP applications that use MySQL databases. php-odbc - A module for PHP applications that useODBC databases.

 php-pgsql - A PostgreSQL database module for PHP.

 php-snmp - A module for PHP applications that querySNMP-managed devices. squirrelmail - SquirrelMail webmail client 

Viu só? Estes são os pacotes relacionados com o PHP.Que tal a gente instalar o php-manual e dar uma lida

 pra aprender? Veja só como se faz:

# apt-get install php-manual 

 Reading Package Lists... Done Building Dependency Tree... DoneThe following NEW packages will be installed: php-manual 

0 packages upgraded, 1 newly installed, 0 removed and 0 not upgraded.

Page 13: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 13/254

 

 Need to get 13.7MB of archives. After unpacking 92.7MB of additional disk space will be used.Get:1 http://ayo.freshrpms.net 

redhat/9/en/i386/updates php-manual 4.2.2-17.2[13.7MB]

 Fetched 13.7MB in 1s (10.9MB/s) Executing RPM (-Uvh)...warning: /var/cache/apt/archives/php-manual_4.2.2-17.2_i386.rpm: V3 DSA signature: NOKEY, key IDdb42a60e

 Preparing...

########################################### [100%]1:php-manual 

########################################### [100%]

Uma coisa muito legal do APT é que se você quer instalar ou remover um pacote, e este pacote dependede outros pacotes, o APT sabe disso e resolve isso pra

você: ele pergunta se você quer tambéminstalar/remover os pacotes dependentes. Ou seja, sevocê não tiver o PHP instalado em sua máquina etentar instalar o php-imap, o APT vai querer instalar também o pacote principal php, pois o php-imap édependente dele. Teste para ver.

 E agora que eu já li o manual do PHP inteiro emapenas alguns segundos, eu quero removê-lo. Você

 pode remover muito bem utilizando o RPM, mas aquiestamos aprendendo sobre o APT, então utilizaremos:

# apt-get remove php-manual  Reading Package Lists... Done Building Dependency Tree... Done

Page 14: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 14/254

 

The following packages will be REMOVED: php-manual 

0 packages upgraded, 0 newly installed, 1 removed and 0 not upgraded.

 Need to get 0B of archives. After unpacking 92.7MB disk space will be freed. Do you want to continue? [Y/n] y Executing RPM (-e)...

 E lá se vai o manual do PHP. Como eu disse acima, sealgum outro pacote depender do manual do PHP, o

 APT perguntará a você se deseja remover o outro pacote também.

 E agora como nota final de uso, você pode atualizar uma versão de distribuição inteira através do APT.

 Para isso você só precisa mudar a versão do seurepositório (arquivo /etc/apt/sources.list) para umaversão superior a sua e executar o comando apt-get dist-upgrade.

 E pra terminar essa seção, vamos à tabelinha básica

dos comandos e suas funções:Comando Função

apt-get install <pacote>

 Instala um pacote e suasdependências.

apt-get remove<pacote>

 Remove um pacote e suasdependências.

apt-get 

upgrade

 Procura por pacotes mais

novos para fazer atualizações.

apt-get dist-upgrade

 Faz uma atualização deversão da distribuição.

apt-cache search

 Procura por termo nasdescrições dos pacotes

Page 15: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 15/254

 

<termo> disponíveis.

 E basicamente é isso. Utilizar o APT é muito simples enão requer muito segredo, nem esforço. Mas uma coisa

é certa: uma vez que você começa a usar o APT, nãoquer parar nunca por causa de sua praticidade.

4. Montando um repositório local do APT/RedHat 

Se você é um usuário doméstico ou tem poucasmáquinas em sua mão rodando Linux, já é muito

 prático você utilizar o APT com os repositóriosdisponíveis por aí na Internet. Mas para osadministradores de Rede que possuem várias máquinas

 Linux, seja na mesma rede ou não, pedir para cadauma delas instalar ou atualizar pacotes da Internet éum desperdício de banda, além de um péssimo favor 

 para os servidores externos. Então por que não fazer um repositório APT local?

O método aqui utilizado criará um mirror (espelho) do FTP da RedHat no seu sistema local, e scripts irãocriar os índices do APT em sua máquina. Para fazer o

espelho, precisaremos do pacote lftp, então se você nãoo possue, o que está esperando? apt-get install lftp!

Criando o espelho da distribuição

 Baixe o script make-redhat-mirror disponível nesta página e coloque-o no diretório /usr/local/bin. Entãorode inicialmente o seguinte comando:

# /usr/local/bin/make-redhat-mirror full 9

 E espere. Espere bastante. O script irá baixar todo oconteúdo do RedHat 9 (inclusive as atualizações) parao diretório /var/mirror/redhat. Este diretório de destino

 pode ser configurado dentro do script, editando-o. Inclusive você pode editar também o FTP onde o

Page 16: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 16/254

 

mirror vai tirar seus arquivos. Tente achar um mirror da RedHat mais próximo de você.

Só será necessário rodar este comando uma vez. Masdepois você vai querer se manter atualizado com osnovos pacotes, então para atualizar apenas a parte deupdates, utilize o seguinte comando:

# /usr/local/bin/make-redhat-mirror quick 9

 Mais tarde iremos também colocar no crontab pararodar as atualizações de índice com o FTP da RedHat automaticamente todo dia.

 Preparando o território do APT 

 Antes de criar os índices, você precisará primeiro deum método para os clientes do APT baixarem ascoisas. O método pode ser HTTP e FTP (Pode ser CD-

 ROM também, mas isso não vem ao caso). Fica ao seucritério escolher o método. No meu caso eu prefirocriar um host virtual no Apache chamado deapt.meudominio.com.br. Ou se você não tem domínio,

 pode usar seu próprio IP.

 Isto será extremamente necessário, e a configuraçãodisto está fora do escopo deste tutorial. Se você não

 sabe, procure saber como configurar um servidor  HTTP ou FTP. Provavelmente você sabe um pouco, senão não estaria lendo esta parte do tutorial :)

 Aqui, como eu disse, o lugar do repositório APT vai ser apt.meudominio.com.br, e o diretorio real no sistemavai ser 

 /var/www/dominios/apt.meudominio.com.br/html.

Criando o repositório APT 

 Agora é a hora de criar o repositório do APT em suamáquina. Para isso, baixe o script make-apt disponível nesta página e coloque-o em /usr/local/bin. Edite o

Page 17: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 17/254

 

 script e você verá algumas variáveis no começo para serem configuradas:

# Absolute directory for top of redhat mirror  MIRRORDIR=/var/mirror/redhat # Absolute directory for top of apt repository

 APTDIR=/var/www/dominios/apt.meudominio.com.br/html # URL of repositoryORIGINURL=apt.meudominio.com.br 

Veja aí o que você precisa. A variável MIRRORDIRindica onde você colocou o mirror do RedHat (isto estáconfigurado também no script make-redhat-mirror). A

variável APTDIR indica o diretório no sistema ondevai ficar o repositório do APT, que no nosso caso ficou sendo como /var/www/dominios/apt.meudominio.com.br/html. E  por último a variável ORIGINURL indica a URL ondevai estar disponível o repositório, que no nosso caso

 ficou sendo apt.meudominio.com.br.

 Depois de configurado estas três variáveis, é hora de

 finalmente criar o repositório. Na primeira vez quevocê for fazer isso, utilize o comando:

# /usr/local/bin/make-apt full 9

 Isso irá iniciar o processo de criação do repositório,que deve demorar um pouquinho. Depois de feito, está

 pronto! Agora seus usuários já podem acessar o seurepositório APT através do seu servidor HTTP.

Configurando os clientes para usar seu repositório

Tudo que você precisará fazer para configurar osclientes do APT para utilizar o seu repositório seráalterar o arquivo /etc/apt/sources.list e utilizar a

 seguinte linha:

rpm http://apt.meudominio.com.br redhat/9/en/i386 os

Page 18: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 18/254

 

updates

 E pronto! Se você estiver rodando várias máquinasnuma rede interna, apenas uma terá o repositório e o

resto irá baixar tudo localmente :) Atualizando o repositório diariamente

Como existem as atualizações de segurança, é semprebom você estar sempre atualizando seu repositório.

 Para fazer isso diariamente, crie um arquivo chamado /usr/local/bin/mirror-apt com o seguinte conteúdo:

#!/bin/bash /usr/local/bin/make-redhat-mirror quick 9 /usr/local/bin/make-apt quick 9

 Depois edite o arquivo /etc/crontab, e adicione as seguintes linhas:

# Atualizacao do Mirror RedHat e APT 01 1 * * * root /usr/local/bin/mirror-apt 

 Isso fará com que o sistema verifique as atualizaçõesno FTP da RedHat e crie o repositório APT casonecessário todo dia às 1:00 da manhã. Se você quiser aprender mais sobre como agendar as tarefas atravésdo crontab, visite meu outro tutorial: Utilizando ocrontab.

 E pronto! Seu trabalho está feito. Experimente emodifique as coisas para aprender mais. Não é tãodifícil adaptar estas informações para criar umrepositório do Fedora por exemplo, ou de outra versãodo RedHat. A única coisa que irá mudar será alocalização do mirror, entre outras pequenas coisas.

5. Conclusão e Referências

 Espero que você tenha gostado desse tutorial, e que ele possa ter te ajudado a lidar melhor com sua

Page 19: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 19/254

 

distribuição. Críticas e Sugestões podem ser mandadas para o meu e-mail. E agora os créditos para estetutorial:

http://www.webmo.net/support/apt_repository.html - Foi daí que peguei os scripts make-redhat-mirror emake-apt, e foi aí que aprendi basicamente como semonta o repositório. Créditos TOTAIS para esteendereço, muito bom.•  FreshRPMS - Ótimo site com os recursosnecessários para o APT ou YUM no RedHat. Um dos

 pioneiros, e o que trouxe a popularidade do APT no

 RedHat.•  AptRpm @ Conectiva - Site do APT na Conectiva,idealizadora do projeto.

Backup Remoto

 Nem sempre as pessoas pensam em backup, só quandoacontece alguma coisa com seu sistema. Um backup

 sempre é bom, mesmo que for bem simples. Vouapresentar através deste manual algumas formas de se

 fazer backup de arquivos do sistema Linux,opcionalmente armazenando estas cópias em um

 servidor remoto via FTP. Com isso os administradoresde redes podem centralizer os backups em umamáquina, para depois armazenar ou em uma fita dat,ou em cd-rom, ou seja lá o que for.

 Para fazer os backups, utilizaremos o clássicocomando "tar", que serve justamente para isso:armazenar arquivos em um arquivo. Vamos primeirocriar um exemplo de arquivo de backup:

 

tar -cf maquina-backup-full-20030212.tar /etc /var/named /var/log bzip2 maquina-backup-full-20030212.tar 

Page 20: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 20/254

 

O que fiz foi armazenar os arquivos dos diretórios"/etc", "/var/named" e "/var/log" no arquivo maquina-backup-20030212.tar, e depois compactá-lo no formatobzip2 (uma compactação melhor, mas que requer mais

 processamento), gerando então o arquivo "maquina-backup-20030212.tar.bz2". Este mesmo comando pode

 ser feito em uma linha só:

tar -jcf maquina-backup-full-20030212.tar.bz2 /etc /var/named /var/log 

Com este arquivo, teremos um backup completo dostrês diretórios especificados. Vamos à mais um

exemplo:tar -zcf maquina-backup-full-20030212.tar.gz /etc

 /var/named /var/log tar -zcf maquina-home-full-20030212.tar.gz /home

 Aqui eu criei dois arquivos. Um arquivo contém obackup que criamos anteriormente, e outro arquivoterá o backup do diretório "/home", ou seja, o diretóriodos usuários do sistema. A diferença aqui é que eu usei

a opção "z" e não a "j". Isso quer dizer que o tar vaiusar o programa gzip ao invés do bzip2.

 Agora vamos supor que eu alterei o conteúdo dodiretório "/etc", adicionando um arquivo chamado"teste" e modificando o arquivo "crontab". Para nãoter que fazer um backup total novamente, eu possoincrementar este backup somente com as modificações

 feitas. Para isso eu utilizo o seguinte comando:

 find /etc /var/named /var/log -mtime -1 -type f -print | \tar zcvf maquina-backup-incremental-20030212.tar.gz-T -

 Aqui o Linux vai procurar por arquivos modificadosnuma faixa de 1 dia (usado para backups incrementais

Page 21: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 21/254

 

diários) e armazená-los no arquivo "maquina-backup-incremental-20030212.tar.gz". Vejamos agora umbackup feito com os arquivos modificados numa faixade uma semana:

 find /etc /var/named /var/log -mtime -7 -type f -print | \tar zcvf maquina-backup-incremental-20030212.tar.gz-T -

 Agora se você quiser automatizar, e poupar trabalho,use para a nomeação do arquivo o comando "date",

 gerando assim a data no arquivo. Veja o exemplodessa compactação:

# tar zcf backup-full-`date +%Y%m%d`.tar.gz /etc# lsbackup-full-20030212.tar.gz

 Agora que você já aprendeu a fazer os backups, vamosarmazená-lo remotamente. Eu assumo que você játenha configurado um servidor FTP em outra máquina,

 se você ainda não fez isso, faça. Depois adicione umusuário com uma certa senha para acessar este ftp.

 Aqui no tutorial vamos usar como usuário: "backup" ecomo senha: "segredo". Utilize o seguinte script paraautomatizar o processo:

#!/bin/bash# 

 DATA=`date +%Y_%m_%d`

# Dados do arquivo de backup MAQUINA="sakura"  ARQUIVO="backup-full-$MAQUINA-$DATA.tar.gz"  DIRETORIOS="/etc /var/log" 

# Dados do servidor FTP  HOST_FTP="192.168.0.1" 

Page 22: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 22/254

 

USUARIO_FTP="backup" SENHA_FTP="segredo" 

# A partir daqui não precisa mais editar.

# Cria o arquivo .tar.gz no /tmp (Temporário)cd /tmptar zcf /tmp/$ARQUIVO $DIRETORIOS 

# Acessa o FTP e coloca os arquivos ftp -in <<EOF 

open $HOST_FTP user $USUARIO_FTP $SENHA_FTP 

binlcd /tmpdele $ARQUIVO

 put $ARQUIVObye

 EOF 

# Remove os arquivos temporarios

rm -rf /tmp/$ARQUIVO Pronto! Lembre-se de proteger este arquivo aos olhosalheios, porque a senha do usuário do FTP está visível.

 Este pequeno script shell cria um backup dos diretórios"/etc" e "/var/log", conecta ao servidor FTP e envia oarquivo. Você só precisará alterar as variáveis docomeço do arquivo para as suas necessidades.

Com isso você terá o backup remoto que precisar.

 Modificando o script você pode criar também backupsincrementais, e junto com o crontab, pode programar 

 para as máquinas ficarem fazendo backups diários, semanais, mensais, ou como você quiser. Lembre-se sempre que os backups uma vez na máquina remota,devem ser colocados por segurança em uma mídia

Page 23: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 23/254

 

como fita DAT ou CD-ROM. Cabe à você decidir :) Bom proveito! Depois criarei mais dicas sobre oassunto.

Comandos no Linux

Comandos para manipulação de arquivos

 A primeira coisa que sempre vem em mente no uso deum sistema operacional é como lidar com os arquivosdentro dele... Nesta seção eu vou mostrar algunscomandos básicos para mexer com os arquivos.

• cd - Navegando entre diretórios• ls - Listar arquivos• mkdir - Cria um diretório• rmdir - Remove um diretório vazio• cp - Cópia de arquivos e diretórios• mv - Move arquivos e diretórios• rm - Deleta arquivos e diretórios• ln - Linkando arquivos• cat - Exibe o conteúdo de um arquivo ou direciona-o

 para outro•  file - Indicando tipo de arquivo

cd - Navegando entre diretórios

cd [nome_do_diretório]

 Este comando acima mudará o diretório atual de ondeo usuário está. Há também algumas abreviações dediretórios no Linux para a facilitação, estes são:

 Abreviação Significado

. (ponto) Diretório atual 

.. (dois pontos)

 Diretório anterior 

Page 24: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 24/254

 

~ (til) Diretório HOME do usuário

 / (barra) Diretório Raiz

- (hífen) Último diretório Por exemplo, se eu quero ir para o meu diretóriohome, faço o seguinte:

$ pwd  /usr/games$ cd ~$ pwd 

 /home/xxx

Ou seja, eu estava no diretório /usr/games, e com um simples cd para o diretório ~, fui para o meu diretóriohome (/home/xxx). Quando você deseja saber ocaminho completo do diretório em que você está,utilize o comando pwd. Se você deseja ir para umdiretório que está na raiz diretamente, você usa o / antes, exemplo:

$ pwd  /usr/local/RealPlayer7/Codecs$ cd /etc/rc.d $ pwd 

 /etc/rc.d $ cd -$ pwd 

 /usr/local/RealPlayer7/Codecs

 Eu estava no diretório /usr/local/RealPlayer7/Codecs equis ir para o diretório etc/rc.d que está na raiz. Notedepois que eu usei o hífen e fui de volta para o últimodiretório em que eu estava.

Page 25: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 25/254

 

ls - Listar arquivos

ls [opções] [arquivo/diretório]

 Este comando lista os arquivos, nada mais que isso. Se

você executar apenas o ls sozinho, ele vai mostrar todos os arquivos existentes no diretório atual. Hátambém as opções extras:

 Parâmetro Significado

-l  Lista os arquivos em formatodetalhado.

-a Lista os arquivos ocultos (quecomeçam com um .)

-h Exibe o tamanho num formatolegível (combine com -l)

-R Lista também os subdiretóriosencontrados

 Exemplo de uma listagem detalhada:

$ ls -l 

total 9916 drwxrwxr-x 5 xxx xxx 1302 Aug 16 10:15CursoC_UFMG-rw-r--r-- 1 xxx xxx 122631 Jul 12 08:20

 Database.pdf -rw-r--r-- 1 xxx xxx 2172065 Jul 12 08:20 MySQL.pdf -rw-r--r-- 1xxx xxx 2023315 Jul 12 08:20 PHP3.pdf 

 Podemos também usar no ls os wildcards, ou seja,

caracteres que substituem outros. Exemplo: eu querolistar todos os arquivos que têm a extensão .txt, faço o seguinte:

$ ls *.txt debian-install.txt manualito.txt named.txt 

 plip.txt seguranca.txt 

Page 26: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 26/254

 

ipfw.txt mouse.txt placa_de_video.txt rede.txt sis.txt 

O wildcard é o "*", que representa "tudo".txt. Existem

outros wildcards, exemplo disso é o ponto deinterrogação (?), que substitui apenas 1 caractere,exemplo:

$ ls manual?.txt manual1.txt manual2.txt manual3.txt manualx.txt manualP.txt 

 Existe outro wildcard, que envolve os colchetes. Por exemplo:

$ ls manual[3-7].txt manual3.txt manual4.txt manual6.txt manual7.txt 

 Lista todos os arquivos que tiverem como manual?.txt,onde o ? pode ser substituído por 3, 4, 5, 6 e 7.

mkdir - Cria um diretório

mkdir <nome_do_diretório>

Cria um diretório. Exemplo:

$ mkdir ~/paginas

 Este comando criará o diretório paginas no seudiretório home.

rmdir - Remove um diretório vazio

rmdir <nome_do_diretorio>

 Apaga um diretório que esteja vazio. Exemplo:

$ rmdir /tmp/lixo

 Isto apagará o diretório /tmp/lixo apenas se ele estiver vazio. Para apagar um diretório com seu conteúdo,refira-se ao comando rm.

Page 27: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 27/254

 

cp - Cópia de arquivos e diretórios

cp [opções] <arquivo_origem> <arquivo_destino>

O comando cp copia arquivos e diretórios. Como

opções dele, podemos ver: Parâmetro Significado

-i Modo interativo

-v Mostra o que está sendocopiado

-RCopia recursivamente(diretórios e subdiretórios)

 Exemplos:Quero copiar brasil.txt para livro.txt, com a opção demodo interativo.

$ cp -i brasil.txt livro.txt cp: sobrescrever ̀ livro.txt'?

Como o arquivo livro.txt já existia, ele pergunta sequer sobrescrever, responda y(sim) ou n(não). Agora

eu quero copiar o diretório /home/ftp com tudo dentro(até seus subdiretórios) para /home/ftp2, faço o

 seguinte:

$ cp -R /home/ftp /home/ftp2

mv - Move arquivos e diretórios

mv <arquivo_origem> <arquivo_destino>

 Este comando simplesmente move algum arquivo paraoutro lugar. Ele também é usado para renomear umarquivo. Por exemplo, se eu quero renomear oindustria.txt para fabrica.txt, eu faço o seguinte:

$ mv industria.txt fabrica.txt 

Page 28: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 28/254

 

Se eu quiser mover o industria.txt para /home/usuariocom o mesmo nome, faço:

$ mv industria.txt /home/usuario

rm - Deleta arquivos e diretóriosrm [opções] <arquivo>

 Este comando apaga definitivamente o arquivo oudiretório. Exemplo:

$ rm arquivo.bin

 Para apagar um diretório com todo seu conteúdo, usa-

 se a opção -r, assim:$ rm -r /tmp/lixo

ln - Linkando arquivos

ln -s <arquivo_origem> <link simbólico>

 Este comando é usado para gerar links simbólicos, ou seja, que se comportam como um arquivo ou diretório,mas são apenas redirecionadores que mandam seucomando para outro arquivo ou diretório, por exemplo:

$ ln -s /manual /home/linux-manual 

 Este comando criará o link /home/linux-manual, sevocê der um ls -l você verá que o diretório /home/linux-manual está apontando para /manual. Se você ir parao /home/linux-manual, você na verdade estará no

 /manual, mas como é um link, não há diferença.cat - Exibe o conteúdo de um arquivo ou direciona-o

 para outro

cat <arquivo>

Page 29: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 29/254

 

 Este comando existe para mostrar o conteúdo de umarquivo, ou para fazer a cópia deste arquivo, ou uma

 junção. Vejamos um exemplo, se eu quiser mostrar oconteúdo de /home/usuario/contato, eu digito:

$ cat /home/xxx/contato

 Aparecerá o conteúdo do arquivo contato:

 Nome do usuário (xxx xxxxx..) xxx_arroba_itotal_ponto_com_ponto_br http://tlm.conectiva.com.br 

 Este comando pode também servir de direcionador 

 para outro arquivo. Indicadores são usados para isso: Indicador ">" - faz uma cópia, exemplo:$ cat contato1 > contato2

 Indicador ">>" - Acrescenta um arquivo ao outro,exemplo:cat contato1 >> contato2

O cat pode fazer coisas que nem você imagina, comotocar sons. Para fazer isso é simples, ele direciona oarquivo som para o dispositivo de áudio (que no linuxé representado por um arquivo), exemplo:

cat som-dumau.au > /dev/audio

 file - Indicando tipo de arquivo

 file <arquivo>

 Este comando identifica o tipo de arquivo ou diretório

indicado pelo usuário conforme os padrões do sistemaoperacional. Há varios tipos de retorno, vamos aquiver alguns mais importantes:

 ASCII text C Program sourcedirectory ELF-Executable

Page 30: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 30/254

 

data Bourn-again shell-script 

 Apenas um exemplo deste comando:

$ file linux.txt 

 ASCII Text Comandos sobre processos do sistema

•  ps - Listando processos• kill - Matando um processo• killall - Matando processos pelo nome• w - Lista os usuários logados

 ps - Listando processos ps [opções]

Quando um programa é executado no sistema, elerecebe um número de identificação, o chamado PID.

 Este comando lista esses processos executados, eapresenta o PID. Além do PID, ele também mostra ocomando executado (CMD) e também o STAT (statusatual do processo executado, veja nota abaixo), além

de outros.O status do processo é identificado por letras, aqui

 segue uma tabela com as definições de cada letra:

 Letra Definição

0 Não existente

S  Descansando, fora de funcionamento (Sleeping)

 R Rodando (Running)

 I Intermediando (Intermediate)

 Z Terminando (Zumbi)

T Parado (Stopped)

Page 31: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 31/254

 

W Esperando (Waiting)

 Agora um exemplo para este comando:

$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 1120 52 ? S Dec25 0:05init root 2 0.0 0.0 0 0 ? SW Dec25 0:00[kflushd]root 3 0.0 0.0 0 0 ? SW Dec25 0:00[kupdate]

root 4 0.0 0.0 0 0 ? SW Dec25 0:00[kpiod]root 1004 0.0 0.0 10820 48 ? SN Dec250:00 [mysqld]root 1007 0.0 0.0 2852 0 ? SW Dec250:00 [smbd]

 xxx 1074 0.0 0.0 1736 0 tty1 SW Dec250:00 [bash]

 xxx 1263 0.0 0.0 1632 0 tty1 SW Dec250:00 [startx] xxx 1271 0.0 0.0 2304 0 tty1 SW Dec250:00 [xinit]

 xxx 1275 0.0 2.4 4312 1360 tty1 S Dec250:16 wmaker 

 xxx 2461 0.0 0.0 1636 0 tty1 SW 07:09 0:00[netscape]

 xxx 9618 0.9 4.9 5024 2688 pts/1 S 09:56 0:06 vim d03.html 

 xxx 12819 6.7 6.9 5580 3796 ? S 10:030:13 mpg123 King Diamond - Help.mp3

 Este parâmetro (aux) fez o ps listar todas asinformações sobre todos os processos executados.

Page 32: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 32/254

 

kill - Matando um processo

kill [-SINAL] <PID>

O comando kill é muito conhecido (principalmente

 pelos usuários do Netscape :)), ele serve para matar um processo que está rodando. Matar? Terminar este processo, finalizar natoralmente! Para matar um processo, temos de saber o PID dele (veja o comando ps), e então executar o kill neste PID. Vamos killar o Netscape:

$ ps aux | grep netscape xxx 2461 0.0 0.0 1636 0 tty1 SW 07:09 0:00

[netscape]$ kill -9 2461

 E o processo do Netscape foi morto! Vivas! O sinal -9 significa para forçar e matar natoralmente mesmo.Uma lista de sinais pode ser encontrada com ocomando:

man 7 signal 

killall - Matando processos pelo nome

killall [-SINAL] <comando>

 Faz a mesma coisa que o kill, só que a vantagem aqui éque você não precisa saber o PID do processo, e sim onome. A desvantagem é que se tiver dois processos como mesmo nome, os dois são finalizados. Seguindo oexemplo do comando kill:

$ ps aux | grep netscape xxx 2461 0.0 0.0 1636 0 tty1 SW 07:09 0:00[netscape]$ killall -9 netscape

Page 33: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 33/254

 

w - Listas os usuários logados

w

Com este comando, é possível você ver quais usuários

estão atualmente logados no seu sistema, além deinformações como "O que ele está fazendo", "aondeestá fazendo", "desde quando está logado", etc.Vejamos um exemplo aqui da minha máquina:

 xxx@itotal xxx]$ w10:37am up 13:45, 4 users, load average: 0.85, 0.70,

0.71USER TTY FROM LOGIN@ IDLE 

 JCPU PCPU WHAT  xxx tty1 - Mon 8pm 25.00s 34:16 0.09s-bashroot tty2 - 10:37am 5.00s 0.27s 0.14stop

 xxx tty3 - 10:37am 11.00s 0.25s 0.13svi cmpci.c

 jim tty4 - 10:37am 22.00s 0.23s 0.12s

 BitchX Comandos de pacotes(instalação/desinstalação/consulta)

O que são pacotes?

 No Linux, geralmente os aplicativos vêem em forma decódigo-fonte, então o usuário tem de baixar ecompilar. Os pacotes servem justamente para facilitar o trabalho do usuário, dando a ele um arquivoempacotado com o código já compilado. Existemdiversos gerenciadores de pacotes que iremosaprender a usar o básico deles aqui. Tem o RPM (RedHat Package Manager), que é usado por váriasdistribuições como o Conectiva Linux, Red Hat, SuSE e

 Mandrake. Também tem o DEB (Debian Packages),

Page 34: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 34/254

 

muito bom também e usado pela distribuição Debian eCorel Linux (que é baseada no Debian por isso). E temos também o pacoteamento do Slackware (TGZ),que não é tão poderoso como os anteriores, mas

quebra galhos também. Além de empacotar o código-fonte compilado, os gerenciadores de pacotes também armazenam asinformações de instalação em um banco de dados, paradepois o usuário ter informações sobre a instalação, e

 para desinstalar o pacote do sistema. E não há apenas pacotes com código-fonte compilado, também há pacotes que contém o código-fonte sem compilar, mas

empacotado.Utilizando o PKGTOOL (Slackware)

 Nas distribuições Slackware, é bem simples o gerenciamento de pacotes dele. Os pacotes têmextensão .tgz (diferente de .tar.gz), e além de conter osarquivos, contém scripts de pós-descompactaçãotambém. Existe uma interface muito amigável para o

 gerenciamento dos pacotes .tgz, e se chama pkgtool.Tente executar o pkgtool no console e ver no que dá.

 Mas também existem os comandos individuais:

Comando O que faz

installpkg  X.tgz

 Instala o pacote X.tgz

removepkg X  Desinstala o pacote X 

makepkg Cria um pacote

Utilizando o RPM 

 Para instalar um pacote, usa-se a opção -i:

# rpm -i pacote.rpm

Page 35: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 35/254

 

Você também pode utilizar as opções -v e -hcombinadas com a -i para uma mostragem maisagradável. Se você já tem o pacote.rpm e desejaatualizar para uma versão mais recente da mesma,

você utiliza a opção -U ao invés da -i, exemplo:# rpm -Uvh pacote-atualizacao.rpm

 Isso irá atualizar os arquivos do pacote. Se você quer retirar o pacote do seu sistema, você utiliza a opção -e,assim:

# rpm -e pacote

Caso este pacote gere dependências com outros pacotes, e mesmo assim você queira removê-lo, você pode utilizar a opção --force, que como o nome diz, força a remoção do mesmo:

# rpm -e pacote --force

 Agora uma característica muito importante também para o usuário é a capacidade de consulta que o RPM traz. Por exemplo, se você quer listar todos os pacotes

instalados no sistema, você utiliza o comando:$ rpm -qa

 Isto irá gerar a listagem dos pacotes. Veja que a opção-q (query) é a opção de consulta, e seguida de outraletra ela faz tarefas. Combinando o comando anterior com o comando grep, podemos ver se um certo pacoteestá instalado no sistema:

$ rpm -qa | grep BitchX  BitchX-75p3-8cl 

 E se você quer saber informações sobre um pacote? Então usa-se a opção -i. Vejamos um exemplo:

$ rpm -qi BitchX 

Page 36: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 36/254

 

 Name : BitchX Relocations: (not relocateable)Version : 75p3 Vendor: conectiva

 Release : 8cl Build Date: qua 16 fev

2000 01:28:59 BRST  Install date: dom 10 set 2000 19:33:23 BRT Build  Host: mapinguari.conectiva.com.br Group : Aplicações/Internet Source RPM:

 BitchX-75p3-8cl.src.rpmSize : 2812352 License: GPLURL : http://www.bitchx.org Summary : Cliente IRC para o console do Linux

 Description :O BitchX é um cliente de IRC com suporte a cores parao consoledo Linux. Ele incorpora várias características quenormalmenterequereriam um script, e a sua interface é maiscolorida, e simplesde trabalhar que a do ircII :)

Se quisermos ver quais pacotes fazem dependência comum certo pacote, utilizamos a opção -R:

$ rpm -qR pacote

 E para verificar a qual pacote um certo arquivo pertence, utilize a opção -f, assim:

$ rpm -qf /diretorio/arquivo

Ou o contrário, se você quiser listar todos os arquivos pertencentes à um pacote, faça assim:

$ rpm -ql pacote

Outros tipos de comandos

 Descompactar arquivos

Page 37: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 37/254

 

 Extensão.tar.gz

tar zxpvf arquivo.tar.gz

 Extensão .tar tar xpvf arquivo.tar 

 Extensão .gz gunzip arquivo.gz Extensão.tar.bz2

bunzip2 arquivo.tar.bz2 ;tar xpvf arquivo.tar 

 Extensão.bz2

bunzip2 arquivo.bz2

 Extensão .zip unzip arquivo.zip

Compactar arquivos

 Empacotar um diretórioem .tar 

tar cvf diretorio/ 

 Empacotar um diretórioem .tar.gz

tar zcvf diretorio/ 

Compacta um arquivo para .gz

 gziparquivo

Compacta um arquivo

 para .bz2

bzip2

arquivo Espaço em disco

df -h Mostra o espaço em disco das partições montadas

du -hs

 Mostra o espaço ocupado pelodiretório atual 

 Informações do sistema

date Mostra a data e hora atual 

cal Mostra um calendário

uptime Mostra quanto tempo seu sistemaestá rodando

Page 38: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 38/254

 

 free Exibe a memória livre, a usada, eos buffers da memória RAM 

top Mostra os processos que mais gastam memória

uname-a

 Mostra informações de versão dokernel 

 Programas (console)

vi Editor de texto

 pico Editor de texto

 pine Leitor de E-Mail 

mutt Leitor de E-Mail lynx Navegador Web

links Navegador Web

Compartilhando uma conexão com o Linux

Um dos casos mais comuns é esse, você ter uma

conexão com a Internet, e outros computadores emuma rede interna. Então você quer compartilhar essaconexão com os outros computadores. Poderia-se usar 

 servidores de proxy para isso, mas queremoscompartilhar totalmente! Então o que fazer?

 Primeiro de tudo, você precisa verificar qual a versãodo seu kernel. Kernels diferentes utilizarão ferramentasdiferentes. Vejamos:

Versão do Kernel 

Utilitário

2.0.x ipfwadm

2.2.x ipchains

2.4.x iptables

Page 39: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 39/254

 

 É claro que não podemos descartar o fato de quequanto maior a versão do kernel, melhor é aimplementação desses utilitários! Então é sempre bomvocê usar o mais atual, que no nosso caso é o iptables!

:)O que queremos fazer aqui se chama Masquerading.

 Masquerading é quando o Linux atua como um gateway entre a Internet e a Rede Local, alterando os pacotes, de modo que ele vá pro lugar certo, e retorne para o lugar em que saiu. Um jeito bem simples de secompartilhar a sua conexão, considerando que a suarede local seja: 192.168.0.0/24 (que significa a faixa

de IPs de 192.168.0.1 até 192.168.0.254). Vamos lá:ipfwadm (Kernel 2.0.x)------------------------# ipfwadm -F -p DENY # ipfwadm -F -a ACCEPT -m -S 192.168.0.0/24

ipchains (Kernel 2.2.x)------------------------

# ipchains -P forward -j DENY # ipchains -A forward -s 192.168.0.0/24 -j MASQ

iptables (Kernel 2.4.x)------------------------# iptables -t nat -P POSTROUTING DROP # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE 

 No caso do iptables, você terá que substituir o eth0 pelo seu tipo de conexão. No exemplo a Internet aquiestá funcionando através da placa de rede 'eth0' e arede local em 'eth1', então eu ativei o masquerading na'eth0', que é a placa da Internet.

Page 40: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 40/254

 

Se você usa conexão discada, então ao invés de ser 'eth0' ou 'eth1', você usará 'ppp0', que é a interface deconexão PPP, utilizada pelos provedores de acessodiscado.

 E antes que eu me esqueça (e você também), há um passo essencial que *nunca* pode ser descartado.Você terá que habilitar o IP Forwarding no kernel do

 Linux, para ele poder repassar os pacotes da sua redeinterna para a Internet. Não importa que versão dokernel você tenha, execute o seguinte comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward 

 Pronto, sua conexão está compartilhada com todos da sua rede interna. A única coisa que lhe restou pra fazer agora é configurar as próprias máquinas da redeinterna para usarem esta conexão compartilhada. Sevocê estiver usando Linux, você apenas terá queadicionar uma rota padrão, que é o gateway:

# route add -net default gw 192.168.0.1

Onde 192.168.0.1 é o IP da máquina servidora. Pronto, sua máquina cliente já está usufruindo domasquerading que a outra máquina está fazendo.

Caso a máquina cliente seja Windows, configure na placa de rede para ela ter como Gateway o IP damáquina servidora.

 As configurações que você fez no Linux vão se desfazer assim que você reiniciar o sistema, então é bom deixar 

todos estes comandos que você fez num arquivo deinicialização. Você pode colocá-los, por exemplo,dentro do arquivo '/etc/rc.d/rc.local'.

 Agora é USAR, USAR e USAR!

Utilizando o crontab

Page 41: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 41/254

 

O "cron" é um programa de "agendamento de tarefas".Com ele você pode programar para ser executadoqualquer coisa numa certa periodicidade ou até mesmoem um exato dia, numa exata hora. Um uso bem

comum do cron é o agendamento de tarefasadministrativas de manutenção do seu sistema, como

 por exemplo, procura por links simbólicos quebrados,análise de segurança do sistema, backup, entre outros.

 Estas tarefas são programadas para todo dia, toda semana ou todo mês, serem automaticamenteexecutadas através do crontab e um script shell comum. A configuração do cron geralmente é chamada

de crontab.Os sistemas Linux possuem o cron sempre presente.

 Pelo menos eu nunca vi nenhuma distribuição que nãoincluísse o tão útil cron. A configuração tem duas

 partes: Uma global, e uma por usuário. Na global, queé o root quem controla, o crontab pode ser configurado

 para executar qualquer tarefa de qualquer lugar, comoqualquer usuário. Já na parte por usuário, cada

usuário tem seu próprio crontab, sendo restringidoàpenas ao que o usuário pode fazer (e não tudo, comoé o caso do root).

 Para configurar um crontab por usuário, utiliza-se ocomando "crontab", junto com um parâmetro,dependendo do que você quiser fazer. Abaixo umarelação:

Comando Função

crontab -e Edita o crontab atual do usuário

crontab -l  Exibe o atual conteúdodo crontab do usuário

crontab -r Remove o crontab do

Page 42: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 42/254

 

usuário

Se você quiser verificar os arquivos crontab dosusuários, você precisará ser root. O comando crontab

coloca os arquivos dos usuários no diretório: /var/spool/cron/usuario

Onde "usuario" corresponde ao usuário dono doarquivo crontab.

 Agora se você quiser editar o crontab global, este ficano arquivo "/etc/crontab", e só pode ser manipulado

 pelo root. E agora que já sabemos onde ficam os

arquivos de configuração, vamos estudar o formato dalinha do crontab, que é quem vai dizer o que executar equando. Vamos ver um exemplo:

0 4 * * * who

 Então como se pode ver, a linha é dividida em 6 campos separados por tabs ou espaço:

Campo Função

1o. Minuto2o. Hora

3o. Dia do mês

4o. Mês

5o. Dia da semana

6o. Programa pra execução

Todos estes campos, sem contar com o 6o., sãoespecificados por números. Veja a tabela abaixo paraos valores destes campos:

Campo Função

 Minuto 0-59

 Hora 0-23

Page 43: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 43/254

 

 Dia do mês 1-31

 Mês 1-12

 Dia da

 semana

0-6 (o "0" é domingo, "1" 

 segunda, etc) Então o que nosso primeiro exemplo estava dizendo? Alinha está dizendo: "Execute o comando 'who' todo diade todo mês sendo o dia qualquer dia da semana, às 4horas e 0 minutos.". Vamos pegar mais exemplos paraanalisar:

1,21,41 * * * * echo "Meucrontab rodou mesmo!" 

 Aqui está dizendo: "Executar o comando do sextocampo toda hora, todo dia, nos minutos 1, 21 e 41".

30 4 * * 1 rm -rf /tmp/*

 Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da manhã.".

45 19 1,15 * * /usr/local/bin/backup

 Aqui está dizendo: "Executar o comando 'backup' tododia 1 e 15 às 19:45.".

 E assim você pode ir montando inúmeros jeitos deagendamento possível. No arquivo do crontab global, o

 sexto campo pode ser substituído pelo nome dousuário, e um sétimo campo adicionado com o

 programa para a execução, como mostro no exemplo a seguir:

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg 

 Aqui está dizendo: "Executar o mrtg como usuárioroot, durante 5 e 5 minutos dos minutos 0-59. Ou seja,executar de 5 em 5 minutos o mrtg sempre.".

Page 44: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 44/254

 

 Em alguma distribuições, os agendamentos maiscomuns estão programados para serem executados.Veja as linhas abaixo:

01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts

 /etc/cron.daily22 4 * * 0 root run-parts

 /etc/cron.weekly42 4 1 * * root run-parts

 /etc/cron.monthly

O programa "run-parts" executa todos os scriptsexecutáveis dentro de um certo diretório. Então comessas linhas, temos diretórios programados paraexecutar programas de hora em hora, diariamente,

 semanalmente ou mensalmente. Abaixo a tabela:

 Diretório Período

 /etc/cron.hourly De hora emhora

 /etc/cron.daily Diariamente /etc/cron.weekly Semanalmente

 /etc/cron.monthly Mensalmente

 Então todos os arquivos executáveis dentro de cadadiretório serão executados no seu correspondente

 período. Ou seja, posso colocar um certo conteúdo noarquivo "/etc/cron.daily/teste", depois torná-lo

executável através do comando "chmod +x /etc/cron.daily/teste", e então ele será executado tododia as 4:02 da manhã.

 Bem é isso! Agora você já pode programar suas tarefas para serem automaticamente executadas e te poupar muito trabalho manual :)

Page 45: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 45/254

 

 Dicas - Apache

 Mostrando páginas de um servidor Intranet num servidor Internet 

 Às vezes você se depara com uma configuração em quevocê tem um servidor Apache rodando para a Internet,e outros servidores rodando internamente. Só quecomo fazer para que os usuários da Internet acessemos vários servidores internos? Uma solução seriaconfigurar o firewall para que redirecione asrespectivas conexões para os servidores internos via

 NAT. Mas o problema disso é que você não consegueredirecionar na mesma porta de acordo com o nome dohost, ou seja, não tem a habilidade de fazer umaconfiguração de Domínio Virtual no firewall.

Vamos supor que eu tenha três servidores internos eum externo. Cada um destes servidores internoscarrega um site diferente, rodando sob Linux e Apache(SIM!), enquanto que no servidor externo, eu tenho um

 Apache rodando com alguns sites simples. Como fazer  para que este Apache no servidor externo mostre aosusuários da Internet as páginas que estão nos

 servidores internos?

 Para solucionar este caso, você pode simplesmenteutilizar o poderoso mod_rewrite para pegar todo umendereço da rede Interna e colocar disponível no seu

 servidor Internet transparentemente para o usuário. No

 servidor externo, você pode colocar as seguintes linhasna configuração principal ou dentro de um domíniovirtual (<VirtualHost>):

 RewriteEngine on RewriteCond %{HTTP_HOST}^(www\.)?nomedodominio\.com\.br 

Page 46: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 46/254

 

 RewriteRule (.*) http://192.168.0.1$1 [P]

 Neste exemplo, quando o usuario acessar o domíniovirtual www.nomedodominio.com.br, o Apache

coletará as informações do servidor interno192.168.0.1 e colocará disponível transparentemente para o usuário.

 Mais outros exemplos:

 RewriteEngine on RewriteCond %{HTTP_HOST}^(www\.)?nomedodominio\.com\.br 

 RewriteRule ^/site/(.*) http://192.168.0.2$1 [P]

 Isto faz com que o diretório /site dentro do dominiowww.nomedodominio.com.br seja associado ao

 servidor interno 192.168.0.2.

 E por aí vai. As possibilidades são muitas, e se você souber mexer com expressões regulares e omod_rewrite do Apache, você consegue fazer tudo!

 P: Como posso bloquear outros sites de fazer links

diretos em meus arquivos? R: Geralmente quando você tem um site grande, algunsusuários sem ética começam a copiar tudo e deixar links diretos para os seus arquivos em páginas

 próprias. Para evitar muitos casos disso, pode-se usar o mod_rewrite.

 É só colocar as seguintes linhas dentro da suaconfiguração principal ou de um domínio virtual (<VirtualHost>):

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER}!^http://(www\.)?nomedodominio\.com\.br/.*$ [NC]

Page 47: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 47/254

 

 RewriteRule\.(mid|wav|mp3|zip|avi|rm|ram|swf|mpg|wmv|pdf)$http://www.nomedodominio.com.br/download_negado.

 php [NC,R,L]

 Este exemplo acima fará com que os sites que nãoestão inclusos no dominiowww.nomedodominio.com.br tenham seu acessonegado ao link direto para os arquivos com asextensões: .mid; .wav; .mp3; .zip; .avi; .rm; .ram; .swf;.mpg; .wmv; .pdf. Ou seja, se alguma outra pagina

 fizer um link direto para um arquivo .mp3 do seu servidor por exemplo, ao invés dele pegar o arquivo.mp3, ele cairá na páginahttp://www.nomedodominio.com.br/download_negado.

 php, que poderá conter um aviso de que o download direto foi negado.

 P: Eu tenho muitos domínios virtuais, como posso fazer  para gerar logs separados de cada um?

 R: Se você usa o Apache para apenas alguns sites, você

nunca passará por este problema. Mas em servidoresem que a quantidade de domínios virtuais é muito

 grande, surge a necessidade de você separar os logs deacesso para cada um dos dominios virtuais, com o fimde fazer a análise destes logs e apresentar estatísticas

 para os usuários de cada domínio (O Webalizer fazisso). Mas para cada arquivo de log, o Apache abre um

 processo de escrita, e o sistema tem um certo limite de

 processos, ou seja, o Apache só poderá abrir alguns poucos processos para escrever nos logs.

 Para resolver isso, existe um utilitário chamado split-logfile (que vem junto com o Apache) que separa oslogs de acordo com o domínio virtual. Para fazer 

 funcionar, primeiro retire todos os logs dos seus

Page 48: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 48/254

 

domínios virtuais e adicione apenas as seguintes linhasde log na configuração principal do seu servidor (enão do domínio virtual):

 LogFormat "%v %h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined 

 LogFormat "%v %h %l %u %t \"%r\" %>s %b" common

CustomLog "/var/www/logs/access_log" combined  ErrorLog "/var/www/logs/error_log" 

 As primeiras duas linhas vão criar o formato da linha

de log que o Apache irá escrever. A única diferença para o formato padrão é o acréscimo do %v no início,que indica o domínio virtual usado. As duas ultimaslinhas indicam onde o log vai ser gravado (o de acessoe o de erros do servidor).

 Agora reinicie ou recarrege o seu Apache, e o seuarquivo de log estará sendo escrito de uma formadiferente. Agora vamos separar os logs por domínio

virtual, e para isso é muito simples, é só criar um pequeno script que fará todo o processo:

 /usr/local/bin/separa-logs-apache

#!/bin/bash# # Separa os logscd /var/www/logs/splitted 

 /usr/bin/split-logfile < /var/www/logs/access_log 

# Zera o log principal echo -n > /var/www/logs/access_log 

 Não esqueça de criar antes também o diretório /var/www/logs/splitted. Onde estarão armazenados oslogs separados.

Page 49: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 49/254

 

 Agora é só rodar este script e verificar o conteúdo do /var/www/logs/splitted. Existirá um arquivo .log paracada domínio virtual, sem o nome do domínio virtual (string %v do LogFormat), permitindo que você use

normalmente o arquivo de log (para fazer análises como Webalizer por exemplo).

Dicas - IPTables

 P: Como redireciono o tráfego de toda uma porta paraum servidor meu?

 R: Esta pergunta é muito importante. Suponhamos que

você queira redirecionar o tráfego de envio de e-mailsde toda a sua rede para um servidor de preferência,como por exemplo, um servidor interno que você tenha.

 Assim, ao invés de os usuários da sua rede utilizaremoutro servidor SMTP, serão obrigados a sempre usar o

 servidor SMTP que você escolher. Para isso, necessita- se da seguinte linha no IPTables:

iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 25(Se o seu servidor SMTP for na própria máquina do

 filtro IPTables)

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to 192.168.0.2:25(Caso seu servidor SMTP seja o 192.168.0.2, na porta

25)

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to 256.103.245.3:25(Caso você queira redirecionar para apenas o SMTP do seu provedor, substituindo o

Page 50: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 50/254

 

256.103.245.3 pelo IP do servidor SMTP do seu provedor)

 E por aí vai. Qualquer endereço, seja qualquer for ele,

que o destino seja a porta 25, o filtro irá redicionar aconexão para onde quiser. Assim você pode evitar  problemas de uma migração por exemplo, ou obrigar os usuários da sua rede ou de seu provedor a usarem o

 servidor SMTP especificado. Uma boa! :)

 Lembrando que isso não serve apenas para SMTP, e sim qualquer porta. Este método também é muito usado para deixar o Squid como proxy transparente.

Dicas - ProFTPd

 P: Por que quando dou upload em algum arquivo, ahora não fica igual à hora do sistema do servidor 

 FTP?

 R: Em algumas distribuições do programa ProFTPd,há uma configuração padrão bem chatinha. O padrão

diz que o programa armazene os arquivos com o fusohorário universal (GMT) e não o local. E a não ser quevocê realmente queira que ele faça assim, isso éhorrível! Modifique o /etc/proftpd.conf e adicione adiretriz:TimesGMT off 

 Isso fará com que os arquivos tenham as datas locaiscertinho.

 P: Como utilizar um chroot e acessar diretóriosdisponíevis em vários lugares do sistema?

 R: Para quem conhece o ProFTPd, sabe que pode-seconfigurar um chroot padrão para "trancar" o usuáriodentro de um diretório. Este diertório pode ser o

Page 51: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 51/254

 

diretório HOME do usuário, ou pode ser um diretórioespecificado. O problema deste método é que ao ficar dentro de um chroot como por exemplo:

 /home/usuario, o usuário do FTP não poderá acessar 

nada além deste diretório e seu conteúdo. Pode ser queo usuário precise acessar outros diretórios, e foi aí quechegou a alternativa para o chroot.

O ProFTPd contém uma configuração bem flexível, parecida com a do Apache. Com a diretriz<Directory>, podemos restringir um certo usuário aacessar apenas os diretórios que queremos. Vou usar aqui um exemplo, que pode ser adaptado facilmente.

Suponhamos que eu criei o usuário tobias e seudiretório home será /home/tobias. Dentro destediretório, eu fiz os seguintes links simbólicos:

ln -s /var/www/html /home/tobias/apache-html ln -s /var/log/httpd /home/tobias/apache-logsln -s /etc/httpd/conf /home/tobias/apache-conf 

Como deu para perceber, tenho vários diretórios que

estão localizados em locais totalmente diferentes unsdos outros, e não seria possível "prender" o usuário aodiretório /home/tobias. Criei estes links simbólicos,

 pois eles vão dar o caminho para que o usuárioquando logar, poder entrar nestes diretórios.

Vá no arquivo proftpd.conf (geralmente localizado nodiretório /etc) e certifique-se que não esteja usando aopção DefaultRoot, para não utilizar-se do chroot.

 Agora adicione uma linha assim:include "/etc/proftpd/tobias.conf" 

 Nesta linha eu pedi para o ProFTPd adicionar configurações a partir deste outro arquivo. Você

 poderia colocar o conteúdo deste arquivo no próprio proftpd.conf, mas resolvi adotar este método pois deixa

Page 52: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 52/254

 

as configurações separadas por usuário, não deixandomuito grande e bagunçado o arquivo principal. Agoracrie o arquivo /etc/proftpd/tobias.conf e coloque o

 seguinte conteúdo:

<Directory /home/tobias><Limit ALL> AllowUser tobias

</Limit>

</Directory>

<Directory /var/www/html>

<Limit ALL> AllowUser tobias

</Limit></Directory>

<Directory /var/log/httpd>

<Limit ALL>

 AllowUser tobias</Limit></Directory>

<Directory /etc/httpd/conf><Limit ALL> AllowUser tobias

</Limit>

</Directory>

<Directory /*><Limit ALL> DenyAll 

Page 53: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 53/254

 

</Limit></Directory>

 Estas linhas indicam que o usuário tobias, através do

 FTP, poderá apenas acessar os diretórios /home/tobias(que além de ser seu diretório HOME, contém os links para mandá-lo para outros diretórios no sistema), /var/www/html, /var/log/httpd e /etc/httpd/conf. Todosos outros diretórios serão negados ao usuário.

 Deu para notar como funciona o método né? Não é tãodifícil, é apenas uma idéia para contornar o problemade "segurança máxima" que o chroot oferece.

Dicas - Servidor X

 P: Não consigo iniciar o servidor X, e ganho o seguinteerro: Fatal server error: could not open default font 'fixed'.

 R: Este erro significa que o servidor X não conseguiuuma fonte padrão para usar. Isso pode ter ocorrido por 

dois motivos principais:1. Você não está com o serviço xfs rodando2. Você não instalou o pacote das fontes do X 

O primeiro motivo é o mais comum, e para resolver isso você precisa iniciar o servidor XFS (X Font Server), que atua na porta 7100, servindo as fontes

 para o servidor X. Para iniciar o serviço, tente:

 /etc/rc.d/init.d/xfs start 

Ou o equivalente na sua distribuição. Se você quiser mexer na configuração do xfs, então edite o arquivo:

 /etc/X11/fs/config 

Page 54: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 54/254

 

Caso não seja isso, você vai precisar instalar os pacotes das fontes, que são por exemplo:

 XFree86-base-fonts (ou xfonts-base) XFree86-ISO8859-15-75dpi-fonts XFree86-100dpi-fonts XFree86-75dpi-fonts XFree86-ISO8859-15-100dpi-fonts

 Dependendo claro da sua distribuição, como sempre. No caso as principais fontes são a base e a de 75dpi.

Dicas - Tomcat

 P: Como desabilitar a listagem de diretórios quando nãohá um index?

 R: No diretório de configuração do Tomcat, edite o arquivo'web.xml'. Você pode desabilitar essa característica padrãodo Tomcat no servlet 'default', que já vem pré-configurado.Geralmente as tags do servlet default se encontram no

começo do arquivo. Veja o exemplo:<servlet><servlet-name>default</servlet-name><servlet-

class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

...

</servlet>Um dos parâmetros deste servlet é o listings, e é ele quevocê deve desabilitar. Por padrão, fica como 'true', entãocolocaremos 'false':

<init-param>

Page 55: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 55/254

 

<param-name>listings</param-name><param-value>false</param-value>

</init-param>

 Depois é só salvar o arquivo, reiniciar o Tomcat e ir proabraço!

Dicas - VIM

 P: Como associo um novo tipo de extensão com umnovo syntax highlight?

 R: Quando o Vim carrega o arquivo, ele verifica em suas configurações que tipo de cores de sintaxe ele vaicarregar para cada tipo de extensão. A configuraçãoestá localizada no arquivo filetype.vim, encontrado nodiretório de arquivos de configuração do vim. Estediretório vai depender muito da sua distribuição, e daversão do próprio vim que você estiver utilizando. Umexemplo seria:

 /usr/share/vim/vim61/filetype.vim

 Mas se você não estiver com muito saco para sair  procurando pelo arquivo de diretório em diretório,busque pelo arquivo filetype.vim. Olhando inicialmente

 para ele, parece meio dificil, mas você só vai precisar alterar coisas mínimas. Use o bom senso e veja oexemplo:

(Antes:)

" HTML (.shtml for server side)au BufNewFile,BufRead *.html,*.htm,*.shtml setf html 

(Depois:)" HTML (.shtml for server side)

Page 56: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 56/254

 

au BufNewFile,BufRead *.html,*.htm,*.shtml,*.tpl  setf html 

 Aqui eu adicionei a extensão .tpl (de templates) para

que use as cores de sintaxe do HTML. Agora vamos supor que você queira associar a extensão .sex aoarquivo de sintaxe ecchi.vim:

au BufNewFile,BufRead *.sex setf ecchi

O arquivo ecchi.vim terá todas as especificações decores, e terá que fica no subdiretório syntax/, dentro dodiretório do vim que citei um pouco acima.

 E por último, caso você queira usar um certo tipo de sintaxe durante a execução do Vim, é só utilizar ocomando (por exemplo):

:set syntax=python

Dispositivos no Linux

O que são dispositivos?

Um dispositivo é todo o componente de hardware, e do sistema operacional. Um dispositivo é "algo especial" que é compartilhado com o Kernel, ou seja, umexemplo de dispositivo são as impressoras, CD-ROMs,modems, portas, mouse, HDs, etc. No Linux, osdispositivos físicos são tratados como arquivos. Estesarquivos são um tipo especial no sistema de arquivos e

 se encontram no diretório /dev. Se você der um ls neste

diretório, verá que existe um pouquínho de arquivos(Bota pouquinho nisso :)). Cada arquivo nestediretório corresponderá a um dispositivo de acordocom o seu tipo.

Se você usava DOS/Windows antes, você acessava odrive C:, lembra? No Linux não existe isso! Vai ser um

Page 57: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 57/254

 

dispositivo no lugar... Você vai usar isso o tempo todo, porque você vai mexer com mouse, com impressora, IDE's, SCSI's, etc. Então aqui vai alguns arquivos do /dev e seus respectivos dispositivos:

 /dev/hdXX  Aqui é correspondete as Interfaces IDEs, ou seja, tudoque tiver conectado nos cabos IDEs :) Exemplos,

 podemos citar HD's e CD-ROM's. O xx significa qual  IDE, onde o primeiro x corresponde a qual IDE, e o segundo x (opcional) corresponde a partição. Veja atabela à seguir:

 Dispositivo Descrição /dev/hda IDE Primária Master 

 

 /dev/hda1

 

 Partição 1 da IDE Primária Master 

 

 /dev/hda2

 

 Partição 2 da IDE Primária Master 

 

 /dev/hdb

 

 IDE Primária Slave

 

 /dev/hdb1

 

 Partição 1 da IDE Primária Slave

 

 /dev/hdb2

 

 Partição 2 da IDE Primária Slave

 

 /dev/hdc

 

 IDE Secundária Master 

 

 /dev/hdc1

 

 Partição 1 da IDE Secundária Master 

 

 /dev/hdc2

 

 Partição 2 da IDE Secundária Master 

 

 /dev/hdd 

 

 IDE Secundária Slave

 

 /dev/hdd1

 

 Partição 1 da IDE Secundária Slave

 

 /dev/hdd2

 

 Partição 2 da IDE Secundária Slave

 

... ...

 Perceba aqui que cada hdx vai até os números 2, masnão é apenas até o 2, pode ir mais longe. Dependendode quantas partições tiver o seu HD, pode ser 3, ou 4,ou 9 por exemplo.

 /dev/fdX 

Page 58: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 58/254

 

 Aqui é o dispositivo equivalente ao drive de disquete,onde o x corresponde a qual driver. Caso você tenhaapenas um drive, esse drive vai ser o /dev/fd0. Se tiver 2 drives, o primeiro será /dev/fd0 e o segundo /dev/fd1,

e por aí vai. /dev/ttyX 

Quando você se loga no seu Linux, você acaba de selogar nesse terminal. Ou seja, um terminal serve paravoc6e se logar e usar uma shell (interpretador decomandos). O /dev/ttyX corresponde a cada terminal,onde X vai ser substituído pelo número do terminal (são dezenas se quiser). Pode ser /dev/tty1 (Terminal 1), /dev/tty3 (Terminal 3), /dev/tty8 (Terminal 8) e por aí vai... até você enjoar :)

Você também pode se deparar com /dev/ttypX. Nestecaso é para terminais acessados por telnet/ssh.

 /dev/ttySX 

 Portas seriais! Na versão 2.2.x do kerne, estas portas seriais correspondem ao modem, ao mouse, e outras

coisas ligadas nas 'COMs'. Veja a tabela: Dispositivo Descrição

 /dev/ttyS0COM1 (Porta

 serial 1)

 /dev/ttyS1COM2 (Porta

 serial 2)

 /dev/ttyS2COM3 (Porta

 serial 3) /dev/ttyS3

COM4 (Porta serial 4)

 Agora se você usa um kernel velho de versão anterior a2.2.x, ao invés de ser /dev/ttySX, vai ser /dev/cuaX. Ou

 seja, você terá os equivalentes como /dev/cua0,

Page 59: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 59/254

 

 /dev/cua1, /dev/cua2 e /dev/cua3. E estes dispositivos /dev/cuaX são usados para determinar os modems.

 /dev/lpX 

Corresponde a porta da impressora ou porta de um serviço paralelo. X é o número correspondente a porta... 0 = LPT1 por exemplo.

 /dev/plipX 

 Esse dispositivo corresponde a uma conexão de cabo paralelo. O X será o número correspondente a porta,como no exemplo anterior.

 /dev/console

 Este é um dispositivo especial, simbolizando osconsoles (terminais não-gráficos).

 /dev/null 

 Este é um dispositivo nulo, ou seja, tudo que vocêmandar ou se referir a ele, será nulamente mandado

 para o inferno :)

Outros

Os dispositivos são muitos e listar todos eles aqui não seria tão legal assim. Você pode explorar o diretório /dev procurando saber sobre eles. Se você por acasoapagou um dispositivo e quer saber como criá-lo,utilize o script /dev/MAKEDEV. Basicamente você usaeste script assim:

# /dev/MAKEDEV ttyS3

 Isto irá criar o dispositivo ttyS3. Para maisinformações sobre a criação de dispositivos, utilize amanpage do MAKEDEV ou do mknod. Na verdade o

 /dev/MAKEDEV é apenas um script para intermediar ousuário e o comando mknod... O mknod é o que faz otrabalho mais árduo :)

Page 60: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 60/254

 

 Montando os dispositivos

 Primeiro eu espero que você tenha lido sobre o que éum dispositivo. Agora vamos saber como se usar umdispositivo, ou seja, um HD, um disquete, um CD-

 ROM, etc. O comando que usaremos aqui é o mount,que pelo próprio nome, podemos ver que ele serve para'montar' dispositivos em um certo lugar.

Vamos falar primeiro sobre como montar o disco flexível. Para fazê-lo é o seguinte. O Linux trata todosos seus dispositivos como arquivos device, estesarquivos estão localizados no diretório "/dev". Para ocaso do disco flexível, o Linux trata como /dev/fdx,onde x é o número do dispostivo: o primeiro será fd0, o

 segundo será fd1, e assim por diante. Aqui no caso,estamos com um driver de disquete, que é o /dev/fd0.

 Para montar o disco flexível então, colocamos odisquete, e executamos o seguinte comando:

# mount /dev/fd0 /diretorio_onde_o_disco_vai_ser_montado

O diretório_onde_o_disco_vai_ser_montado tem queexistir, e tem que estar totalmente vazio. Este diretório,que você pode nomear como quiser funciona como sevocê estivesse no disquete. Agora se você quer montar outro disquete, você terá que desmontar o disquetemontado primeiro, para depois poder montar outro.

 Para o desmonte, usa-se o comando "umount":

# umount /dev/fd0 (ou)

# umount /diretorio_onde_o_disco_esta_montadoVocê pode também fazer o seguinte, criar um shell 

 script, que se chama, por exemplo de 'diskon' (Paraativar) e 'diskoff' (Para desativar). Então para melhor utilização, coloque este arquivo em um diretório

Page 61: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 61/254

 

 PATH, ou então coloque o PATH no diretório ondevocê quiser colocar os scripts.

 Agora vamos montar uma partição. É o mesmoesquema de montar o disco flexível, só que o arquivodo dispositivo é diferente. Para partições em um HD

 IDE, os nomes dos dispositivos são /dev/hdxx, onde o primeiro x é a letra correspondente ao HD (na ordema, b, c, d, e por aí vai), e o segundo x é correspondenteao número da partição. Para partições em um HDSCSI, os nomes dos dispositivos são /dev/sdxx, onde o

 primeiro x é a letra correspondente ao HD (na ordema, b, c, d, e por aí vai), e o segundo x é correspondente

ao número da partição. Se eu quero montar a partição /dev/hda2 (HD número 1, partição número 2), eu faço:

# mount /dev/hda2 /diretorio

 E para desmontar, usa-se o comando umount:

# umount /dev/hda2 (ou)# umount /diretorio

 Existe também no comando mount, o parâmetro -t, quevai indicar que tipo de sistema de arquivos a partiçãousa (FAT32, FAT16, minix, ext2, UMSDOS, etc). Sevocê não colocar esta opção, o comando força umacompatibilidade para a montagem. O recomendado écolocar esta opção, pois às vezes o mount nãoconsegue detectar qual o sistema de arquivos, e geraum erro. Um exemplo do uso da opção -t é:

# mount -t vfat /dev/hda2 /diretorio Este comando montará uma partição FAT32 em /diretorio. Como eu disse anteriormente, utilizar-se de shell scripts facilita seu trabalho. Agora vamos montar um CD-ROM. O mesmo esquema, só que você deve

 saber qual o dispositivo referente ao seu CD-ROM, que

Page 62: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 62/254

 

tem como nome /dev/hdx, onde x é a letracorrespondente à posição do CD-ROM na IDE. Paramontar um exemplo, façamos:

# mount /dev/cdrom /mnt/cdrom

 Para desmontar, a mesma coisa de sempre:

# umount /dev/cdrom (ou)# umount /mnt/cdrom

 Nota: Se você der uma olhada no arquivo /dev/cdrom,você verá que ele não é um dispositivo, e sim um link 

 simbólico para o dispositivo correspondente ao CD-

 ROM (/dev/hdx). Isso quer dizer que você pode substituir o /dev/cdrom pelo /dev/hdx tranqüilamente,assim como pode também modificar o link simbólico

 para apontar para outro dispositivo.

 Existe outro método de montagem muito mais práticodo que os citados acima... É uma pré-configuração demontagem no arquivo /etc/fstab. Este arquivo contémas informações de montagem para os dispositivos e

 seus diretórios. Por exemplo, quando a suadistribuição inicia, ela procura no /etc/fstab para saber onde está a raiz do seu sistema, e vai montar no /.Também contém informações de montagem para osdiretórios especiais como o /proc, e até mesmo para ouso da memória SWAP. Vejamos aqui o meu arquivo

 /etc/fstab como exemplo para estudarmos ele:

$ cat /etc/fstab

 /dev/hda2 swap swap defaults 0 0 /dev/hda5 / reiserfs defaults 0 0 /dev/hda1 /boot ext2 defaults 1 1 /dev/fd0 /mnt/floppy auto user,noauto 00

 /dev/cdrom /mnt/cdrom iso9660

Page 63: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 63/254

 

user,noauto,ro 0 0none /proc proc defaults 0 0none /dev/pts devpts gid=5,mode=6200 0

Viu este exemplo? Por exemplo, peguemos a segundalinha. Esta segunda linha é a minha raiz, que está na

 partição /dev/hda5, será montada automaticamente('defaults') no diretório "/" durante a inicialização. E esta partição tem o sistema de arquivos ReiserFS. Na

 primeira temos a montagem da memória SWAP... E vejamos a linha que começa com /dev/cdrom. Aqui

 facilita as coisas porque os parâmetros'user,noauto,ro' significam que qualquer usuário podemontar o CD-ROM (user), não é montadoautomaticamente na inicialização (noauto) e émontado como somente leitura. Qual a diferença? Ocomando mount só pode ser usado pelo root, mas comessa opção no /etc/fstab, um usuário comum podemontar o cd-rom apenas com o comando "mount 

 /mnt/cdrom", ou "mount /dev/cdrom". A sintaxe deste

arquivo não é muito difícil, e vendo este exemplo aqui,você pode muito bem criar suas próprias configurações

 para dar mais praticidade no seu uso com osdispositivos no Linux! Mexa à vontade, mas nunca naslinhas que já vêm, pois se não o Linux pode não achar 

 sua partição e poderá não conseguir iniciar o sistema,e você terá de bootar com um bootdisk para consertar isto... Então mexa, mas pense duas vezes antes de

mexer :)

Comentários das distribuições Linux

 Red Hat 

Page 64: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 64/254

 

 A empresa americana Red Hat, caracterizada com uma pessoa "sombra" com um chapéu vermelho, foi umadas pioneiras no tratamento sério do Linux. Desde oinício ela é uma das principais distribuições mundiais,

e tem influências em todos os lugares. Sua equipe nãoapenas ajuda na distribuição em si, mas também no

 próprio Linux (como é o caso do kernel-hacker AlanCox). Várias e várias distribuições começaram sebaseando nesta distribuição, o que a faz uma boa base

 para todos.

Criadora do RPM, o gerenciador de pacotes maisusado atualmente no Linux, a Red Hat atualmente têm

uma distribuição mais voltada para o mercado de servidores. Mas isso não quer dizer que ela não sejaboa também para uso doméstico. Você encontra nelauma facilidade de manuseio, pacotes atualizados emuita coisa que fazem muita gente fica apegada à estadistribuição.

http://www.redhat.com 

Slackware

 Podemos dizer que o Slackware é uma das mais famosas distribuições para Linux. O seu criador, Patrick Volkerding, lançou a primeira versão dadistribuição em Abril de 1992, e desde então segueuma filosofia bem rígida: manter a distribuição o mais

 parecido com o UNIX possível. As prioridades dadistribuição são: estabilidade e simplicidade, e é issoque a torna uma das mais populares distribuiçõesdisponíveis.O Slackware tem uma fama de ser difícil de usar, masisto não é verdade. Ele possui uma interface deinstalação bem amigável, além de uma série de scriptsque ajudam na instalação e desinstalação de pacotes.

Page 65: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 65/254

 

O problema é que muitos pensam que têm de se pegar as fontes dos programas, compilá-los, instalá-los paradepois usar no Slackware, mas isso não é verdade! O

 sistema padrão de pacotes do Slackware é o .tgz (que

ao contrário do que muitos pensam, não é igual ao.tar.gz, pois contém algumas informações adicionais

 sobre a instalação), e as atuais versões do Slackwaretambém vêem com o gerenciador de pacotes RPM,

 podendo assim instalar os aplicativos já compiladosem ambos os formatos.

O Slackware pode ser uma alternativa tanto parausuários iniciantes como os já experientes. As opções

de instalação permitem que o usuário possa instalar em sua máquina uma distribuição que tem comocaracterísticas uma grande variedade de desktops(gerenciadores de janelas como o Gnome, KDE,Window Maker, Enlightenment, fvwm), ou como um

 poderoso servidor com todos os recursos necessários(utilitários de rede, servidores http, noticias, e-mail,

 ftp, etc). Os pacotes sempre estão em atualização,

mantidos por uma versão especial da distribuição: o slackware-current. Isto desfaz o mito de que o slackware não é uma distribuição "dinâmica". Todosaqueles aplicativos estão disponíveis, e são atualizadosregularmente.

 Então o único potencial que o Slackware ainda nãotem é um gerenciamento de pacotes que permita umacheckagem de dependências... Fora isso, ela atende

todas as boas exigências facilmente! Você poderá obter mais informações e fazer o download destadistribuição através da página oficial que fica no

 seguinte endereço:

http://www.slackware.com 

 Debian

Page 66: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 66/254

 

Talvez a filosofia do Debian seja o ponto que maischama atenção nesta popular distribuição! No início,antes do Linux ser lançado oficialmente por LinusTorvalds, o projeto GNU já tinha várias ferramentas

Unix-like disponíveis. O que faltava era um kernel, eentão quando Linus Torvalds lançou o seu kernel 

 Linux, resolveram então criar o GNU/Linux. Não, nãoé outro sistema diferente, é só um nome parachamarem as distribuições que usam o kernel Linux, eque têm ferramentas feitas pelo projeto GNU. Mas oque isso tudo tem haver com o Debian? O DebianGNU/Linux é uma distribuição que segue toda esta

 filosofia do projeto GNU, oficialmente contendoapenas pacotes com programas de código-fonte livre, feito por voluntários espalhados pelo mundo, e sem finslucrativos alguns.

 Apesar de atualmente o Debian ser usado com o kernel  Linux, ele se entitula como um sistema operacional que pode usar não apenas o kernel do Linux em si, masoutros kernels como o Hurd (projeto de kernel livre

 feito fora do escopo do Linux). Isso o faz o "SistemaOperacional Universal", pois o principal objetivo delesé fazer um sistema que rode em todos os lugares e comvários kernels. E claro, isso tudo na filosofia GNU.

O Debian tem uma quantidade incrível de pacotes pre-compilados para vários tipos de arquitetura. Ele contacom mais de 3950 pacotes, que facilitam e muito ainstalação e gerenciamento de programas no sistema.

 Além do mais, ele é o pai do apt, a ferramenta deatualização de pacotes automática, feita pela internet. Mas há quem diga que o Debian ainda tem muito o quemelhorar: Uma instalação complicada e ideologismodemais são alguns pontos fracos que muita gente

Page 67: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 67/254

 

encontra nesta distribuição. Cabe à você ver se é adistribuição certa ou não.

http://www.debian.org  

ConectivaUma empresa de serviços ISP, que trabalhava com Linux, resolveu desafiar a rotina e começou a criar uma distribuição baseada na RedHat. Esta empresabrasileira criou (até onde eu saiba) a primeiradistribuição brasileira, o Conectiva Red Hat Linux. A

 primeira versão se chamou Parolin, e não continhamuita coisa além de traduções da distribuição Red Hat.

 Porém, seu desenvolvimento foi crescendo eresolveram partir para um rumo próprio, fazendo suas próprias alterações e ideologias na distribuição emuma rota diferente da empresa americana Red Hat.

 Então surgiu o que atualmente conhecemos deConectiva Linux.

 A partir do ano de 1999, o Linux começou a explodir de popularidade no Brasil. E o Conectiva Linux, que já

estava na sua versão 3.0, ficou muito popular entre osusuários brasileiros, e foi isso que fez com que aempresa conseguisse investir mais ainda nadistribuição. O Conectiva Linux atualmente é uma boadistribuição brasileira, que provou ser tão boa quantoas estrangeiras. Há quem aponte seus pontos fortes e

 fracos...

 Apesar de ter tomado um rumo diferente ao da Red 

 Hat, sua distribuição ainda se baseia nos conceitosbásicos da americana, assim como muitas outrasbaseadas na Red Hat. Mas muita coisa boa foi feita

 para melhorar a distribuição, como a criação do apt (ferramenta de atualização de pacotes) para pacotes

 RPM, o GNU parted (particionador), traduções

Page 68: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 68/254

 

diversas para o português, entre outras coisas. Oobjetivo da distribuição é tornar fácil as coisas para osusuários novos, sem comprometer muito o andamentodo sistema.

http://www.conectiva.com.br  SuSE 

 A SuSE (não, não é a amiga da Barbie!) é umaempresa alemã que é uma das maiores influências do

 Linux no mundo, junto com a Red Hat. No início, aSuSE baseava sua distribuição no Slackware, mas logodepois tomou rumo diferente, começando a

implementar os pacotes com o RPM, e fazendomudanças na forma de organização do sistema.Criaram também uma ferramenta de configuração do

 sistema chamada YaST, que facilita e muito mexer nasconfigurações da distribuição. Atualmente o SuSE éutilizado por muitas máquinas na Europa, incluindoinstituições educacionais e no governo. Sem dúvida éuma distribuição notável, porém não muito usada no

 Brasil.

http://www.suse.de/br/  

 Mandrake

 Esta empresa francesa resolveu apostar no Linux comoum sistema fácil para todos! E esse é o objetivo

 principal da empresa, criar uma distribuição fácil paratodos os tipos de pessoas usarem. Baseada naamericana Red Hat, o Mandrake vêm com vários

 programas de configuração fáceis de ser utilizados ebem úteis. Durante o crescimento brusco do Linuxmundialmente, o Mandrake adquiriu muitos fãs e uma

 popularidade incrível principalmente na América do Norte, através de sua interface fácil e dinamismo.

http://www.mandrake.com 

Page 69: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 69/254

 

 LRP (Linux Router Project)

 Já pensou no dinheiro que você terá de gastar paracomprar um roteador? Se você precisar de umroteador, vai precisar de dinheiro também. O Linux

 Router Project (Projeto Linux Roteador) é uma mini-distribuição que cabe em apenas um disquete, e quecontém os utilitários de rede básicos para deixar umcomputador com duas placas de rede funcionandocomo um roteador. A configuração mínima para vocêrodar o roteador é um simples 486 com 16MB de RAM,e como só vai usar um disquete, nem precisa de HD! O

 site oficial para esta mini-distribuição é:

http://www.linuxrouter.org   LFS (Linux From Scratch)

O Linux From Scratch é um projeto interessantíssimo para quem quer ver àfundo como funciona a criação deuma distribuição Linux. O autor não estava satisfeitocom nenhuma distribuição que tinha usado, e resolveucriar uma pra ele mesmo. É aí que entra o espírito: ele

 fez um tutorial passo-a-passo de como ele montou adistribuição dele, e compartilhou com todos. Assim,com estas instruções, qualquer um pode montar sua

 própria distribuição. O nome Linux From Scratch significa "Linux do Zero" em inglês, e é muito bom! O site oficial para esta "distribuição" fica no seguinteendereço:

http://www.linuxfromscratch.org  

 Zipslack O zipslack é um mini-Slackware, feito para rodar numa

 partição DOS/Windows. Através desta versão especial,é possível qualquer um pegar na internet um arquivoem formato .zip, descompactá-lo no diretório c:\linux eusar o linux à vontade! Para realizar este feito, usa-se

Page 70: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 70/254

 

o sistema de arquivos UMSDOS, e através do utilitário"loadlin" (substitui o LILO), o kernel é carregado. Oarquivo do zipslack vem bem "enxuto", mas você poderechear simplesmente pegando os pacotes .tgz e

instalando-os com o comando "installpkg pacote.tgz", ecom isso você pode instalar o sistema X, junto com osGerenciadores de janelas, e também servidores como o

 Apache. Por que o nome zipslack? Esta mini-distribuição foi feita para se rodar em um disco de

 zipdrive, e tem um limite de 100MB. Claro que você pode optar em não utilizar um zipdrive, e assim poder usar o espaço que quiser, mas é um recurso muito bom

 para alguns utilitários básicos que você pode carregar  para todo lugar junto com o disquete e drive do zipdrive. O site oficial dele é o mesmo que o doSlackware, no seguinte endereço:

http://www.slackware.com 

Criando um file server "transparente" no Linux

Quem acessa IRC deve saber o que é um file server.Um file server é um "programa" de IRC que fica em umcerto canal, servindo arquivos livremente para asoutras pessoas. No Windows isso já é uma realidadebem comum, mas no Linux é algo um pouco aindaoculto. Este tutorial ensina à qualquer usuário quetenha uma conta shell em um sistema Linux à montar 

 seu file server, e não necessita nem de interface gráfica.

 Para fazer isso, utilizarei o seguinte:

•  screen - http://www.gnu.org/software/screen/ - Um programinha muito bom que serve como um"gerenciador de janelas" para o modo texto do Linux.

 As distibuições geralmente vêm com ele, então

Page 71: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 71/254

 

 possivelmente não será necessário baixar e compilar o programa, pois ou você já tem instalado, ou deve vir um pacote pronto na sua distribuição. Verifique se o

 programa está instalado com o comando: "which

 screen". Se aparecer o cominho do executável, entãoele existe, se não aparecer nada, tem que ser instalado:)•  X-Chat - http://www.xchat.org - O X-Chat é umcliente de IRC muito bom que inicialmente foi feito praGTK+ (gráfico). Mas como o autor fez o programa de

 forma modular, ele criou como demonstração um pequeno front-end em modo texto. O front-end não é

muito bom, mas serve muito bem para o que queremosno momento. Baixe o código-fonte do X-Chat estável mais novo, pois iremos compilar apenas o modo-texto eusar em conjunto com o programa screen.• Obsidian File Server -http://tlm.conectiva.com.br/fserver_linux/obsidian-0.9.1-pre3.pl - Este é um script feito em perl queintroduz um file server muito bom no X-Chat.

Compilando o X-Chat  Primeiro de tudo vamos compilar o front-end texto do X-Chat. Supondo que você já tenha baixado o código- fonte do programa, vamos aos passos da compilação:

 

$ tar jpfx xchat-1.8.11.tar.bz2$ cd xchat-1.8.11$ ./configure --disable-gtkfe --disable-glib --disable-

 gnome \ --disable-zvt --disable-gdk-pixbuf --disable- xlib \

--disable-glibtest --disable-gtktest 

[...configurando a compilação...]

Page 72: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 72/254

 

  xchat 1.8.11

 Building GTK+ Interface .... : no

 Building TEXT Interface .... : yes

 gnome-libs .......... : no gnome panel ......... : no perl ................ : yes gdk-pixbuf........... : no python .............. : nommx tinting ......... : yes

 zvt shell tab ....... : no nls/gettext ......... : yes plugin interface .... : yes glib replace ........ : yeslink with socks5 .... : no translation tables .. : yesopenssl support ..... : no japanese conversion . : noipv6 support ........ : no hebrew support ...... : no

$ make

[...compilando...]$ cd src/fe-text $ strip -s xchat-text 

 Pronto. Se tudo ocorreu bem, o X-Chat foi compiladocom êxito. Agora vamos criar um diretório que vai ser o "home" do file server. Eu procuro sempre deixar o

 file server com um usuário especial para ele. Então

vou criar o usuário fserver, com o seu diretório home sendo o /var/fserver, pois aqui a partição que tem maisespaço é o /var. Não se esqueça deste diretório home,

 pois usaremos em outros lugares neste tutorial.

# adduser fserver -d /var/fserver # passwd fserver 

Page 73: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 73/254

 

Changing password for user fserver. New password: Retype new password: passwd: all authentication tokens updated successfully.

 Agora logue-se como este usuário, ou execute ocomando "su - fserver", que te transforma no usuário

 fserver. Vamos criar então a estrutura de diretórios do file server:

$ pwd  /var/fserver $ mkdir bin .xchat incoming fserver 

 Agora vamos colocar os arquivos necessários para o funcionamento do file server. Antes de mais nada, você precisará colocar o programa xchat-text dentro dodiretório bin do usuário fserver. Vá no diretório ondevocê descompactou e compilou o código-fonte do xchat e copie:

$ cd src/fe-text $ cp xchat-text /var/fserver/bin

 Agora execute o xchat-text para ele criar os arquivosde configuração padrões do x-chat. Depois aperteCTRL+C para sair do mesmo. Vamos então criar o

 script que irá iniciar o file server. Crie um arquivochamado "/var/fserver/bin/fserver" e coloque o

 seguinte conteúdo:

#!/bin/bash

# case $1 in

 start) screen -A -m -d -S fserver /var/fserver/bin/xchat-

text ;;

Page 74: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 74/254

 

stop) screen -r fserver ;;

esac

 Depois transforme este arquivo em executável:

$ chmod +x /var/fserver/bin/fserver 

 Este script quando executado, chamará o programa screen para rodar em background o programa xchat-text. Mas se ele está em background, como diremos àele para conectar a um certo servidor e entrar em umcerto canal? Para isso faremos um script em perl. Crie

o arquivo "/var/fserver/.xchat/script.pl" com o seguinteconteúdo:

#!/usr/bin/perl -w

# Função que entra identifica o nick, liga o file server eentra nos canais

 sub entrarcanais {  IRC::command("/nickserv identify minhasenha"); IRC::command("/fs on"); IRC::command("/join #canal");

 }

# Inicialmente conectar no servidor e depois de 1minuto (6000 milisegundos),# executar a função acima "entrarcanais" 

 IRC::command("/server irc.brasnet.org");

 IRC::add_timeout_handler(60000,"entrarcanais");

# Função que de 5 em 5 minutos atualiza o file server  sub flushfiles { 

 IRC::command("/fs on"); IRC::command("/fs update_files");

Page 75: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 75/254

 

IRC::add_timeout_handler(300000,"flushfiles"); }

# Ativa o timer que executa a fução flushfiles em 5

minutos IRC::add_timeout_handler(300000,"flushfiles");

 Pronto, agora quando o xchat-text for iniciado, eleautomaticamente vai carregar este script em perl.

 Agora falta configuramos melhor o xchat. Por padrão,a interface texto não cria um xchat.conf muito decente.

 Então sobrescreva o arquivo"/var/fserver/.xchat/xchat.conf" colocando o seguinteconteúdo:

auto_indent = 1auto_resume = 1auto_unmark_away = 0autodccchat = 1autodccsend = 1autodialog = 1

autoopendccchatwindow = 1autoopendccrecvwindow = 1autoopendccsendwindow = 1autoreconnect = 1autoreconnectonfail = 1autorejoin = 1autosave = 1autosaveurl = 0awayreason = I'm busy

background_dialog_pic =background_pic =ban_type = 0beep_msg = 1beep_chans = 0bluestring =

Page 76: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 76/254

 

chanmodebuttons = 1channelbox = 0cmdchar = / colorednicks = 0

ctcp_number_limit = 5ctcp_time_limit = 30dcc_blocksize = 4096 dcc_ip =dcc_permissions = 420dcc_remove = 0dcc_send_fillspaces = 1dcc_stall_timeout = 60

dcc_timeout = 180dccdir = /var/fserver/incoming dccwithnick = 0dialog_height = 100dialog_indent_nicks = 1dialog_indent_pixels = 80dialog_show_separator = 1dialog_tint = 1

dialog_tint_blue = 151dialog_tint_green = 151dialog_tint_red = 151dialog_transparent = 1dialog_width = 300dialog_wordwrap = 1dnsprogram = host doubleclickuser = /QUOTE WHOIS %s

 fastdccsend = 1 filterbeep = 0 first_dcc_send_port = 0 font_dialog_normal = -misc-fixed-medium-r- semicondensed-*-13-*-*-*-c-*-iso8859-15 font_normal = -misc-fixed-medium-r-semicondensed-*-13-*-*-*-c-*-iso8859-1

Page 77: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 77/254

 

 font_shell = fudgeservernotice = 0hide_version = 0hidemenu = 0

hideuserlist = 0hilight_notify = 0hilightnick = 1host_in_userlist = 0hostname =indent_nicks = 1indent_pixels = 80inputgad_superfocus = 1

invisible = 0ip_from_server = 1lagometer = 2last_dcc_send_port = 0limitedtabhighlight = 1logging = 0logmask = %s,%c.xchatlog mail_check = 0

mainwindow_height = 477 mainwindow_left = 121mainwindow_save = 1mainwindow_top = 178mainwindow_width = 714max_auto_indent = 256 max_lines = 3000msg_number_limit = 5msg_time_limit = 30newtabs_to_front = 1nick_suffix = :nickcompletion = 1nickgad = 1nickname1 = Nick1DoFserver nickname2 = Nick2DoFserver 

Page 78: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 78/254

 

nickname3 = Nick3DoFserver notices_tabs = 0notify_timeout = 15nu_color = 4

old_nickcompletion = 0 paned_userlist = 0 partreason = Client Exiting  percascii = 0 perccolor = 1 perlwarnings = 0 persist_chans = 1 pingtimeout = 0

 priv_msg_tabs = 1 proxy_host = proxy_port = 0 proxy_type = 0quitreason = Client Exiting raw_modes = 0realname = Campo Nomereconnect_delay = 10

 servernotice = 1 show_away_message = 1 show_away_once = 1 show_invite_in_front_session = 0 show_notify_in_front_session = 0 show_separator = 1 skipmotd = 0 skipserverlist = 1 stamp_format = [%H:%M:%S] stripcolor = 0 style_inputbox = 1 style_namelistgad = 0tabchannels = 1tabs_position = 0thin_separator = 1

Page 79: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 79/254

 

throttle = 1throttlemeter = 2timestamp = 0timestamp_logs = 0

timestamp_log_format = %b %d %H:%M:%S tint = 1tint_blue = 151tint_green = 151tint_red = 151topicbar = 1transparent = 1trans_file =

treeview = 0truncchans = 0use_fontset = 1use_server_tab = 0use_trans = 0userhost = 1userlist_sort = 0userlist_icons = 1

userlistbuttons = 1username = fserver wallops = 1whois_on_notifyonline = 0windows_as_tabs = 1wordwrap = 1

Sim, este é um arquivo de configuração para o X-Chat modo gráfico, mas as opções que tem a mais não vão

influenciar em nada, e tudo que queremos vai estar aí.Você só precisa modificar as linhas que estão emnegrito, que são os campos de Nick, Nome Real,Username, entre outros. Veja que também a linha"dccdir = /var/fserver/incoming" dirá que todo arquivoque o file server pegar vai para este diretório. Nesta

Page 80: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 80/254

 

configuração o DCC Get está habilitado para pegar automaticamente os arquivos, mas se você quiser desabilitar isso, mude no arquivo acima o valor davariável "autodccsend" para 0.

 Agora só falta uma coisa: O File Server! Mas é bem simples. Coloque o arquivo "obsidian-0.9.1-pre3.pl" que você baixou no diretório "/var/fserver/.xchat". O

 X-Chat irá carregar este script automaticamente nainicialização. E parar configurar, crie um arquivochamado "/var/fserver/.xchat/obsidian.conf" com o

 seguinte conteúdo:

debug:0ctcptrigger:1restorequeues:1autoon:1notice_as_msg:0

 short_notice:0raw_chnl_msg:1raw_wlcm_msg:0open_tab_early:1

close_tab_auto:0case_cmd:0case_file:0

 fs_sensitive:0count_sends:1

 send_small_now:1ads_when_full:1

 priority_op:1

 priority_voice:1max_users:10max_sends:3max_queues:20

 slots_big:1 slots_med:4

Page 81: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 81/254

 

 slots_small:10 size_big:30000000 size_med:1000000max_fails:5

min_speed:0idle_time:180trigger:!boboalegre

 serve_no_notify:#testchnl2 serve_hidden:#testchnl3notify_to_voice:#testchnl2notify_channels:#canal notify_timeout:0

root_dir:/var/fserver/fserver note:Aqui estão alguns arquivos!! XUGUEM!auto_backup:60logo:^C14[^C13Oßsidian FServe^C14]^C c1:^C13c2:^C14c3:^C13c4:^C15

 As linhas em negrito são as principais que você temque mudar. Vou explicá-las:

•  priority_op:1 - Dá prioridade para os OPs no file server, ou seja, eles entram na frente de todo mundo na fila dos queues! :)•  priority_voice:1 - Mesma coisa do item acima, sóque para os que tem voice.•

max_users:10 - Quantos usuários podem dar umaolhada no file server ao mesmo tempo.• max_sends:5 - Quantos envios simultâneos o file

 server pode fazer (1 por pessoa).• max_queues:50 - Quantos queues (ou slots) podem

 ser ocupados no file server.

Page 82: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 82/254

 

•  slots_big:1 - Quantos slots uma pessoa pode ter comarquivos grandes.•  slots_med:4 - Quantos slots uma pessoa pode ter com arquivos médios.•  slots_small:10 - Quantos slots uma pessoa pode ter com arquivos pequenos.•  size_big:30000000 - Qual o tamanho em bytes paraum arquivo ser considerado grande (Aqui: 30MB•  size_med:1000000 - Qual o tamanho em bytes paraum arquivo ser considerado médio (Aqui: 1MB)• max_fails:5 - Quantas falhas a transfer6encia podeter até ser cancelado o slot/queue.•

trigger:!boboalegre - Qual o trigger do file server.• notify_channels:#canal - Quais canais notificar,

 separados por virgula• notify_timeout:0 - De quanto em quanto tempoanunciar o file server? (0 = Modo em Silêncio)• root_dir:/var/fserver/fserver - Diretório onde ficamos arquivos do file server • note:Aqui estão alguns arquivos!! XUGUEM! -

 Mensagem do file server 

Você pode mexer nas outras opções também, mas eunão recomendo. Vá testando os valores até você ver que ficou perfeito para você e seu file server. Agora é

 só rodar o file server com o seguinte comando:

$ /var/fserver/bin/fserver start 

 E esperar um pouco para que seu file server entre no

canal já funcionando. Caso você queira mexer no file server interativamente, você pode a qualquer momentochegar no prompt de comando e digitar:

$ screen -r fserver 

Page 83: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 83/254

 

 Isso irá restaurar a janela do file server, e você poderáutilizar ele como quiser. Inclusive mudar asconfigurações em tempo real com o comando "/fs".

 Para poder voltar ao prompt de comando sem ter que

 sair do xchat-text, utilize a seqüência de teclasCTRL+A D (CTRL+A, solta e aperta D logo em

 seguida).

 Pronto! Foi tão difícil assim? Esse método é ótimo para as pessoas que tem várias máquinas rodando Linux por aí, principalmente porque você podecontrolar os file servers via SSH, sem a necessidade deinterface gráfica nenhuma. Mas isso tudo funciona com

interface gráfica também, é só colocar o script perl doobsidian e o arquivo de configuração no diretório.xchat do seu home, que ao xchat gráfico iniciar, eletambém irá carregar o script com as configurações.

 Boa sorte!

Sistema de arquivos proc

O sistema de arquivos /proc é um diretório especial 

onde fica todas as informações de depuração dokernel. Também se encontram algumas configuraçõesque habilitam e desabilitam o suporte à alguma coisano kernel. É muito útil para o diagnóstico do seuhardware. Vou aqui comentar arquivos do /proc paravocê 'depurar' o seu hardware:

•     /proc/devices Aqui estão os dispositivos encontrados no seu sistema,

incluindo modem, placa de som, placa de rede, teclado,impressora, etc.•     /proc/interrupts

 Neste arquivo estão as informações das IRQs dosdispositivos.

Page 84: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 84/254

 

•     /proc/ioports Informações sobre os endereços das portas I/O(Input/Output).•     /proc/pci

 Dispositivos PCI instalados no sistema. O comando'lspci' também serve para mostrar esse arquivo.•     /proc/cpuinfo

 Aqui você pode ver as características do seu processador e máquina.•    /proc/filesystemsSistemas de arquivos suportados pelo kernel.•     /proc/devices

 Dispositivos gerais instalados.•     /proc/meminfo

 Informações da memória usada. O comando 'free' também serve para mostrar este arquivo.•     /proc/modules

 Módulos carregados no kernel. O comando 'lsmod' também serve para mostrar este arquivo.•     /proc/mounts

 Partições montadas. O comando 'mount' sem parâmetro nenhum mostra esse arquivo.•     /proc/partitions

 Partições existentes e que o Linux reconheceu. •     /proc/versionVersão do kernel. O comando 'uname' também serve

 para mostrar este arquivo.

 Explore este diretório! Só não dê um cat no arquivo

 /proc/kcore, por favor! :) kcore = kernel core.

Uso e Segurança com o .htaccess no Apache

1. Introdução

Page 85: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 85/254

 

Oi pessoal, neste tutorial vou tocar em alguns métodosdee segurança com os arquivos .htaccess do Apache,

 para proteger diretórios na Web, criar meios de logincontrolado, e outras utilidades deeste arquivo.

O .htaccess é um arquivo especial para o Apache.Quando um usuário está navegando por alguma

 página do seu servidor Apache, para todo diretório queele tentar acessar (e se o servidor estiver configurado

 para isso), o Apache procura pelo tal do .htaccess e seencontrar, verifica alguma restrição ou liberação parao usuário. Com isso podemos fazer duas coisas básicasem relação à segurança: Restringir acesso aos

arquivos e diretórios do servidor Web através de umusuário e senha, ou então pelo IP/Hostname de quemestá acessando. Trataremos dos dois assuntos aquineste tutorial.

2. Configurando o Apache

 Antes de mais nada, você precisará se certificar que o Apache está configurado para aceitar os arquivos.htaccess como arquivos especiais. Para configurar,você precisará editar o arquivo de configuração do

 Apache, que é o "httpd.conf". Geralmente ele estálocalizado no diretório "/etc/httpd/conf". Dentro destearquivo, você encontrará uma ou duas diretrizes maisou menos desta forma:

<Directory />Options FollowSymLinks

 AllowOverride None</Directory>

ou

<Directory "/var/www/html">Options Indexes FollowSymLinks

 AllowOverride None

Page 86: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 86/254

 

Order allow,deny Allow from all 

</Directory>

 Nesta configuração do Apache, tudo que está dentrodas significa restrtições e opções especialmenteconfiguradas para aquele diretório. No caso acima, euestou aplicando algumas regras tanto no diretório basedo servidor Web (ou seja, todo o servidor Web,independente do domínio virtual ou qualquer outracoisa), como também estou aplicando no diretório"/var/www/html", que aqui no caso é onde ficam as

 páginas Web. Então cabe a você decidir escolher entreas duas diretrizes (ou utilizar a configuração nova nasduas diretrizes mesmo, ou até então criar uma diretriznova). Como eu quero ativar o .htaccess em todo o meu

 servidor Web, vou colocar da seguinte maneira:

<Directory />Options FollowSymLinks Indexes

 AllowOverride AuthConfig 

</Directory>O que eu fiz aqui foi adicionar a opção "Indexes" nestediretório e colocar o valor "AuthConfig" no

 AllowOverride. Em "Options", eu digo algumas opçõesextras que podem ser colocadas neste diretório. Issonão tem muito haver com este tutorial e nem énecessário, mas é sempre bom saber alguma coisa amais se já não se sabe :)

Como a própria documentação do Apache diz, podemos usar as seguintes opções para diretórios:"None", "All", ou qualquer combinação de "Indexes","Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". A opção "Indexes" faz com que quandonão tiver nenhum arquivo do tipo index.html,

Page 87: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 87/254

 

index.htm, ou "páginas iniciais", o Apache cria uma página com a lista dos arquivos existentes no diretório.O "Includes" permite colocar arquivos do tipo SSI (Server Side Includes), que são páginas dinâmicas

antigamente usadas por muitos (Agora a moda é PHP, Python, Perl, etc). O "FollowSymLinks" faz com que o Apache aceite links simbólicos no sistema, seguindo osdiretórios ou arquivos que os links apontam. O"ExecCGI" faz com que neste diretório possam ser executados arquivos CGI (Common Gateway

 Interface). A opção ExecCGI pode ser (e geralmente é)encontrada para o diretório "/var/www/cgi-bin", onde

estão localizados os scripts CGI. Já o "multiViews"  serve para por exemplo, servir páginas de acordo coma preferência de língua do usuário (index.html.pt_BR,indeex.html.en, etc).

O All significa todas as opções (menos o MultiViews) eo None significa nenhuma :)

 Deixando de lado essa parte, vamos ao que realmenteinteressa. A opção "AllowOverride AuthConfig" é a

que diz para o Apache verificar pelos arquivos.htaccess nos diretórios e aplicar as regras contidas noarquivo nos diretórios e subdiretórios de onde oarquivo esteja localizado. Colocada esta opção, é sódar um restart ou reload no servidor Web e tudo

 funcionará.

 Para fins de entendimento, o nome "AllowOverride" jádiz tudo: Ele sobrescreve as configurações padrões do

 servidor Apache para colocar novas configurações para aquele diretório. Estas configurações podem ser  permissões dee acesso, opções (como as que mostreiacima), entre outros.

3. Utilizando o .htaccess

Page 88: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 88/254

 

 Agora que o servidor Apache já está configurado,teremos que criar o arquivo .htaccess com as regras.Utilize o seu editor preferido (no meu caso, o vim).

 Poderemos fazer várias coisas neste arquivo. Neste

tutorial estarei usando vários arquivos .htaccess parademonstrar cada opção à cada caso, mas você podeutilizar um .htaccess no diretório principal do seu

 servidor, e definir as permissões e opções colocando-as dentro de tags , , etc. Tentarei dar alguns exemplosaqui.

3.1. Restringindo o acesso por IP/Hostname

 As vezes precisamos restringir certos arquivos ediretórios para cecrtos IPs. Isso é válido por exemplo,quando você tem um provedor, e só se quer permitir acessar algumas páginas de administração os IPs da

 Intranet do provedor. Para isso pode-se aplicar estasregras no .htaccess. Veja o exemplo abaixo:

# Deixa a Intranet acessar Order allow,denyallow from 192.168.0.deny from all 

 Esse exemplo de .htaccess fará com que o diretório, seus arquivos e seus subdiretórios só poderão ser acessados por quem estiver na faixa de IP de192.168.0.1 até 192.168.0.254. Vamos supor agora queeu queira restringir apenas 1 IP, para não acessar umcerto diretório. O .htaccess ficaria assim:

# Deixa todo mundo acessar, menos o IP 192.168.0.25Order deny,allowdeny from 192.168.0.25allow from all 

 E está feito, quando o IP 192.168.0.25 tentar acessar,não vai conseguir. Você pode substituir o IP por um

Page 89: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 89/254

 

hostname, contanto que a opção "HostnameLookups" no httpd.conf esteja habilitada (on).

3.2. Restringindo o acesso por usuário e senha

 Agora vem uma parte muito interessante. As vezes nãotemos como restringir apenas por IPs, seja porque ousuário que tem que acessar possa etar em qualquer lugar, ou ter IP dinâmico, etc. Para resolver esse caso,

 podemos utilizar o método de usuário e senha. Antes demais nada você terá que ter o utilitário "htpasswd",que serve para criar um arquivo de senhascriptografadas. Neste tutorial, criaremos 3 usuáriosexemplo:

$ mkdir /etc/httpd/auth$ cd /etc/httpd/auth

$ htpasswd -c acesso hugo New password: Re-type new password: Adding password for user hugo

$ htpasswd acesso eitch New password: Re-type new password: Adding password for user eitch

$ htpasswd acesso sakura New password: Re-type new password:

 Adding password for user sakuraO resultado que temos é o arquivo

 /etc/httpd/auth/acesso com o seguinte conteúdo:

hugo:zEerw0euqYD3k eitch:85QVc5DD0rB8M 

Page 90: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 90/254

 

 sakura:UpZuXkyuIq9hw<P.Observação: Caso você não tenha o utilitáriohtpasswd, você pode criar as senhas criptografadascom um comando do perl. Por exemplo, se eu quiser criar a senha criptografada chamada "minhasenha",

 farei o seguinte comando:$ perl -e 'print crypt("minhasenha", "Lq"), "\n";' 

 E então é só incluir a senha no arquivo como noesquema acima.

Como pode ver, as senhas estão criptografadas. Estearmazenamento de senhas é muito simples. Há outros

métodos de se armazenar senhas (arquivos de banco dedados por exemplo), mas por enquanto não vou cobrir isto no tutorial porque não é tão necessário. Mas ficaextremamente necessário se houver muitos e muitosusuários e senhas, pois se houver muitos, o processo deautenticação pode demorar um pouco.

 Agora que o arquivo de usuários e senhas está criado,vamos criar o .htaccess que irá verificar este arquivo.

Veja o exemplo do .htaccess: AuthName "Acesso Restrito à Usuários"  AuthType Basic AuthUserFile /etc/httpd/auth/acessorequire valid-user 

Salve o arquivo e pronto, quando um usuário acessar aURL, o servidor irá verificar este arquivo .htaccess e

irá perguntar pro cliente um usuário e senha. Epa, mas peraí, vamos explicar direitinho o arquivo acima!

•  AuthName: O nome que aparece como mensagem de Login. Pode usar algo como "Entre com Login eSenha", ou coisa deste tipo.

Page 91: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 91/254

 

•  AuthType: Tipo de autenticação. Atualmente o Basicé o tipo mais comum. Existe também o "Digest", masainda não é muito utilizado e suportado pelos clientes.•  AuthUserFile: Onde está o arquivo de usuários e

 senhas que agente criou.• require valid-user: O que o Apache precisa paravalidar o acesso. Neste caso a gente indicou que

 precisa de um usuário válido para acessar a página,ou seja, alguém que digitou um usuário e senha e bateucom o que está no arquivo de senhas. Pode-serestringir para apenas alguns usuários do arquivo de

 senhas. Por exemplo, se eu quisesse restringir apenas

 para o usuário eitch e sakura, ao invés de "requirevalid-user", ficaria "require user eitch sakura".

 Mas se por acaso você tiver muitos usuários, e quer dividí-los em grupos, você pode muito bem fazer isso!

 Primeiro teremos que criar o arquivo com os grupos.Use o seu editor preferido, e vamos criar por exemplo,o arquivo "/etc/httpd/auth/grupos":

admin: xxxvisitante: yyyempresa: xxx yyy

Salve o arquivo e então criamos três grupos. Para usar estes grupos, teremos que modificar o arquivo.htaccess anterior para ficar desta maneira:

 AuthName "Acesso Restrito à Usuários"  AuthType Basic AuthUserFile /etc/httpd/auth/acesso AuthGroupFile /etc/httpd/auth/gruposrequire group admin

 No arquivo acima eu adicionei a linha"AuthGroupFile", que indica pro servidor onde está o

Page 92: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 92/254

 

arquivo dos grupos (bem parecido com o"AuthUserFile" hein?) e no "require", coloquei querequer o grupo admin. Simples de entender, não?

 Agora já dá pra brincar bastante restringindo usuários

:)3.3. Opções diferentes

 Lembra do "Options" na diretriz no tópico 2? Pois é,você pode colocar estas opções também no .htaccess.Se por exemplo você quer que o diretório onde vocêcolocou o .htaccess liste os arquivos caso não haja umindex.html da vida, você adiciona o seguinte no.htaccess:

Options +Indexes

 E para tirar essa opção:

Options -Indexes

 E nisso você pode usar para qualquer uma das opções.

3.4. Mensagens de Erro personalizadas

Vamos supor que você tenha uma sub-página no seu servidor, e queira que as mensagens de erro do servidor sejam bonitinhas e no formato que você criou. Para fazer isso, você precisará apenas saber o que significa cada código de erro do servidor e apontar  para a uma página com o .htaccess:

 ErrorDocument 401 /erros/falhaautorizacao.html  ErrorDocument 404 /erros/naoencontrado.html  ErrorDocument 403 /erros/acessonegado.html  ErrorDocument 500 /erros/errointerno.html 

Caso você não saiba os códigos de erro do Apache, aconfiguração do apache 2.x já tem uma boa ajudaquanto a isto, vou colocar as linhas aqui comoreferência (entenda se quiser e puder :P):

Page 93: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 93/254

 

 ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var  ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var 

 ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var  ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var  ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var  ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var 

 ErrorDocument 410 /error/HTTP_GONE.html.var  ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var  ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var  ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var 

 ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var  ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var  ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var  ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var  ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var  ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var  ErrorDocument 506  /error/HTTP_VARIANT_ALSO_VARIES.html.var 

Page 94: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 94/254

 

3.5. Opções para arquivos e diretórios específicos

 Agora vamos supor que você queira somente fazer restrições para certos arquivos e diretórios. Para issovocê poderá fazer tudo o que fazia antes, só que dentrode tags como ou . Veja o exemplo de .htaccess a seguir com comentários embutidos explicando o contexto:

# Restringe o arquivo_secreto.html somente para o IP 192.168.0.30<Files arquivo_secreto.html>

Order allow,Deny Allow from 192.168.0.30 Deny from all 

</Files>

# Restringe o diretório admin para utilizar senhas<Directory /admin>

 AuthName "Acesso Restrito à Usuários"  AuthType Basic AuthUserFile /etc/httpd/auth/acesso AuthGroupFile /etc/httpd/auth/grupos

require group admin</Directory>

# Nega o acesso dos clientes ao .htaccess (bom colocar no httpd.conf)# - Vem com a configuração padrão do Apache<Files ~ "^\.ht">

Order allow,deny

 Deny from all </Files>

 Entendeu bem como funciona o esquema? Então é sóbrincar bastante :)

4. Conclusão

Page 95: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 95/254

 

 Pudemos aprender bastante como mexer com o.htaccess, mas o que vimos aqui não foi tudo não. Temmuita coisa ainda que se dá para colocar no .htaccess.Como eu disse no início dedste tutorial, o .htaccess

 poded comportar todo tipo de configuração dediretórios do Apache, sobrescrevendo as configurações

 padrões contidas no httpd.conf. Explorar as funcionalidades é uma questão de prática, então mãosa obra!

 Bom proveito!

Instalando o JAVA e GLGUI. 

 Alguns amigos meus me pediram para resolver alguns problemas com o jlGui 2.1.1 e o java no linux, eles nãoestavam conseguindo rodar o jlGui então como não foram

 poucos os emais espero poder ajudar a turma interessadacom esta pequena receita.

 Programas necessários:

 JAVA : http://java.sun.com/j2se/1.4/download.html 

 jlGui 2.1.1 :http://www.javazoom.net/jlgui/sources/jlgui2.1.1.tar.gz

Se você estiver usando o Konqueror quando for pegar o j2se(java) no link de download não selecione "salvar link como" pois o arquivo virá corrompido e não vai se autodescompactar (nem rodar vai).

Page 96: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 96/254

 

 

 Na versão RPM do j2se ele será instalado no diretório /usr/java/j2sdk1.4.0 na versão tar.gz você poderá instalar 

neste mesmo caminho ou outro qualquer desde que você selembre mais tarde.

Usarei o /usr/java/j2sdk1.4.0 como $JRE daqui para frente. Abra o seu /etc/profile e adcione as seguintes linha no final do arquivo:

 JRE="/usr/java/j2sdk1.4.0/bin" 

 No final da linha "export" adcione JRE.

 No topo do mesmo arquivo (/etc/profile) aonde se encontraa linha "PATH" adcione no final a linha

 /usr/java/j2sdk1.4.0/bin, ex:

 Antes

 PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin" 

 Depois

Page 97: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 97/254

 

 PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin:/usr/java/j2sdk1.4.0/bin" 

Salve o arquivo e faça um logout/login novamente paraativar as mudanças. Descompacte o jlGui em algum lugar como por exemplo em /opt/jlGui, você escolhe, crie um mini

 script no seu /usr/bin um atalho com as opções do java parao arquivo /opt/jlGui/.

 Dentro deste arquivo (o meu se chama /usr/bin/jlGui) deveconter os seguintes comandos:

#!/bin/sh

 java -jar jlGui2.1.1.jar &

Torne-o executável com chmod +x /usr/bin/jlGui Agorabasta digitar no terminal jlGui para chamar o programa.

 Aproveitando que já temos o java instalado no sistema, para adciona-lo ao konqueror faça o seguinte:

 K/Preferências/Navegação Web/Konqueror Browser/Java

Page 98: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 98/254

 

 Adcione a seguinte linha no campo "Caminho para oexecutável Java, ou java" /usr/java/j2sdk1.4.0/bin/java (ou

 java uma vez que agora ele já faz parte do nosso PATH)

 Ative a opção "Habilitar Java globalmente", depois vá em JavaScript e ative a mesma opção.

 Entre no site http://java.sun.com e você já poderá ver osapplets menus (ou seria menus applets?) rodando. Se você

achar necessário adcionar o CLASSPATH no seu sistema,em /etc/profiles logo depois do JRE adcione a linha:

CLASSPATH="caminho dos zip/jar:ou diretório de ondeeles se encontram" 

 E CLASSPATH no final da linha "export", faça um logout  para ativar as mudança

Introdução ao Linux

O que é Linux?

 Esta é uma pergunta feita por muita gente, e há muitas

respostas para ela. Linux é um sistema operacional,como os *BSD (FreeBSD, NetBSD e outros), OS/2,Windows, MacOS, BeOS, etc. O sistema operacional éo que permite o usuário usar o computador. O criador do Linux se chama Linus Torvalds. Com o nome que oautor tem, já dá pra tirar uma conclusão da origem do

Page 99: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 99/254

 

nome "Linux"... Como o Linux é baseado(ideologicamente falando) no Unix, ele juntou o seunome (Linus) com Unix, e deu Linux :)

O Linux é um sistema operacional multi-tarefa e multi-usuário. Além disso, ele é suportado por várias

 plataformas (inclusive as mais populares como aarquitetura Intel, que todo o mundo usa). Ele é usado

 por muitas empresas (principalmente provedores) por  sua alta capacidade de Rede e conversação com outros sistemas (como por exemplo, redes Windows e Novell),além de suportar também vários tipos de sistemas dearquivos.

 Mas o barato de tudo, e o que deu impulso aodesenvolvimento do Linux é justamente por ele ser um

 sistema livre e gratuito (Open Source). Isso quer dizer que você não precisa pagar para usá-lo, e nem elerequer nenhuma licença de uso. O Linux simplesmente

 pode ser pego na Internet, copiado de um amigo, ou seja lá o que for, sem restrições. E além de gratuito,ele é livre! Livre? Sim, livre! O código-fonte do núcleo

do sistema (kernel) está liberado sob a licença GPL, e pode ser pego na Internet por qualquer pessoa... Istoquer dizer que qualquer pessoa pode pegar e alterar ocódigo livremente, modificando ao seu próprio gosto e

 suas próprias necessidades. Por ser livre, o Linux têmcomo desenvolvedores vários e vários hackersespalhados pelo mundo, que contribuem sempremandando pedaços de códigos e implementações à

 Linus Torvalds, que organiza tudo e lança junto aokernel oficial. Um dos nomes mais conhecidos comocontribuidores para o kernel é Alan Cox, e você podeobter uma lista de outros contribuidores do kernel 

 junto com o código-fonte do kernel que pode ser 

Page 100: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 100/254

 

baixado através do endereço ftp://ftp.kernel.org/ (se possível use mirrors para baixar os kernels).

Quem diria que o Linux ia se desenvolver tanto! Nocomeço nada passava de um grupo de hackers queusavam o sistema. Agora temos muitos usuárioscaseiros usando, além de várias empresas prestando

 serviços (como suporte e desenvolvimento de programas), e todo tipo de coisa mais. Sua popularidade cresceu muito, e continua crescendo. Asestatisticas dizem que o Linux vai crescer e crescer, e atendência é realmente essa! Pois o Linux é um sistemaoperacional de deixar qualquer um de queixo caído.

 No futuro, acredito que mais e mais empresas vãocomeçar a adotar o Linux como sistema padrão, ecomeçar a desenvolver produtos apenas para ele.

 Deixando de lado um pouco o monopólio de empresascomo a Microsoft e seu sistema operacional Windows.

Você ainda não testou? Recomendo você fazer issoagora! Pode ser um pouco estranho no começo, masvocê aos poucos vai se acostumando, e acaba por se

adaptar totalmente à ele! Eu mesmo me adaptei e sóuso ele :) Viva o Linux!

 A história do Linux

Como usuários fiéis, não podemos nos esquecer dahistória do Linux... Como surgiu isso tudo? LinusTorvalds, o pioneiro criador, era inscrito numa lista de

 programadores. Um dia ele estava lendo as mensagense se bateu com uma pergunta: "Lembra-se daquelaépoca quando os homens escreviam seus própriosdrivers de dispositivos (device drivers)?' Ele entãoresolveu desafiar a si mesmo, e criar um sistemaoperacional onde se tinha uma liberdade e não se

 ficasse "preso' no sistema. O que ele tinha em menteera um Unix! Porém, ele não tinha verba suficiente

Page 101: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 101/254

 

 para comprar os caríssimos Unix que eram o tipo de sistema que ele queria.

 Inspirado num pequeno e humilde sistema feito por  Andy Tanembaum, o Minix, Linus trabalhou duro para fazer o Linux e desenvolver ele. Um pouco antes delançar a primeira versão oficial do kernel, Linusmandou a seguinte mensagem para o grupo de notíciascomp.os.minix:

"Você suspira por melhores dias do Minix-1.1, quandohomens serão homens e escreverão seus própriosdrivers de dispositivos? Você está sem um bom projetoe está morrendo por colocar as mãos em um sistemaoperacional no qual você possa modificar de acordocom suas necessidades? Você está achando frustrantequando tudo trabalha em Minix? Chega de atravessar noites para obter programas que trabalhemcorretamente? Então esta mensagem pode ser exatamente para você.

Como eu mencionei a um mês atrás, estou trabalhandoem uma versão independente de um sistemaoperacional similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que

 poderá ser utilizado (embora possa não ser o que vocêesteja esperando), e eu estou disposto a colocar os

 fontes para ampla distribuição. Ele está na versão0.02... contudo eu tive sucesso rodando o bash, gcc,

 gnu-make, gnu-sed, compressão e etc nele." 

 No dia 5 de Outubro de 1991, Linus Torvalds anuncioua primeira versão oficial do Linux, versão 0.02. Desdeentão muitos programadores têm respondido ao seuchamado, e têm ajudado a fazer do Linux o sistemaoperacional que é hoje, uma grande maravilha. Um

 sistema criado inteiramente por programadoresespalhados pela Internet, os hackers!

Page 102: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 102/254

 

Qual a diferença entre Linux e Unix?

 Linus Torvalds, quando criou o Linux, criou ele nos padrões "POSIX", que é o mesmo padrão que os UNIX usam. É por esse mesmo uso do padrão POSIX que o

 Linux é parecido com o UNIX. Além do mais, existemvários tipos de UNIX, que têm seu código-fonte

 fechado, e pago. Uma resposta mais completa paraesta pergunta foi feita pelo Fernando M. Roxo:

 Limpo, claro e definitivo: O Linux não é UNIX. O Linux é um UNIX. O UNIX foi um sistema criado eregistrado pela Unix Lab. Todos os sistemas baseadosnaqueles códigos são chamados de uma forma geral deUNIX.

 Linux foi escrito desde o inicio pelo Linus Torvalds enão contém nenhuma linha de código do UNIX. Mas o

 Linux foi escrito para ser conforme o padrão POSIX,que deve ser o padrão da API (Application

 Programming Inteface) Unix, que em última análise pode ser resumido (forçando um pouco a barra) como sendo as chamadas do sistema. Por isto se diz que o Linux é um Unix (não UNIX). Tem uma diferença sutil aí.

 Por causa da API POSIX, do conjunto de utilitários(FSF/GNU em sua maioria) e do uso do X-Window(XFree) o Linux é tão parecido com o UNIX queexistem empresas que usam o Linux para desenvolver 

 para UNIX que não seja o dela mesma (por exemplo a IBM).

As Distribuições

Voltando mais um pouco ao escopo do que é Linux, podemos ressaltar que o Linux é o sistema operacional,ou seja, o kernel (núcleo). Mas o que é um sistemaoperacional sem programas? Para que haja um uso

Page 103: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 103/254

 

dos recursos que o sistema operacional pode oferecer,os programadores vão criando aplicações e utilitáriosque vão dar o gostinho ao usuário.

O papel das distribuições é isso: empacotar o Linux. Oque as distribuições fazem é reunir os programasdisponíveis com o kernel, e deixar o sistema pronto

 para o uso. Sem as distribuições não haveria a popularização do Linux, pois seria um grande trabalhoo usuário instalar o sistema puro, e depois compilar os

 programas deixando-os compatíveis.

 Existem inúmeras distribuições existentes por essemundo afora. Mas há sempre as distribuições maisconhecidas, que são as mais atuantes no mercado. Elas

 são: Slackware, Conectiva Linux, Debian, Red Hat  Linux, SuSE, Mandrake. Cada um tem suascaracterísticas bem marcantes. E se fôssemos discutir aqui quais as vantagens de cada uma em relação aoutra, não conseguiríamos. A escolha da distribuição éuma escolha a gosto.

 Meu micro suporta Linux?

 Basicamente, para você usar o Linux, você precisaráde no mínimo um 386. Isso mesmo, o Linux roda em386! É claro que para um uso amplo de todos os

 programas e o sistema X-Window (gráfico), você teráde ser mais exigente com seu hardware... Mas todos oscomputadores compatíveis com a arquitetura Intel são

 suportados pelo Linux (e também outros tipos dearquiteturas como por exemplo o Alpha).

 Para a memória RAM, você irá precisar de no mínimo2MB de RAM. É recomendável ter 8Mb acima pararodar o servidor X. E seguindo a mesma filosofia doque falei antes, sempre é bom você ter mais para usar tudo rápido e sem perder a paciência :) Espaço em

Page 104: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 104/254

 

disco? Depende muito. As distribuições atuaisdisponibilizam até 6 CDs recheados de programas, que

 podem simplesmente acabar com o espaço do seu discoem alguns minutos! Uma instalação básica do Linux,

apenas com o básico mesmo, dá 10MB. Eu acreditoque 1GB seja suficiente para colocar todo tipo de coisaque você vai usar (e até coisa que você nem vai usar).

Só como curiosidade, aqui em casa, eu já rodei meu Linux nos seguintes computadores: Primeiro num Pentium 100, com 24MB de RAM, e 1GB de espaço emdisco. Rodei também num 386 (nem me perguntequantos Mhz é porque eu não faço a mínima idéia :)

com 8MB de memória RAM, num HD de 256MB. E por último em um Celeron 300 com 32MB de RAM e 1GBde espaço em disco. Atualmente eu estou usando emum K6-II 550, com 64MB de RAM, e 10GB de espaçono HD.

Outra dúvida muito comum é: O Linux roda emlaptops? Sim! Roda muito bem e suporta bem osdispositivos PCMCIA... Não tem absolutamente nada

com o que se preocupar. Por que eu devo confiar no Linux?

 Pergunta muito fácil de se responder, inclusive eu vouresponder bem grosseiramente: Ele é bom! :) O Linuxtem ganhado credibilidade cada vez mais por ser um

 sistema seguro, estável, e confiável. É muito difícil (senào quase impossível) que o Linux em si dê umcrash. Só para ter uma idéia, nestes 4 anos em que uso

 Linux, só obtive no máximo 3 travamentos! Por queestes travamentos? Bem, um foi na época em queexploraram uma falha no kernel e criaram o teardrop(um exploit que travou as coisas aqui), e os outros dois

 foi por causa de um problema na placa mãe :) Quer dizer, já aconteceu algumas outras vezes de minha

Page 105: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 105/254

 

interface travar, mas eu dei um telnet e um ping namáquina através de outra na rede, e ela respondia.Geralmente isso acontece comigo no Quake, quando eumando conectar em algum nome de host que não

existe, o SVGAlib (biblioteca que o Quake usa) simplesmente para de funcionar e você não tem maiscomo teclar algo ou mudar de tela... Mas tive a certezaque não foi o sistema que travou e sim o SVGAlib quetravou meu teclado e monitor :)

 Empresas cada vez mais estão apostando no Linux. A IBM é uma das empresas que mais está investindo pesado no Linux, sendo com ajuda financeira,

 parcerias e desenvolvimento de programas. A Intel éoutra empresa que também está ajudando muito,investindo bastante nos desenvolvedores do sistema.

 Além disso, várias outras pequenas ou médiasempresas estão cada vez mais adotando o Linux como

 sistema padrão pelo simples fato de que ele funcionamelhor e mais estávelmente que outros sistemas comoo Windows. Pode ser que você ache que isto tudo

conversa fiada, mas o Linux é bem estável mesmo! Jávi sistemas Linux ligados por vários meses sem nem sequer dar um reboot na máquina. Inclusive aqui emcasa eu consegui deixar o meu Linux ligado por 23dias, pena que faltou luz e o computador desligou (buánão tenho nobreak :~().

 Basicamente é isso. Você tem de confiar no Linux porque ele é bom e tá acabado. E só tende a melhorar,

antigamente não havia nem uma interface gráficamuito boa e usável para quem está iniciando nacomputação. Hoje temos o GNOME e KDE que sãoduas ótimas interfaces gráficas para quem estáengatinhando. São coisas que fazem o Linux valer a

 pena!

Page 106: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 106/254

 

1.7. O que é GPL?

Se você já ouviu falar bem de Linux, com certeza jádeve ter ouvido falar nesta sigla. GPL significaGeneral Public License (ou traduzindo grosseiramente:

 Licença Pública Geral), e foi criada pela FreeSoftware Foundation. A grande maioria dos programasque vêm nas distribuições Linux são de código-fonteaberto, e usam esta licença. Uma licença serve para

 proteger o seu código quando ele for lançado para o público.

 A licença GPL permite que o autor do código distribualivremente o seu código... Outras pessoas podem

 simplesmente pegar este código, modificar à suas próprias necessidades e usar à vontade. O únicorequerimento é que a pessoa que modificou develançar o código modificado em GPL e manter tambémo seu código aberto (e não apenas distribuir osbinários). Isso tudo cria uma comunidade dedesenvolvedores onde toda a ajuda é mútua, e você

 pode pegar várias idéias de outros desenvolvedores

 simplesmente olhando o código deles. Além disso, você pode aproveitar e poder ajudar o desenvolvedor,criando correções e mandando-as para o autor.

 É com essa licença que o kernel do Linux é liberado. É assim que o kernel tem seu desenvolvimento feito por várias e várias pessoas em todo o mundo. Estas

 pessoas pegam livremente o código-fonte do kernel,analizam-no e procuram por erros. Se encontrarem

erros, escrevem correções e mandam para o LinusTorvalds. E não só correções, mas desenvolvedorestambém fazem novas implementações ao kernel emandam para o Linus Torvalds organizar tudo. E éassim que temos hoje em dia este grande e bem feito eorganizado kernel do Linux! É assim que a filosofia

Page 107: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 107/254

 

GPL funciona, e funciona muito bem para criar umacomunidade de desenvolvedores justa! Eu

 pessoalmente apóio e muito a licença GPL, que paramim é simplesmente perfeita. Vivas à Free Software

 Foundation por criar esta licença! E vivas para osdesenvolvedores que a utilizam para seus códigos! :)

Você pode obter a licença GPL nos seguintesendereços:

• Versão em Inglês (Oficial) -http://www.gnu.org/copyleft/gpl.txt • Versão em Português - http://lie-

br.conectiva.com.br/licenca_gnu.html Outras licenças que é interessante ver:

• GNU Free Documentation License (Inglês) -http://www.gnu.org/copyleft/fdl.txt • GNU Free Documentation License (Português) -http://www.cipsga.org.br/sections.php?op=viewarticle&artid=112• GNU Lesser General Public License (Inglês) -http://www.gnu.org/copyleft/lesser.txt •  Listagem com várias outras licenças -http://www.gnu.org/philosophy/license-list.html 

Configurando o LILO

O LILO é um dos mais importantes softwares do Linux,

é ele quem carrega o kernel no seu sistema paracomeçar a funcionar! Entender a configuração dele émuito importante, principalmente para quem temmuitos sistemas numa mesma máquina. Com o LILO, é

 possível gerenciar partições e assim bootar emdiferentes sistemas operacionais. É com ele que fica

Page 108: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 108/254

 

 possível colocar por exemplo, o Windows e o Linux namesma máquina.

O arquivo de configuração do LILO é o /etc/lilo.conf. É editando ele que você vai poder configurar o LILOconforme as suas necessidades. Um arquivo comum

 para uma máquina que possui dois sistemas (Linux eWindows) segue no exemplo abaixo:

# Arquivo de configuração do LILO

### Seção dos parâmetros globais do LILO ### boot=/dev/hdavga=normal 

message=/boot/mensagem.txt  prompt timeout=150

### Seção de partições do LILO ### 

# Partição Linux

image=/boot/vmlinuz-2.2.17 root=/dev/hda1label=Linuxread-only

# Partição Windowsother=/dev/hdb1

label=Windows

table=/dev/hdbComo você pôde ver no exemplo acima, a configuraçãodo LILO é divida em duas partes: configuração global e configuração de partições. A configuração global carregará consigo algumas informações sobre o

 funcionamento geral do LILO, como ele vai se

Page 109: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 109/254

 

comportar, aonde, quando, porque, cade, com quem e fazendo o que :) Na configuração de partições sedefine as opções de sistemas que o LILO vai bootar.Vamos ver passo-a-passo aqui as opções mostradas no

exemplo acima, e também algumas opções adicionaisque não estão no exemplo acima, mas você pode usar 

 se quiser:

Seção de configuração Global 

• boot=/dev/hda

 Aqui indica onde o LILO irá ser instalado. A maioriados casos é ele ser instalado na MBR (Master Boot 

 Record), que é o /dev/hda, e deve funcionar  perfeitamente (a não ser que seu sistema tenha frescura). Mas se você não quiser instalar na Master  Boot Record e quiser por exemplo, instalar em umdisquete, substitua /dev/hda por /dev/fd0.

• vga=normal 

 Esta opção indica o modo VGA que o console do Linuxirá rodar. Há várias opções que deixam a tela maior,

as letras pequenininhas, ou letras maiores com telamenor, o que seja. Se você colocar 'vga=ask', antes debootar no sistema, ele vai te dar uma série de opções

 para você escolher. Cada opção irá deixar o tamanhodo console diferente... Experimente! Outro jeito demudar o tamanho do console é usando o programaSVGATextMode, que é muito melhor pois você não

 precisa reiniciar a máquina para escolher no LILO,

qual resolução você quer.• message=/boot/mensagem.txt 

 Esta opção é combinada com a opção 'prompt'. Antesdo LILO dar o prompt, ele irá mostrar na tela oconteúdo do arquivo /boot/mensagem.txt. Você podecolocar um deseínho ou qualquer coisa que quiser 

Page 110: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 110/254

 

 para ele mostrar durante o LILO. Um menuzinho comas opções é o que a maioria das pessoas costumacolocar :)

•  prompt 

 Indica que o LILO vai automaticamente para o prompt.Você pode não colocar esta opção, então o LILO

 simplesmente vai ficar esperando você apertar CTRL, ALT ou SHIFT para ativar o prompt e você poder digitar algo nele. Esta opção tem muito haver tambémcom as outras opções 'timeout' e 'delay'.

• timeout=150

O tempo de duração que você tem para digitar algo no prompt. Se este tempo passar o LILO automaticamentevai bootar no sistema padrão. O tempo é determinadoem décimos de segundos, ou seja, 150 corresponde a15 segundos (tire/acrescente o zero do final).

• delay=150

(Não usado no exemplo). Funciona da mesma maneiraque o timeout, só que ele serve para quando não secoloca o parâmetro timeout. Ele vai esperar até vocêapertar o CTRL, ALT ou SHIFT para ativar o prompt,e se não digitar isso, boota no sistema padrãoautomaticamente.

•  password=zecapagodinho

(Não usado no exemplo). Esta opção define uma senha para o usuário digitar toda vez que for bootar um

 sistema pelo LILO. Não existe forma de criptografar esta senha, então qualquer um que tiver acesso ao seu sistema poderá ver, se o arquivo /etc/lilo.conf tiver com permissão de leitura para todo mundo. Aqui a senhaestá como 'zecapagodinho', mude para uma senha

Page 111: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 111/254

 

decente se quiser que aquele teu irmão chato não use seu computador :)

•  single-key

(Não usado no exemplo). Esta opção é beminteressante. Ele permite que o usuário ao invés dedigitar o nome do sistema no prompt e dar enter parabootar no sistema, possa simplesmente apertar umatecla e pronto, o sistema boota. É muito mais prático, eé combinado com a opção 'alias' na configuração de

 partições.

Seção de configuração de partições

 Aqui você vai colocar as partições/sistemas que vaiquerer bootar. Cada conjunto de linhas corresponde àum sistema diferente (veja no exemplo anterior, paraum exemplo disso :)). Vejamos aqui os parâmetros

 para a partição Linux que definimos:

• image=/boot/vmlinuz-2.2.17 

 Aqui você vai indicar onde está a imagem do kernel do Linux que você compilou ou que já vem na sua

distribuição. Geralmente as imagens estão no diretório /boot (ou também na raiz), com o nome vmlinuz, ouvmlinux. No exemplo acima eu indiquei para ele usar oarquivo /boot/vmlinuz-2.2.17, que aqui é o kernel 2.2.17 que eu compilei.

• root=/dev/hda1

Onde se encontra o seu Linux, aqui você só precisa

indicar em que partição está localizado o seu sistema.• label=Linux

 Aqui é o 'nome' que você vai dar para estaconfiguração de partição. No caso aqui é Linux, entãoquando aparecer o prompt do LILO (LILO boot: ), eudigito Linux, dou enter e o LILO boota o sistema.

Page 112: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 112/254

 

Também existe a opção 'alias', que é o equivalente sóque para a opção 'single-key', descrita nas opções

 globais.

• read-only

 Partições Linux têm sempre de ter esta linha, pois elaindica que o LILO tem de montar a partição como

 somente leitura. Para que isso? Bem, no boot o Linuxverifica seu sistema de arquivos, e para ele verificar,tem de estar somente-leitura. Depois que ele verifica,ele remonta a partição para leitura-escrita.

• alias=1

(Não usado no exemplo). Esta opção é combinada coma opção global single-key. Ao invés de eu ter quedigitar no prompt do LILO a palavra definida na opção'label', eu apenas aperto uma tecla e ele boota. Noexemplo que usei aqui a tecla para bootar a partição éo número 1.

 Estas foram as opções para uma partição Linux. Sevocê quiser colocar uma Windows (como no exemplo

que usei anteriormente), você só tem que substituir algumas coisinhas, como veremos a seguir:

• other=/dev/hdb1

 Equivale á opção 'image' da partição Linux. Aqui vocêindica em que partição seu Windows está instalado.

• label=Windows

 Mesma coisa que na partição Linux, só que aqui eu

coloquei a palavra 'Windows' ao invés de 'Linux'. Você pode colocar o nome que quiser à vontade.

• table=/dev/hdb

O HD em que se encontra a partição.

Page 113: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 113/254

 

 Assim você poderá ir montando um arquivo deconfiguração com o quanto de sistemas quiser. Nota:algumas vezes me referi que o LILO boota no sistema'padrão'. O sistema padrão é definido pela ordem que

você coloca os sistemas na configuração de partições... No exemplo anterior, a partição Linux é a padrão porque defini ela primeira no arquivo.

 Mensagens de erro do LILO

Quando o LILO é carregado, ele mostra a palavra"LILO". Cada letra é impressa na tela depois ou antesde alguma ação específica. Se o LILO falhar emalguma ação, as letras impressas na tela podem ser usadas para identificar o problema. Preste atenção quealguns digitos hexa podem aparecer depois do

 primeiro "L" se algum problema transitório ocorrer nodisco rígido. A não ser que o LILO pare neste ponto,

 gerando uma corrente de erros sem fim, os digitos hexanão indicam um problema sério.

(nada)

 Nenhuma parte do LILO foi

carregada. Ou o LILO não estáinstalado ou a partição em que o setor de boot está alocado nao estáativa.

 L

O primeiro estágio do carregador de boot foi carregada einicializada, mas não podecarregar o segundo estágio. Ocódigo de erro de dois digitosindica o tipo do problema. Isto

 geralmente indica um erro namídia(o HD no caso) ou os

 parametros do HD não foramcolocados corretamente.

Page 114: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 114/254

 

 LI 

O primeiro estágio do carregador de boot pode carregar o segundoestágio, mas não pode executá-lo.

 Isto pode ser causado pelos

 parâmetros do HD não terem sidocolocados corretamente ou por mover /boot/boot.b sem executar oinstalador de map.

 LIL

O segundo estágio do carregador de boot foi inicializado, mas não

 pode carregar a tabela dedescrição do arquivo map. Isto

 geralmente é causado por um errode mídia(HD) ou pelos parâmetrosdo HD não terem sido colocadoscorretamente.

 LIL?

O segundo estágio do carregador de boot foi inicializado em umendereco incorreto. Isto pode ser causado pelos parâmetros do HD

não terem sido colocadoscorretamente ou por mover 

 /boot/boot.b sem executar oinstalador de map.

 LIL-

 A tabela de descrição estácorrompida. Isto pode ser causado

 pelos parâmetros do HD nãoterem sido colocados corretamente

ou por mover /boot/boot.b semexecutar o instalador de map.

 LILOTodas as partes do LILO foramcarregadas com sucesso.

 Mega-exemplo

Page 115: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 115/254

 

 No exemplo a seguir, vou apresentar uma configuraçãodo LILO para 4 sistemas diferentes! São no total 3

 HDs, e também duas opções para kernels diferentes,mas no mesmo sistema. Combino aqui também o

arquivo /boot/mensagem.txt, a opção global single-keye uma senha.

•  /boot/mensagem.txt --------------------------------------------

 Exemplo de mega-configuração do LILO rodando--------------------------------------------

 Digite as opções para bootar em cada sistema:

[1] - Slackware Linux usando kernel 2.2.16 [2] - Conectiva Linux 5.1 usando kernel 2.2.17 [2] - Conectiva Linux 5.1 usando kernel 2.2.16-cl6 [3] - Debian 2.2 usando kernel 2.2.17 [4] - Debian 2.2 usando kernel 2.2.18[5] - Ruindows e Nojenta e Oitxo

--------------------------------------------

•  /etc/lilo.conf # Arquivo de configuração do LILO

### Seção de parâmetros globais do LILO ### boot=/dev/hdavga=normal 

 password=boboalegre

message=/boot/mensagem.txt  prompt timeout=100

 single-key

### Seção de partições do LILO ### 

Page 116: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 116/254

 

 # Slackware Linux usando kernel 2.2.16 image=/boot/vmlinuz-2.2.16 

root=/dev/hda1

label=Slackwareread-onlyalias=1

# Conectiva Linux 5.1 usando kernel 2.2.17 image=/boot/vmlinuz-2.2.17 

root=/dev/hda2label=Conectiva1

read-onlyalias=2

# Conectiva Linux 5.1 usando kernel 2.2.16-cl6 image=/boot/vmlinuz-2.2.16-cl6 

root=/dev/hda2label=Conectiva2read-only

alias=3# Debian 2.2 usando kernel 2.2.17 image=/boot/vmlinuz-2.2.17 

root=/dev/hdb1label=Debian1read-onlyalias=4

# Debian 2.2 usando kernel 2.2.18image=/boot/vmlinuz-2.2.18

root=/dev/hdb1label=Debian2read-onlyalias=5

Page 117: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 117/254

 

 # Ruindows e Nojenta e Oitxoother=/dev/hdc1

label=Ruindows

table=/dev/hdcalias=6 

# Fim da configuração do LILO

Instalando o LILO

Tá, você configurou tudinho, mas falta um pequenodetalhe: instalar! Toda vez que você modifica alguma

configuração você tem de instalar/atualizar o LILO. Para isso, esteja como root e faça o comando:

# /sbin/lilo

Caso você queira desinstalar o LILO daonde vocêcolocou, você utiliza a opção -U, assim:

# /sbin/lilo -U 

Ou no DOS, você pode usar o comando "fdisk \mbr"  para desinstalar. Nunca se esqueça de instalar o LILOdepois de fazer suas alterações, senão nada vai

 funcionar hein!

Manipulação de usuários

Como você já deve saber, o Linux é um sistema multi-usuário, então, é claro que não só pode existir umusuário usando o sistema. Uma primeira coisa que

 possamos dizer é que o Linux não pode de algumamaneira ser usada sem estar sendo um usuário. Ousuário 'root' é o administrador do sistema, e é elequem você vai usar primeiro para criar outrosusuários depois (a não ser que você tenha criado umusuário comum durante a instalação do seu Linux).

Page 118: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 118/254

 

 Antes de mais nada, fique sabendo que o root é umusuário especial, ele pode fazer TUDO em seu sistema,não importa o que acontecer, ele faz. Ao contrário dosusuários comuns, que têm restrições. Se você já

instalou algum Linux, você verá que a primeira coisaque você irá fazer antes de usar o sistema é se logar como root, ou seja, preencher aquele campo login:com o usuário root. Mas aí por alguma razão vocêquer mudar de usuário, ou criar outro, ou qualquer coisa do tipo, então você se pergunta: "Como?" 

 Há um comando específico para isto. Este comando é o"adduser" ou "useradd". Dependendo da distribuição,

o comando "adduser" vai ser apenas um comandoigual ao "useradd", ou então um script interativo queirá lhe fazendo perguntas, você irá preenchendo, eentão o script criará um usuário no sistema para você.

 No caso do "adduser" ser um comando mesmo, você poderá utilizar assim:

adduser xxx passwd xxx

 Isso respectivamente irá criar um usuário padrãochamado hugo, e depois com o comando "passwd",você definirá uma senha para este usuário. Você podeespecificar outros parâmetros para o usuário, como nocomando a seguir:

adduser xxx -d /var/usuarios/xxx -s /dev/null 

Com estes parâmetros, especifiquei que o usuário hugoterá como diretório home o "/var/usuarios/hugo" ecomo shell o "/dev/null" (ou seja, não terá shell). Semestes parâmetros, o diretório home seria "/home/xxx" eo shell seria "/bin/bash".

Page 119: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 119/254

 

Vamos entender agora como este comando funciona,que é uma coisa essencial que todos deveriam saber emrelação ao sistema Linux. Cada um desses programasescrevem o usuário no arquivo de configuração do

 Linux referente aos usuários do sistema. Este arquivo éo "/etc/passwd". Cada linha deste arquivo é um usuáriocadastrado no sistema. Com as informações que voulhe dar aqui, você pode muito bem criar uma conta semusar estes programas/scripts citados acima.

O passwd é formado por linhas onde cada linha é umusuário, como falei acima, então vamos aprender amontar cada linha desta. Vou pegar um exemplo para

vocês: xxx:x:1001:100: username:/home/xxx:/bin/bash

Vamos dividir esta linha em "campos", onde cada um é separado por : (dois pontos), olhe só:

Campo Significado

 xxx Login do Usuário, aqui você pode colocar o nome quequiser com até 8 caracteres.

 x

 Aqui diz que o password estáno arquivo /etc/shadow. Seestivesse *, a conta estariadesabilitada, e se estivesse semnada (::), a conta não teria

 password.

1001 UID (User IDentification), onúmero de identificação dousuário.

100GID (Group IDentification), onúmero de identificação do

 grupo do usuário.

Page 120: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 120/254

 

usernameComentários do usuário, comonome, telefone, etc

 /home/xxx

O diretório HOME do usuário,ou seja, o diretório pertencentea ele. Geralmente estesdiretorios sempre estao no

 /home

 /bin/bash

Shell do usuário, ou seja, o programa que irá enterpretar os comandos que o usuárioexecutar.

Obs: O /etc/shadow é um arquivo que contém a senhado usuário criptografada, se alguém tiver posse dela,esta pessoa pode muito bem comparar as senhas comuma lista de palavras, e pode descobrir as senhas dosusuários. Felizmente este arquivo está muito bem

 protegido pelo sistema :)

 Bem, legal, aprendi sobre adicionar um usuário, mascomo faço para removê-lo? Simples, você pode apagar 

a linha referente a ele no /etc/passwd e os seusarquivos, ou simplesmente digitar userdel usuario.Combine com a opção -r para deletar junto o diretório

 HOME do usuário.

 Ahhhhh? Você quer mais? O quê? Quer deixar umusuário como se fosse root? Então vamos lá que nãotemos nada a perder! O root possui o UID e o GIDigual à 0 (zero), e um usuário comum não. Se nós

 forçássemos a mudança do UID e GID de um usuário para 0, ele ficaria como se fosse o root! Por exemplo,eu tenho a linha do usuário no /etc/passwd e mudo:

 xxx:x:1001:100:username:/home/xxx:/bin/bash xxx:x:0:0:username:/home/xxx:/bin/bash

^ ^ 

Page 121: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 121/254

 

 Pronto, o usuário xxx vai ser também o root do sistema, o administrador do sistema, o deus do sistema,etc. Outra dica: Não é muito bom ficar usando ousuário root, este usuário é somente para a

administração do sistema, então eu recomendo à vocêa usar sempre um usuário normal, ser da plebe :) E se

 for precisar usar o root, logar como ele ou utilizar ocomando "su -" para se tornar o próprio root.

Outro arquivo que tem muito haver com os usuários no Linux é o /etc/group. Que contém as definições de cada grupo, como por exemplo seus nomes, GIDs, e usuáriosadicionais que pertencem à ele. Você adicionando uma

linha neste arquivo estará criando um novo grupo.Vamos criar aqui um novo grupo no /etc/group:

metal:x:666:xxx,jim,yyy

 Adicionando esta linha acima no arquivo /etc/group,um novo grupo é criado: com o nome 'metal', o GID'666' e como usuários adicionais pertencentes à ele,'xxx, jim, yyy'. Fácil não?

 Bem é isso, combinando este conhecimento com algo sobre permissões dos arquivos, você pode controlar muito bem quem usa o seu sistema ou servidor, dizendoquem pertence à que grupo, quais seus diretórios, quearquivos podem acessar, entre outros. Bom proveito!

Como Fazer o modem 56k PCI 3COM/USR funcionar nolinux:

 Marca: 3Com

 FCC: 4X2USA-32034-M5-E 

Page 122: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 122/254

 

 Produto: 3CP2976-OEM-50

 Interface: PCI 

velocidade: 56K  Passos:

 Determine a IRQ e endereço I/O do modem. Ambos sãomostrados no boot do kernel.

1.1. Usando 'lspci': Execute: 'lspci -v' e procure algumacoisa como:

00:0c.0 Serial controller: US Robotics:

Unknown device 1008 (rev 01)

(prog-if 02)

Subsystem: Unknown device 12b9:00aa

 Flags: medium devsel, IRQ 11

 I/O ports at b400

Capabilities:

.2. Usando /proc/pci: Execute: 'cat /proc/pci' e procurealguma coisa como:

 Bus 0, device 12, function 0:

Page 123: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 123/254

 

Serial controller: Unknown vendor 

Unknown device (rev 1).

Vendor id=12b9. Device id=1008. Medium devsel. IRQ 11.

 I/O at 0xb400 [0xb401].

 Determine o tty do modem: O tty do modem é a proximainterface serial disponível. Se você tem ttyS0 e ttyS1, omodem deve estar na ttyS3. Tente usar: ttyS0, ttyS1, ttyS2

ou ttyS3.Comandos de configuração do modem: Você precisa usar ocomando "setserial" para configurar o modem. Paramaiores informações, faça "man setserial".

Substitua a IRQ, I/O e TTY com suas configurações:

 setserial /dev/TTY irq IRQ port I/O ^fourport ^auto_irq

 skip_test autoconfig spd_vhi Exemplo:

 setserial /dev/ttyS3 irq 11 port 0xb400 f̂ourport ^auto_irq skip_test autoconfig spd_vhi

Configure o modem pra iniciar automaticamente no boot, porque é necessário configura-lo toda vez que é iniciado o

linux.

Page 124: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 124/254

 

4.1. Se você usa RedHat 6.x, Conectiva 5.0:

4.1.1. Crie o arquivo: /etc/rc.d/rc.serial 

4.1.2. Coloque os seguintes comandos no arquivo rc.serial:#!/bin/sh

# modem 3COM, fazendo a configuração de IRQ e PORTA:

 setserial /dev/ttyS3 irq 11 port 0xb400 f̂ourport ^auto_irq

 skip_test autoconfig spd_vhi

# Mostrando no boot a inicialização do modem:

 setserial /dev/modem -b

4.1.3. Faça o arquivo ficar executável: chmod +x /etc/rc.d/rc.serial 

4.2.1. Se você não possui nenhum script de conexão, use o ppp-facil de Augusto C. Campos na seguinte home page:

www.linux.trix.net Este script funciona na maioria dasvezes com modems 3COM.

Configurando o MRTG

O MRTG é um programa feito em perl muito útil paraanálisar o tráfego utilizado em sua rede/link. Ele gera

 gráficos que te mostram o uso da banda em termos de

velocidade. Para configurar não é tão complicado,dependendo do caso, é claro. Você precisará pegar o

 MRTG, seja como código-fonte, ou como pacote. Nocaso dos pacotes, uma compilação não é necessária, eos arquivos já estarão instalados no sistema (portantoé só configurar). Mas como quero cobrir tudo aqui,

Page 125: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 125/254

 

colocarei os passos de compilação e instalaçãomanual.

•  Exemplo de gráficos -

http://www.stat.ee.ethz.ch/mrtg/  Se você tem uma distribuição que possui o utilitário"apt", ótimo, porque provavelmente você só terá quedigitar o comando "apt-get install mrtg" e o programairá baixar e instalar automaticamente. Agora se vocêquiser baixá-lo, visite a página oficial do MRTG:

•  MRTG -

http://people.ee.ethz.ch/~oetiker/webtools/mrtg/.•  MRTG (Mirror Brasil) - http://mrtg.matrix.com.br/.

 Neste endereço você poderá encontrar as versões maisatuais, tanto como código-fonte, quanto pré-compilados em pacotes ou em um binário paraWindows (sim! O MRTG também funciona noWindows, se tiver o perl! Mas aqui só vou falar da

instalação no linux :P) No meu caso, eu peguei aversão "2.9.25".

O MRTG requer o seguinte para compilar e funcionar no seu Linux: gcc, perl, gd, libpng, zlib. Provavelmente

 sua distribuição já veio com esses pacotes, então nãoos cobrirei neste tutorial. Vamos agora começar ainstalação:

 

# tar zpfx mrtg-2.9.25.tar.gz

# cd mrtg-2.9.25# ./configure --prefix=/usr --sysconfdir=/etc/mrtg 

[...configurando a compilação...]

# make

Page 126: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 126/254

 

 [...compilando...]

# make install 

 E pronto. Se tudo ocorrer bem, o MRTG estaráinstalado corretamente no seu sistema, e pronto para ouso! Mas antes, teremos que criar um arquivo deconfiguração para o MRTG usar. Para issoutilizaremos um utilitário do MRTG chamado"cfgmaker". Tenha em mãos o IP do seu roteador e a

 senha "community" dele... Se você não souber o quediabos é isso, então está precisando mexer um poucomais com o roteador :) Execute o comando:

cfgmaker --global 'WorkDir: /var/www/html/mrtg' \--global 'Options[_]: bits,growright' \--output /etc/mrtg/exemplo.cfg \[email protected]

Onde "xxx.xxx.xxx.xxx" é o IP do seu roteador. Estecomando irá gerar o arquivo "/etc/mrtg/exemplo.cfg" e

 servirá para alterarmos manualmente, comparandocom o resultado. Veja este exemplo de configuração

 final comentada:

# ---------------------# Configurações Globais# ---------------------

# Diretório onde vai ficar a página com os gráficos

 gerados# pelo MRTGWorkDir: /var/www/html/mrtg 

# Língua usada pelo MRTG para as mensagens na página

Page 127: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 127/254

 

 Language: brazilian

# Opções:# bits = Mostrar a velocidade em bits (bits/bytes)

# growright = O gráfico cresce para a direitaOptions[_]: bits,growright 

# Rodar como Daemon? Assim não será precisocolocar # no crontab, só precisará colocar um comando na# inicialização do Linux.

 RunAsDaemon: yes

# --------------------------------# Configuração do link 1 (256kbps)# --------------------------------

# Aqui você terá de comparar com o exemplo gerado# pelo comando 'cfgmaker', coloque o valor igual # ao que foi mostrado. O primeiro número é essencial 

# para saber a ligação que estamos usando noroteador.Target[EXEMPLO]: 1:[email protected]:

# A quantidade de bytes que o link suporta.# 64kbps = 8000# 256kbps = 32000

 MaxBytes[EXEMPLO]: 32000 AbsMax[EXEMPLO]: 32000

# Com essa opção, todos os 4 gráficos não serão# redimensionados de acordo com o uso do link. Eles

 sempre# terão a altura do máximo de tráfego que se podechegar 

Page 128: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 128/254

 

# (de acordo com os itens acima).Unscaled[EXEMPLO]: dwmy

# Configurações da página. Título e frase no Topo.

Title[EXEMPLO]: Exemplo de Análise de Tráfego para link de 256kbps PageTop[EXEMPLO]: <h1>Exemplo de Análise deTráfego para link de 256kbps</h1>

 Pronto. Já temos uma configuração básica para o MRTG. Agora vamos rodá-lo:

# mrtg 

Como colocamos a opção "RunAsDaemon", ele ficarárodando e estará atualizando o gráfico de 5 em 5minutos. Os gráficos estarão localizados no diretório"/var/www/html/mrtg, com o nome de "exemplo.html".Claro que este diretório teria que estar disponível no

 seu servidor Web para verificarmos o gráfico.

Só que quando reiniciarmos o computador, o mrtg nãoestará rodando mais. Se você instalou o MRTG a partir 

de um pacote pré-compilado, ele já deve ter vindo comum scrip de inicialização no diretório "/etc/init.d",então coloque este script na inicialização do seu Linux.Caso você queira fazer isso manualmente, é só colocar a seguinte linha no seu arquivo "/etc/rc.d/rc.local":

# Roda o MRTG /usr/bin/mrtg 

 Assim, toda vez que seu sistema for iniciado, ele chamao MRTG para rodar como Daemon e gerar os gráficosde 5 em 5 minutos.

O uso do MRTG é bem extenso, e não se limita àpenasmonitorar o tráfego de um roteador. Mas por enquantovamos cobrir apenas este assunto. O arquivo de

Page 129: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 129/254

 

configuração que usamos é muito simples, e se vocêquiser se aprofundar mais no assunto, dê uma olhadano manual de referência do arquivo de configuração:

 MRTG Configuration Reference -http://people.ee.ethz.ch/~oetiker/webtools/mrtg/reference.html 

 E boa sorte! :)

Como fazer funcionar as placas CMI8338.

 Muitas pessoas, que possuem a placa SiS530 ja sofrem um pouco para fazer o video funcionar no Xwindows, quantomais , fazer o SoundChip (placa de som) tocar algumacoisa. Por isso, a propria cmedia (www.cmedia.com.tw) fezo driver que esta disponivel para download.

 Ao fazer o download do driver, descompacte ele dentro do /usr/src/linux/drivers/sound:

tar xvzf cmipci-1.1.tar.gz -C /usr/src/linux/drivers/sound 

Se voce preferir, faca um backup dos arquivos Config.in e Makefile do /usr/src/linux/drivers/sound pra garantir :)

 Depois, entre na configuracao do kernel 

make menuconfig 

Page 130: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 130/254

 

 A parte de ativação do som, deverá estar setada como[M]ódulo, e dentro dela aparecerá para ativação de :

Support for C-Media PCI audio chips

[*] Enable legacy FM 

[*] Enable legacy MPU-401

 Pronto! Basta agora salvar a configuração, Efetuar ummake modules e um make modules_install 

 para rodar o driver, digite a sequencia:

depmod -a

modprobe cmpci

e aproveite sua placa de som onboar 

Primeiros contatos com o Linux

O início

 A inicialização do Linux é muito importante... Primeiro porque você está iniciando o melhor sistema existente,

 segundo porque as mensagens que aparecem durante oboot serão muito úteis na hora de executar algumastarefas no Linux: tais como montar dispositivos(partições, cd-roms), ver o que está sendo iniciadoautomaticamente, o que está sendo reconhecido pelo

Page 131: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 131/254

 

kernel, e outras coisas mais que com certeza veremosmais à frente.

 É indispensável que você observe as mensagens deboot atentamente... Mas tem um probleminha, se tudo

 passa muito rápido, ou você quer consultar asmensagens de boot depois (e não quer ter de reiniciar a máquina pra ver...), existe um comando que mostraas mensagens de boot do kernel. Este comando é odmesg, ele vai mostrar o processo de boot do kernel todo sem problemas.

 Logo após todas as mensagens de boot, você será presenteado com uma tela de login do usuário. Comoveremos mais adiante, o Linux é multi-usuário, ou seja,

 suporta vários usuários. Dependendo da configuração

usada na instalação, esta tela de login pode ser emmodo gráfico ou texto. É aqui que começa o nosso usono sistema!

 Na instalação você deve ter escolhido uma senha para

o root, e deve também ter criado um usuário normal (se não criou, é recomendável que você criasse, masisso podemos fazer depois). Logue-se como root oucomo usuário normal usando o nome do usuário e a

 senha escolhida. Você ou cairá na interface gráfica, ouna texto (dependendo da distribuição)... Mas antes deusar vamos entender mais conceitos? É o quetrataremos nas seções à seguir.

 Multi-tarefa e multi-usuárioO Linux é multi-tarefa e multi-usuário, mas o que issoquer dizer? Multi-tarefa é a capacidade que o sistematem de executar várias tarefas de uma só vez, dividindoassim o uso da memória. Enquanto multi-usuário é acapacidade do sistema lhe dar com várias pessoas ou

Page 132: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 132/254

 

usuários, cada um com suas preferências, cada umcom seus arquivos, suas permissões e assim por diante.

Como um exemplo de multi-tarefa, podemos citar quevocê pode consultar um arquivo texto que está nodiretório X, enquanto acessa o disquete, e o CD-ROM,tudo ao mesmo tempo. Ou seja, você faz as coisas, masnão fica preso somente a elas, pode executar outrastarefas enquanto uma já estiver sendo executada.Todos os sistemas atuais são multi-tarefa, então esteconceito não deve ser muito novo para você. Umexemplo de sistema que não é multi-tarefa é o DOS (ugh).

 É muito importante destacar o multi-usuário do Linux.Tudo vai ser dividido por usuários, e junto com essasdivisões haverá também as restrições. Há um usuário

 principal no Linux, chamado root. Este usuário podeacessar, controlar, e fazer tudo no sistema. Enquantoos usuários normais só poderão acessar seusdocumentos, ou os que o sistema (root) permitir. Umaética importante para o Linux é nunca usar o usuário

root... Então é recomendável que você crie um usuário primeiro e use ele, só utilize o root para tarefasadministrativas! Por que isso? O usuário root tem o

 poder em tudo, inclusive de fazer muita besteira no sistema... Você não quer fazer besteira, ou quer? :)

 A interface texto (Console)

 A interface texto do Linux é indispensável para o usodo sistema. É nesta interface que você vai encontrar uma quantidade enorme de utilitários e comandos queirão lhe ajudar na administração do dia a dia. Se a telade login for no modo texto, você se logará e logo após

 será presenteado com o interpretador de comando,onde você poderá mexer realmente no sistema. Ainterface texto não é tão amigável como a gráfica, mas

Page 133: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 133/254

 

certamente tem suas utilidades, e é recomendado quetodos os usuários não fiquem só presos a interface

 gráfica, e que conheçam bem o modo texto. Outronome que podemos dar à interface texto é console.

 Então vamos ao que interessa, o modo texto é divididoinicialmente em 6 telas, em cada tela poderá se logar um usuário. Experimente apertar a combinação deteclas ALT+F1, ALT+F2, ..., ALT+F6. Isto o levará

 para os consoles 1, 2, 3, 4, 5 e 6. A partir do 7, o Linuxreserva especialmente para as interfaces gráficas

 funcionarem. Como o Linux é um sistema multi-tarefa emulti-usuário, você pode se logar em todos ao mesmo

tempo, com quaisquer usuários. Você pode por exemplo se logar como root no console 1 paraqualquer emergência, e ficar usando um usuárionormal no console 2.

 Lembre-se sempre que a interface texto é o poder do Linux! Você pode estar se perguntando como podeconviver com o ambiente texto, mas eu posso te

 garantir que você convive muito bem. Existem vários

 programas para o modo texto que você provavelmentevai querer usar... Você vai poder usar IRC (BitchX),WWW (lynx ou links), ICQ (licq ou micq), visualizar imagens (zgv), jogar joguinhos (quake, overkill,dopewars), editar arquivos (vi, pico ou joe), e ummonte de coisas mais. A interface texto do Linux, aocontrário da do DOS, é bem poderosa :) Vá seacostumando com a idéia de querer usar ela.

 A interface gráfica (X-Window) A interface gráfica vem crescendo cada vez mais no Linux. O que permite que o Linux tenha estes recursos gráficos todos é o servidor X (X-Window). Em todas asdistribuições Linux é incluído o Xfree86, um servidor X totalmente gratuito para Linux/Unix. Mas o servidor X 

Page 134: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 134/254

 

é apenas quem vai fornecer o recurso de gerar ainterface gráfica. Para que haja um desktop, énecessário também a existência de um gerenciador de

 janelas (ou Window Managers) que são programas que

usam a biblioteca do X-Window para gerar asaplicações, as janelas, a aparência do modo gráfico no

 Linux.

 Por exemplo, o WindowMaker é um gerenciador de janelas, ele usa a biblioteca do X-Window para gerar  suas janelas e seus programas, como o dock. Sem um gerenciador de janelas, é inútil se usar um servidor X, pois ele rodará, mas o usuário não poderá fazer nada

nele. Quer ver? Experimente executar o comando X. Irá se abrir uma interface gráfica, com o mouse, mas ousuário não vai ter controle nenhum. Para finalizar esta seção aperte CTRL+ALT+BACKSPACE (combinação de teclas que encerra forçadamente o

 servidor X).

 Iremos falar muito das interfaces gráficas maisadiante, por enquanto ficaremos aprendendo como

mexer no console, que é a parte mais emocionante e aque mais se aprende.

 Estrutura de diretórios no Linux

 A raiz do Linux fica no diretório "/", e dentro destediretório existem vários outros, cada um significandouma coisa. Vamos aqui aprender o significado de cadaum para sabermos onde usar as coisas, e onde colocar os arquivos adequadamente e organizadamente. Aestrutura de diretórios no Linux é basicamente divididaassim:

 Diretório Significado

 /bin Arquivos executáveis que sãousados pelo sistema

Page 135: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 135/254

 

 freqüentemente. Aquiencontramos por exemplo osinterpretadores de comandos(bash, ash, etc), o df, chmod,

date, kill, dmesg, pwd, ls, emuito mais. São os comandosessenciais :)

 /boot 

 Neste diretório ficam osarquivos de boot, como osmapas de boot e as imagens dokernel.

 /dev Este é um diretório que carregaconsigo todos os arquivos-dispositivos.

 /etc

 Arquivos de configuração do Linux. Este é o diretório quecarrega todas as configuraçõesdos principais (senão todos) os

 programas do Linux. Elecontém por exemplo os arquivosde usuários e senhas, arquivosde inicialização, configuraçõesde rede, e mais uma bolada deconfiguração pra deixar qualquer um doido.

 /home Diretório dos usuários. Cadausuário tem um diretório dentrodeste diretório :)

 /lib Algumas bibliotecas essenciais para o funcionamento do Linux,e também os módulos do kernel.

 /proc Este é um diretório especial, elecontém informações que o

Page 136: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 136/254

 

kernel gera.

 /root  É um diretório HOME. Só queaqui é o do usuárioadministrador (root).

 /sbin

 Executáveis poderosos, que só podem ser executados pelo root. Aqui se encontram programas para checkar e criar sistemasde arquivos, optimizar o uso do

 HD, configurar dispositivos, gerenciar módulos do kernel,etc.

 /tmp

 Diretório temporário. Nestediretório, vários utlitários criamarquivos que só serão usados

 por um tempinho, e depoisdescartados. Não há nenhumainformação importante aqui,

 pois pode ser acessado por qualquer usuário.

 /usr 

Um dos maiores diretórios, estecontém as bibliotecas earquivos gerais dos vários

 programas instalados no sistema.

 /var 

 Informações variáveis que estão sempre em constante mudança,

como arquivos de logs,travamentos, informações, etc.

Cada diretório tem seus subdiretórios com muita coisa para explorar. Você pode ir já dando uma olhada paraver como tudo é organizado.

O interpretador de comandos

Page 137: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 137/254

 

 Pronto. Você acaba de se logar no sistema, o que fazer agora? A primeira coisa que você tem de saber é o como que você está usando: um interpretador decomandos. Você estará num prompt parecido com

alguns destes: songoku:/home/xxx$[xxx@songoku xxx]$etc

Você está dentro de um interepretador de comandos,que no caso é o bash. O interpretador de comandos éum mediador entre o usuário e a máquina. Você digita

algum comando, e o interpretador lê o que você digitoue executa a tarefa correspondente. Sem uminterpretador de comandos, não haveria possibilidadede o usuário interagir com o sistema. Osinterepretadores mais comuns são: sh, bash, ash, csh etcsh. Na maioria dos casos, você estará usando o bash(que na minha opinião é realmente o melhor!).

Só uma nota... Nos prompts do Linux, quando se acaba

com o símbolo "$", isto quer dizer que você está logadocom um usuário normal. Se você estiver logado com oroot, ao invés do símbolo "$", no final do prompt existirá o símbolo "#".

Você pode ir testando seu interpretador de comandosexecutando comandos simples, ou fazendo scripts shell,ou o que seja. Caso você queira usar outrointerpretador de comandos, você pode mudar a

entrada no arquivo /etc/passwd para o usuário, ou pode simplesmente executar a shell dentro de uma shell. Por exemplo, se você digitar csh, você entraránesta shell. Quando quiser sair da shell, utilize ocomando exit (ou logout, ou também apertando

Page 138: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 138/254

 

CTRL+D). Experimente testando todas osinterpretadores que citamos aqui.

 Documentação

 As páginas de manual O que você faz quando está confuso com algumcomando? Não sabe como ele funciona, quais são seus

 parâmetros, o que ele faz, e essas coisas... No Linux háuma maneira bem fácil de entender melhor edetalhadamente os comandos. Este método são as

 páginas de manual (manpages). Cada comando tem sua página de manual, e dentro desta há a descrição

do comando, para que ele serve, quais são seusautores, quais são seus parâmetros, bugs conhecidos,arquivos e outros comandos relacionados, etc. Paraacessar uma página de manual, você utiliza o seguintecomando:

$ man comando

 Por exemplo, se você está com dúvida sobre ocomando ls, simplesmente digite man ls, e aparecerá

um manual falando apenas deste comando, com seus parâmetros e tudo mais. Este recurso é muito bom porque o usuário consegue uma ajuda bem rápida.

 Documentos disponíveis

Um recurso muito bom de ser utilizado são as váriasdocumentações do Linux. Se você tiver instalado toda adocumentação, você poderá encontrá-los no diretório

 /usr/doc. As distribuições mais atuais estão começandoa colocar estes documentos no /usr/share/doc. Dentreestes vários documentos, podemos citar os HOWTOs,que são documentos que ensinam a fazer alguma coisaem específico. Também há os FAQs que respondem adúvidas freqüêntemente perguntadas pelos usuários, ealguns históricos de listas de discussões.

Page 139: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 139/254

 

 Ler a documentação é indispensável para oaprendizado de novas coisas, e na especialização decertos recursos que o Linux pode oferecer. A maioriados documentos estão em inglês, mas também há varios

traduzidos para a língua portuguesa através do projeto LDP-BR (Linux Documentation Project Brasil),localizado no endereço http://ldp-br.conectiva.com.br .

 RTFM! Err.. o que é isso? Bem, Read The Fine Manual :)

Comandos de ajuda

 Além do comando man podemos contar com uma sériede outros comandos que ajudam no dia a dia. Temos oinfo, que é semelhante ao man, traz informações sobreum certo comando. O comando locate procura por arquivos que estão incluídos no banco de dados doupdatedb (Se você executar o comando updatedb, elevai varrer seu disco e vai colocar todos os nomes dosarquivos no banco de dados, para o locate consultar depois). Há também o whatis que procura no banco dedados algum comando relacionado a uma certa

 palavra (para criar o banco de dados de comandos,digite makewhatis). Estes comandos vão certamente ser companheiros nas horas de aperto.

 Listas de discussão

 Lista de discussão é um recurso muito usado no mundotodo. Aqui no Brasil temos várias listas de discussõesrelacionadas com o Linux. Podemos citar dentre elas alista de discussão linux-br. A lista linux-br é a maismovimentada do Brasil, e pode ser acessada noendereço http://linux-br.conectiva.com.br .

Se você tem alguma dúvida que não conseguiu resolver lendo as páginas de manual, ou lendo os HOWTOs, os

 FAQs e ou até mesmo procurando em sites pela

Page 140: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 140/254

 

 Internet, o recomendado é você ir para as listas dediscussão ver se alguém sabe a resolução do seu

 problema. Mas lembre-se sempre de ser educado e perguntar com jeito! Lembre-se que são pessoas de

boa vontade que irão te ajudar :)

Permissões de arquivos no Linux

 No Linux, como em outros sitemas Unix, cada arquivotem uma permissão. As permissões são atributos dosarquivos que especificarão se ele pode ser lido,executado ou escrito. Estas permissões que vão definir o que um usuário pode fazer. Para saber se um

 programa é executável ou não, execute um 'ls -l' e vejano lado esquerdo se o arquivo tem X nos seusargumentos, como no exemplo abaixo:

drwxr-xr-x 2 root root 1024 Dec 23 15:22 bindrwxr-xr-x 2 root root 1024 Dec 31 05:48boot drwxr-xr-x 2 root root 1024 Dec 6 15:51

cdromdrwxr-xr-x 3 root root 8192 Mar 11 10:17 devdrwxrwxr-x 2 root root 1024 Feb 27 13:52dosadr-xr-xr-x 11 root root 2048 Mar 11 10:19 etcdrwxr-xr-x 11 root root 2048 Feb 23 19:08homedrwxr-xr-x 3 root root 1024 Feb 23 19:13 libdrwxr-xr-x 2 root root 12288 Nov 2 11:25lost+found -rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup-rw-rw-r-- 1 killer users 2342 Mar 10 03:12teste.txt -rw-rw-rw- 1xxx visits 23412 Mar 09 22:22

Page 141: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 141/254

 

teste2.doc

 No exemplo acima todos os arquivos tem como donoroot e como grupo também root, com exceção do

'teste.txt' que o dono é 'killer' e o grupo é 'users', etambém 'teste2.doc', no qual 'xxx' é o dono e o grupo'visits' também é dono. Como você pode ver do ladoesquerdo de cada arquivo/diretório existe um série deletras r, w, x ou d! Vamos ver o que representa cadauma delas:

drwxrwxrwx0111222333

 No caso acima, a primeira coluna significa (numero 0) se o nome listado é um diretório ou não, caso não sejaum diretório ele será exibido da seguinte maneira:

-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup\--------> Não contém a letra 'd', não é diretório, e simarquivo

O exemplo abaixo mostra o que seria um diretório:drwxr--r-- 1 root root 1 Mar 10 01:12 bin\----------> Contém a letra 'd' na primeira coluna, é umdiretório

Também há casos em que no lugar do 'd', aparecemoutras letras que indicam outros tipos de arquivos. Aletra 'l' significa que é um link simbólico, as letras 'c' e'b' correspondem à dispositivos (/dev). Veja algunsexemplos abaixo:

crw-rw---- 1 xxx audio 14, 4 Dec 2 1999 audiobrw-rw---- 2 xxx cdrom 22, 64 May 5 1998 hdd lrwxrwxrwx 1 root root 8 Oct 17 22:53cdrom -> /dev/hdd 

Page 142: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 142/254

 

Continuando, na segunda coluna (números 1 de acordocom o exemplo mais acima) temos as definições para odono do arquivo, como mostra o exemplo:

-rwxr--r-- 1 killer users 1231 Mar 09 12:12teste.txt ||\--------> O dono do arquivo (killer) pode executar o

arquivo, x=executable!|\---------> O dono do arquivo (killer) pode gravar no

arquivo, w=writable!\----------> O dono do arquivo (killer) pode ler o

arquivo, r=readable!

Seguindo, na terceira coluna (números 2 de acordocom o exemplo lá em cima) temos as definições para o grupo que é dono do arquivo, como mostra o exemplo:

-r--rwxr-- 1 fernando visits 212 Mar 01 12:42exemplo.doc

||\-----> O grupo dono do arquivo (visits) podeexecutar o arquivo!

|\------> O grupo dono do arquivo (visits) pode

 gravar no arquivo!\-------> O grupo dono do arquivo (visits) pode ler oarquivo!

 Finalmente, temos a quarta coluna (composto pelosnúmeros 3), essa coluna se refere as permissões paratodos os outros usuários do sistema, sem ser os donos e

 grupos-donos dos mesmos, exemplo:

-r--r--rwx 1 fernando visits 1231 Mar 03 12:42exemplo2.doc

||\--> Todos os usuários (exceto fernando eusuários do grupo visits)

|| tem permissão para acessar oarquivo!

|\---> Todos os usuários (exceto fernando e

Page 143: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 143/254

 

usuários do grupo visits)| tem permissão para gravar no

arquivo!\----> Todos os usuários (exceto fernando e

usuários do grupo visits)tem permissão para ler o arquivo!

Quando nos referimos a diretório invés de arquivos, o FLAG x (executável) diz se o diretório é ou nãoacessível, já que não podemos "EXECUTAR" diretórios... Exemplo:

drwxr--r-- 1 root root 2134 Mar 01 12:54

exemplo3||||| \----> Todos os usuários podem ler o interior dodiretório, mas não||||| podem usar o comando 'cd' para entrar nele,

 pois não existe||||| o FLAG 'x' para a quarta coluna!||||\-------> Usuários do grupo 'root' podem ler ointerior do diretório,

|||| mas também não podem usar 'cd' para entrar no diretório!|||\--------> O usuário 'root' pode usar 'cd' para entrar no diretório!||\---------> O usuário 'root' pode gravar arquivosnesse diretório!|\----------> O usuário 'root' pode ler o interior dessediretório!\-----------> Indica que o nome listado é um diretório!

O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos arquivos e/ou diretórios, a sintaxebásica do comando é:

chmod [ugoa]{-+}[rwx]nome_do_arquivo_ou_diretório

Page 144: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 144/254

 

 Então vamos à um exemplo. Se eu quero mudar a permissão para o dono do arquivo (u=user) poder ler e gravar (rw) no 'arquivo1.txt', faço o seguinte:

$ chmod u+rw arquivo1.txt 

Caso você queira desfazer o comando, você faria:"chmod u-rw arquivo1.txt". Como se vê, o + ou - define

 se os FLAGS serão ativados ou desativados! Outrosexemplos:

$ chmod a+r arquivo2.txt 

(Todos usuários (a=all) podem ler o 'arquivo2.txt')>

$ chmod o+w arquivo3.txt (Outros usuários (o=others) sem ser o dono e o grupodono do arquivo, podem gravar no 'arquivo3.txt')

$ chmod g+x netscape

(O grupo-dono do arquivo (g=group) pode executar oarquivo 'netscape')

O comando chmod pode também ser usado com

números, em vez dos flags. Este método é chamado deoctal, veja o exemplo abaixo:

$ chmod 664 arquivo.txt 

O que quer dizer cada um desses números? Vejaabaixo:

 Número Significado

0 Nenhuma permissão1 Permissão para executar 

2 Permissão para gravar 

3 Permissão para gravar eexecutar 

Page 145: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 145/254

 

4 Permissão para ler 

5 Permissão para ler eexecutar 

6   Permissão para ler e gravar 

7  Permissão para ler, gravar e executar 

 No exemplo o comando informou que o 'arquivo.txt'  pode ser lido e gravado pelo seu dono (numero 6 na primeira coluna), informou que pode também ser lido e gravado pelos usuários que compõem o grupo-dono

(numero 6 na segunda coluna), e informou que pode ser lido por todos os outros usuários do sistema(numero 4 na ultima coluna).

O comando chown é simples e pode ser usado paramudar o dono e o grupo dono de um arquivo/diretório.

 E é usado da seguinte maneira:

$ chown usuario.grupo arquivo_ou_diretorio

Como exemplo, vamos definir que um arquivo'teste4.txt' terá como dono 'killer' e como grupo 'users':

$ chown killer.users teste4.txt 

Outros exemplos:

$ chown mrdvs.visits teste5.txt $ chown xxx.users teste6.txt 

Programação em BASH 

A programação da shell (neste caso é a BASH) permite que ocomputador execute uma sequência de comandos de um modoautomático (sem ser o utilizador a efetuar este processo). Ascript contém os nomes dos comandos que vão ser executados(a shell executa esses comandos).

Page 146: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 146/254

 

 

Criação de uma script 

Para criar uma script, é necessário utilizar um editor de textoonde vamos escrever a sequência de comandos que sepretende executar. Considere que o ficheiro fich1 contém oseguinte:

#!/bin/bash # Esta script procura em todos os ficheiros dodirectório actual a # string Sistemas e mostra o conteúdo de #cada ficheiro que contenha essa string. for ficheiro in * do 

if grep –l Sistemas $ficheiro then 

more $ficheiro 

fi 

done

Os comentários começam com # e continuam até ao fim dalinha. Normalmente este símbolo é colocado na primeira colunade cada linha. O comentário #!/bin/bash é um comentárioespecial, onde #! informa o sistema que o argumento que se

segue é o programa que vai ser utilizado para executar esteficheiro (neste caso é /bin/bash). 

Para executar uma script, podemos utilizar duas formasdiferentes. A primeira é invocar a shell com o nome da scriptcomo parâmetro. 

Exemplo:

$ /bin/bash fich1

A outra maneira de executar scripts é escrever apenas o nomeda script que queremos executar. Para isso o ficheiro deve terpermissão de execução. 

Page 147: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 147/254

 

Exemplo:

$ chmod +x fich1 

$ fich1 

Nota: Também é possível obter o mesmo resultado que a scriptanterior em apenas uma linha de comandos. Para isso, pode-seutilizar:

$ more `grep –l Sistemas *`

ou

$ more $(grep –l Sistemas *)

Primeiro é feito o grep –l Sistemas *, e só depois a shellexecuta o comando more sobre o resultado obtido.

Variáveis 

Para utilizar variáveis não é necessário declará-las primeiro. Asvariáveis são criadas quando se utilizam, isto é, quando lhesatribuímos um valor inicial. Por defeito, todas as variáveis sãoconsideradas do tipo string, mesmo aquelas que têm valoresnuméricos. A shell converte a “string numérica” em valoresnuméricos de modo a fazer o que é necessário. Um fator a terem conta é que os nomes das variáveis são case-sensitive. 

Para se ter acesso ao conteúdo de uma variável temos deutilizar o símbolo $ antes do nome da variável e utilizar ocomando echo para mostrar esse conteúdo no monitor. Em

todas as situações que se utilizam as variáveis é necessárioutilizar o símbolo $, excepto quando se trata de atribuir umvalor a essa variável. 

Exemplo:

Page 148: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 148/254

 

$ valor=Sistemas $ echo $valor Sistemas $ valor=”SistemasOperativos I” $ echo $valor Sistemas Operativos I $ valor=4+5$ echo $valor 4+5 $

Quando se utilizam espaços, é necessário utilizar aspas como

delimitador da string. A funcionalidade das variáveis como$valor depende do tipo de aspas que estamos a utilizar. Se avariável está entre aspas (“) (ex:“$valor”), então é substituídapelo valor da variável quando a linha for executada. Se avariável está entre aspas (‘) então não é efetuada nenhumasubstituição. Para remover o significado especial de $ énecessário utilizar antes desse símbolo a barra invertida (\\). 

Também se pode atribuir um valor a uma variável através docomando read. 

Exemplo:

A script: #!/bin/bash valor = ”Sistemas Operativos I” echo$valor echo “$valor” echo \'$valor\' echo \\$valor echoIntroduza texto: read valor echo \'$valor\' foi modificado para$valor

dá como resultado:

Sistemas Operativos I Sistemas Operativos I $valor $valor

Introduza texto: Exame de SO1 $valor foi modificado paraExame de SO1

Variáveis Ambiente 

Quando uma shell script é executada, algumas variáveis são

inicializadas com os valores do seu ambiente. Os nomes dasvariáveis ambiente são em maiúsculas para se destinguiremdas variáveis definidas nas scripts (que normalmente são emminúsculas). 

Variável Ambiente Descrição

Page 149: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 149/254

 

$HOME Diretório home do utilizador 

$PATH Lista de diretórios separados por: 

$PS1 Prompt (normalmente é $) 

$PS2 Prompt secundário (normalmente é >) 

$IFS Input Field Separator. Lista de caracteres utilizada paraseparar palavras. 

$0 Nome da shell script 

$# Número de parâmetros da shell script 

$$ PID (Process IDentification) da shell script 

Parâmetros 

Se a script é invocada com parâmetros, são criadas algumas

variáveis adicionais. Mesmo que não se passem parâmetros, avariável $# continua a existir, mas obviamente com o valor 0. 

As variáveis que permitem trabalhar os parâmetros são: 

Variável Descrição 

$1, $2, $3, … Os parâmetros da script 

$* Lista com todos os parâmetros, numa única variável,separados pelo primeiro caracter da variável ambiente IFS 

$@ Semelhante ao $*, só que não utiliza a variável ambienteIFS 

Exemplo (considere que o nome da script é script_variaveis): 

Page 150: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 150/254

 

 

#!/bin/bash 

valor=“Sistemas”  

echo $valor 

echo “O programa $0 está a ser executado”  

echo “O segundo parâmetro é $2”  

echo “O primeiro parâmetro é $1”  

echo “O terceiro parâmetro é $3”  

echo “A lista de parâmetros é $*”  

Se executar a script, obtém o seguinte:

$ script_variaveis exame sistemas operativos 

Sistemas 

O programa script_variaveis está a ser executado 

O segundo parâmetro é sistemas 

O primeiro parâmetro é exame 

O terceiro parâmetro é operativos 

A lista de parâmetros é exame sistemas operativos

Execução de Comandos 

Para executar comandos utiliza-se $(comando) ou `comando`.O resultado é a saída do respectivo comando (não é o estadodo comando). 

Page 151: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 151/254

 

Considere a script:

#!/bin/bash 

echo A variável PATH é $PATH 

echo Os utilizadores que estão no sistema são $(who)

Esta script mostra o conteúdo da variável PATH, bem como osutilizadores que estão actualmente no sistema. Tenha ematenção que foi necessário executar o comando who. 

O conceito de colocar o resultado da execução de um comandonuma variável é muito poderoso. 

Condições 

Um dos factores essenciais em todas as linguagens deprogramação é a possibilidade de testar condições e fazerdeterminadas acções em função dessas condições. 

O comando test e o comando [ ] 

Estes dois comandos servem para testar condições e sãoequivalentes. 

Para perceber a funcionalidade do comando test, vamosverificar se o ficheiro fich.c existe, e se existe apresentar o seuconteúdo. O comando para verificar essa condição é test –f ,portanto na script teremos:

#!/bin/bash 

if test –f fich.c then 

more fich.c 

fi

Também podemos utilizar o comando [ ] para obter a mesmafuncionalidade:

#!/bin/bash 

if [ –f fich.c ] then 

Page 152: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 152/254

 

more fich.c 

fi

Comparação de strings 

Comparação Resultado 

String Verdade, se a string não é vazia 

String1 = string2 Verdade, se as strings são iguais 

String1 != string2 Verdade, se as strings são diferentes 

-n string Verdade, se a string não é nula 

-z string Verdade, se a string é nula 

Comparações Aritméticas: 

Comparação Resultado 

Expressão1 –eq expressão2 Verdade, se forem iguais 

Expressão1 –ne expressão2 Verdade, se as expressões sãodiferentes 

Expressão1 –gt expressão2 Verdade, se expressão1 >expressão2 

Expressão1 –ge expressão2 Verdade, se expressão1 ³expressão2 

Expressão1 –lt expressão2 Verdade, se expressão1 <expressão2 

Expressão1 –le expressão2 Verdade, se expressão1 £expressão2 

Page 153: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 153/254

 

!expressão Nega a expressão. Retorna Verdade se a expressãoé falsa 

Condições em ficheiros: 

Comparação Resultado 

-d ficheiro Verdade, se o directório existe 

-f ficheiro Verdade, se o ficheiro existe 

-r ficheiro Verdade, se é possível ler o ficheiro 

-s ficheiro Verdade, se o ficheiro tem um tamanho > 0 

-w ficheiro Verdade, se é possível escrever no ficheiro 

-x ficheiro Verdade, se é possível executar o ficheiro 

Estruturas de Controle 

IF - testa o resultado de um comando e executacondicionalmente um grupo de comandos. 

if condição then 

comando1 

comando2 

… 

comandon 

else 

comando1 

Page 154: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 154/254

 

… 

comandon 

fi

Nota: Para utilizar o then na mesma linha do if é necessárioacrescentar ; depois da condição. 

Considere o seguinte exemplo, que faz uma decisão baseadonuma resposta:

#!/bin/bash 

echo “Passou no exame? “ 

read resposta 

if [ $resposta = “sim” ]; then 

echo “Parabens!”  

else 

echo “Não estudou !!!”  

fiELIF - A script anterior tem um problema – aceita qualquerresposta, excepto a resposta sim para escrever Não estudou.Para resolver esta situação podemos utilizar o comando elif,que permite testar uma segunda condição quando o else éexecutado.

#!/bin/bash 

echo “Passou no exame? “ 

read resposta 

if [ $resposta = “sim” ]; then 

echo “Parabéns!”  

elif [ $resposta = “não” ]; then 

Page 155: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 155/254

 

echo “Não estudou !!!”  

else 

echo “Não conheço a resposta $resposta. Introduza sim ou

não!”  

fi

FOR – executa um ciclo um determinado número de vezes (emfunção de um conjunto de valores). Esses valores podem serespecificados na script, ou serem o resultado da expansão decomandos.

for variável in valores do 

comando 1 

… 

comando n 

done

considere o seguinte exemplo:

#!/bin/bash 

for valor in exame de sistemas “SO1 – teste” operativos do 

echo $valor 

done

dá como resultado:

exame 

de 

sistemas 

SO1 – teste 

operativos

Page 156: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 156/254

 

Considere o seguinte exemplo;

#!/bin/bash 

for valor in $(ls so[123].txt) do 

more $valor 

done

Este exemplo mostra o conteúdo dos ficheiros que são oresultado de executar ls so[123].txt, isto é, mostra o conteúdodos ficheiros so1.txt, so2.txt so3.txt se existirem. 

O ciclo for funciona bem quando se trata de situações em quetemos um conjunto de strings. Quando é necessário executar

um grupo de comandos um número variável de vezes, estecomando não é o mais aconselhado. 

Considere a script:

#!/bin/bash 

for valor in 1 2 3 4 5 6 7 8 9 10 do 

echo “Sistemas Operativos”  

done 

Esta script escreve dez vezes \"Sistemas Operativos\".Também obteríamos o mesmo resultado se depois de intivéssemos qualquer valor dez vezes seguidas (ex: a a a a a aa a a a ). 

WHILE - o ciclo while é útil nas situações em que não existe um

número fixo de vezes para executar um determinado grupo decomandos. 

Estrutura do comando while:

while condição do 

comando 1 

Page 157: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 157/254

 

… 

comando n 

done

Considere a script:

#!/bin/bash 

echo \"Introduza um nome: \" 

read nome 

while [ \"$nome\" != \"Sistemas\" ]; do 

echo “Não acertou no nome - tente de novo !”  

read nome 

done

Esta script só termina quando o utilizador introduzir o nomecorrecto. Enquanto introduzir o nome errado, vai ter queintroduzir um novo nome. 

Nota: A utilização de aspas (\") em [ \"$nome\" !=\"Sistemas\" ] permite salvaguardar a situação em que outilizador utiliza o Enter sem introduzir mais nada (nestasituação a condição de teste ficaria [ != \"Sistemas\"], que nãoé uma condição válida). Com a utilização de aspas o problemaé resolvido, pois a condição de teste será [ \"\" != \"Sistemas]. 

Considere a script:

#!/bin/bash 

valor=1 

while [ $valor -le 10 ] do 

echo “Sistemas Operativos”  

valor=$(($valor + 1)) 

Page 158: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 158/254

 

done

Esta script escreve \"Sistemas Operativos\" dez vezes. Paraisso utiliza a variável valor que vai sendo incrementada. 

UNTIL - é semelhante ao ciclo while. A única diferença é que oteste da condição é feito no fim, isto é, o ciclo continua até quea condição seja verdade. 

Estrutura do comando until:

until condição do 

comando 1 

… 

comando n 

done

Considere a script:

#!/bin/bash 

until who | grep \"$1\" >/dev/null do 

sleep 10 

done 

echo *** O utilizador $1 entrou no sistema ! ***

Esta script verifica se um determinado utilizador entrou nosistema, isto é, de 10 em 10 segundos verifica se o utilizador

está no sistema. Quando o utilizador entrar no sistema a scripttermina. 

CASE - permite verificar o conteúdo de uma variável emrelação a vários padrões, executando depois os respectivoscomandos. 

Page 159: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 159/254

 

Estrutura do comando case:

case variável in 

padrão [| padrão …]) comandos;; 

padrão [| padrão …]) comandos;; 

… 

esac

Considere a script:

#!/bin/bash 

echo “Passou no exame? “ 

read resposta 

case \"$resposta\" in 

\"sim\") echo \"Parabéns!\" ;; 

\"não\") echo \"Não estudou !!!\" ;; 

\"s\" ) echo \"Parabéns!\" ;; 

\"n\" ) echo \"Não estudou !!!\" ;; 

* ) echo “Não conheço a resposta $resposta!” ;; 

esac

A script compara o conteúdo de resposta com todos os padrões(quando se verifica um dos padrões o comando case termina aprocura). O asterisco (*) pode ser utilizado para expandir

strings. Neste exemplo, o asterisco faz concordância(matching) de todas as strings, permitindo assim executar umaacção por defeito (quando nenhum dos outros padrões severificou). 

Obtemos a mesma funcionalidade com a script:

#!/bin/bash 

Page 160: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 160/254

 

echo “Passou no exame? “ 

read resposta 

case \"$resposta\" in 

\"sim\" | \"s\" ) echo \"Parabéns!\" ;; 

\"não\" | \"n\" ) echo \"Não estudou !!!\" ;; 

* ) echo “Não conheço a resposta $resposta!” ;; 

esac

Listas de Comandos 

Para executar uma lista de comandos em que só é necessárioexecutar o comando seguinte se o comando anterior foi bemsucedido, faz-se o seguinte:

comando1 && comando2 && comando3 && …

O comando2 só é executado se o comando1 teve sucesso; ocomando3 só é executado se o comando2 teve sucesso, etc. 

Para executar-mos uma série de comandos até que um tenhasucesso, faz-se o seguinte:

comando1 || comando2 || comando3 || …

Se o comando1 tem sucesso, já não é executado mais nenhumcomando da lista. Se o comando1 falhou, então é executado o

comando2; Se o comando2 tem sucesso então termina; Se ocomando2 falhou então é executado o comando3, etc. 

Nota: Para se utilizar um grupo de comandos em situações emque só um comando é permitido (como é o caso das listas decomandos), temos de agrupar esses comandos entre { }.

Page 161: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 161/254

 

 

Listas de Comandos 

Para executar uma lista de comandos em que só é necessárioexecutar o comando seguinte se o comando anterior foi bemsucedido, faz-se o seguinte:

comando1 && comando2 && comando3 && …

O comando2 só é executado se o comando1 teve sucesso; ocomando3 só é executado se o comando2 teve sucesso, etc. 

Para executar-mos uma série de comandos até que um tenha

sucesso, faz-se o seguinte:comando1 || comando2 || comando3 || …

Se o comando1 tem sucesso, já não é executado mais nenhumcomando da lista. Se o comando1 falhou, então é executado ocomando2; Se o comando2 tem sucesso então termina; Se ocomando2 falhou então é executado o comando3, etc. 

Nota: Para se utilizar um grupo de comandos em situações emque só um comando é permitido (como é o caso das listas de

comandos), temos de agrupar esses comandos entre { }.

Listas de Comandos 

Para executar uma lista de comandos em que só é necessárioexecutar o comando seguinte se o comando anterior foi bem

sucedido, faz-se o seguinte:

comando1 && comando2 && comando3 && …

O comando2 só é executado se o comando1 teve sucesso; ocomando3 só é executado se o comando2 teve sucesso, etc. 

Page 162: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 162/254

 

Para executar-mos uma série de comandos até que um tenhasucesso, faz-se o seguinte:

comando1 || comando2 || comando3 || …

Se o comando1 tem sucesso, já não é executado mais nenhumcomando da lista. Se o comando1 falhou, então é executado ocomando2; Se o comando2 tem sucesso então termina; Se ocomando2 falhou então é executado o comando3, etc. 

Nota: Para se utilizar um grupo de comandos em situações emque só um comando é permitido (como é o caso das listas decomandos), temos de agrupar esses comandos entre { }.

Funções 

As funções têm a seguinte estrutura:

nome_da_função () { 

comando1 

… 

comandon 

}

Considere a script:

#!/bin/bash 

escreve () { 

echo \"A função está a ser executada \" 

echo \"Início da script\" 

Page 163: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 163/254

 

escreve 

echo \"Fim da script\"

Embora a definição da função esteja no princípio da script, a

script só começa a executar os comandos que estão depois dadefinição da função. Quando se chama uma função, a shellexecuta-a e depois retorna para a linha seguinte à da função. Énecessário ter em atenção que é necessário definir a funçãoantes de utilizá-la, isto é, o código das funções deve sercolocado no princípio da script. Quando uma função é invocada,os parâmetros da script $*, $@, $#, $1, $2, etc. sãosubstituídos pelos parâmetros da função. Quando a funçãotermina a sua execução, os parâmetros são restaurados. 

Para que a função retorne um valor numérico, é necessárioutilizar o comando return. A única maneira de retornar stringsé utilizar uma variável global, de modo a ser possível utilizá-laquando a função terminar a sua execução. Para declararvariáveis locais à função, utiliza-se a palavra local antes davariável. 

Considere a script:

#!/bin/bash 

texto=\"Variável global\" 

escreve () { 

local texto=\"Variável local\" 

echo \"A função está a ser executada\" 

echo $texto 

echo \"Início da script\" 

echo $texto 

escreve 

echo $texto 

Page 164: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 164/254

 

echo \"Fim da script\" 

A script dá o seguinte resultado:

Início da script Variável global A função está a ser executada

Variável local Variável global Fim da script

Quando não se utiliza o comando return na função, a funçãoretorna o estado do último comando que foi executado. 

Considere a script teste:

#!/bin/bash 

pergunta() { 

echo \"Os parâmetros da função são $*\" 

while true 

echo -n \"sim ou não\" 

read resposta 

case \"$resposta\" in 

s | sim ) return 0;; 

n | não ) return 1;; 

* ) echo \"Responda sim ou não\" 

esac 

done 

echo \"Os parâmetros da script são $*\" 

if pergunta \"O nome é $1 ?\" then 

echo \"Olá $1\" 

else 

Page 165: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 165/254

 

echo \"Engano\" 

fi

Esta script passa parâmetros para a função. A função retorna

valores numéricos. 

Exemplo de utilização da script anterior:

$ teste Orlando Sousa 

Os parâmetros da script são Orlando Sousa 

Os parâmetros da função são O nome é Orlando Sousa ? 

sim ou não 

não 

Engano

Comandos: 

BREAK - é utilizado para saír de um ciclo for, while ou until. 

Exemplo:

#!/bin/bash 

for ficheiro in so* do 

if [ -d \"$ficheiro\" ]; then 

break; 

fi 

done 

echo O primeiro directório com iniciais so é $ficheiro 

Page 166: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 166/254

 

Esta script mostra o nome do primeiro directório com iniciaisso. 

CONTINUE - Avança para a próxima iteração do ciclo for, whileou until. 

Exemplo:

#!/bin/bash 

for valor in so* do 

if [ -d \"$ficheiro\" ]; then 

continue 

fi 

echo $ficheiro 

done

Esta script apenas mostra os nomes de ficheiros que tenhamcomo iniciais so (não mostra os directórios). 

ECHO - mostra o conteúdo de uma string (seguido de newline).Para evitar o newline é necessário utilizar a opção -n. 

EVAL - serve para avaliar argumentos. 

A script:

#!/bin/bash 

valor=5 

x=valor 

y=\'$\'$x 

echo $y 

Page 167: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 167/254

 

dá como resultado $valor.

Mas a script:

#!/bin/bash 

valor=5 

x=valor 

eval y=\'$\'$x 

echo $y 

dá como resultado 5, isto é, dá o valor do valor da variável.

EXPORT - faz que uma variável fique visível, isto é, cria umavariável ambiente. 

Considere as seguintes scripts:

teste2: 

#!/bin/bash 

echo $valor 

echo $resposta 

teste1: 

#!/bin/bash 

valor=\"Variável que não utiliza export\" 

export resposta=\"Variável que utiliza export\" 

teste2 

se executarmos a script teste1, dá: 

Variável que utiliza export

Como a script teste1 chama a script teste2, apenas é visível avariável resposta na script teste2. 

Page 168: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 168/254

 

 

EXPR - avalia argumentos de uma expressão. É normalmenteutilizado para cálculos aritméticos. 

Exemplo:

valor = `expr $valor + 1`

Este exemplo coloca em valor o resultado de executar ocomando expr $valor + 1. 

Expressão --- Descrição

Expressão1 | expressão2 Expressão1, se é diferente de zero;senão expressão2 

Expressão1 & expressão2 Zero, se uma ou ambas asexpressões são zero 

Expressão1 = expressão2 Igualdade 

Expressão1 != expressão2 Diferentes 

Expressão1 > expressão2 

Expressão1 ³ expressão2 

Expressão1 < expressão2 

Expressão1 £ expressão1 

Expressão1 + expressão2 Adição 

Expressão1 - expressão2 Subtracção 

Expressão1 * expressão2 Multiplicação 

Expressão1 / expressão2 Divisão inteira 

Expressão1 % expressão2 Resto da divisão

Nota: Em substituição do comando expr normalmente utiliza-se$((…)) , que é mais eficiente (também se pode utilizar $[…]). 

Page 169: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 169/254

 

 

PRINTF - é utilizado para formatar a saída. 

A sintaxe para este comando é:

printf \"formato da string\" parâmetro1 parâmetro2 …

O formato da string é semelhante ao formato utilizado nalinguagem C, com algumas restrições (Só suporta valoresinteiros, pois a shell faz todas as suas operações sobre valoresinteiros). 

SET - permite configurar as variáveis da shell. É útil como meiode usar campos nos comandos que dão como resultado valoresseparados por espaço. 

Considere a script:

#!/bin/bash 

echo A data é $(date) 

set $(date) 

echo O mês da data é $2

Como o resultado de executar o comando date, dá uma string(ex: Mon Jan 17:22:57 MET 1999), apenas o segundo campo(que contém o mês) é apresentado no segundo echo. 

SHIFT - o comando shift retira um parâmetro aos parâmetrosda script (ex: $2 torna-se o $1, o $3 torna-se o $2, etc). Oshift é utilizado para pesquisar os parâmetros.

#!/bin/bash 

while [ \"$1\" != \"\"]; do 

echo $1 

shift 

Page 170: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 170/254

 

done

Esta script mostra todos os parâmetros introduzidos.

Comandos: 

BREAK - é utilizado para saír de um ciclo for, while ou until. 

Exemplo:

#!/bin/bash 

for ficheiro in so* do 

if [ -d \"$ficheiro\" ]; then 

break; 

fi 

done 

echo O primeiro directório com iniciais so é $ficheiro 

Esta script mostra o nome do primeiro directório com iniciaisso. 

CONTINUE - Avança para a próxima iteração do ciclo for, whileou until. 

Exemplo:

#!/bin/bash 

for valor in so* do 

if [ -d \"$ficheiro\" ]; then 

Page 171: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 171/254

 

continue 

fi 

echo $ficheiro 

done

Esta script apenas mostra os nomes de ficheiros que tenhamcomo iniciais so (não mostra os directórios). 

ECHO - mostra o conteúdo de uma string (seguido de newline).Para evitar o newline é necessário utilizar a opção -n. 

EVAL - serve para avaliar argumentos. 

A script:

#!/bin/bash 

valor=5 

x=valor 

y=\'$\'$x 

echo $y 

dá como resultado $valor.

Mas a script:

#!/bin/bash 

valor=5 

x=valor 

eval y=\'$\'$x 

echo $y 

Page 172: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 172/254

 

dá como resultado 5, isto é, dá o valor do valor da variável.

EXPORT - faz que uma variável fique visível, isto é, cria umavariável ambiente. 

Considere as seguintes scripts:

teste2: 

#!/bin/bash 

echo $valor 

echo $resposta 

teste1: 

#!/bin/bash 

valor=\"Variável que não utiliza export\" 

export resposta=\"Variável que utiliza export\" 

teste2 

se executarmos a script teste1, dá: 

Variável que utiliza export

Como a script teste1 chama a script teste2, apenas é visível avariável resposta na script teste2. 

EXPR - avalia argumentos de uma expressão. É normalmenteutilizado para cálculos aritméticos. 

Exemplo:valor = `expr $valor + 1`

Este exemplo coloca em valor o resultado de executar ocomando expr $valor + 1. 

Page 173: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 173/254

 

Expressão --- Descrição

Expressão1 | expressão2 Expressão1, se é diferente de zero;senão expressão2 

Expressão1 & expressão2 Zero, se uma ou ambas asexpressões são zero 

Expressão1 = expressão2 Igualdade 

Expressão1 != expressão2 Diferentes 

Expressão1 > expressão2 

Expressão1 ³ expressão2 

Expressão1 < expressão2 

Expressão1 £ expressão1 

Expressão1 + expressão2 Adição 

Expressão1 - expressão2 Subtracção 

Expressão1 * expressão2 Multiplicação 

Expressão1 / expressão2 Divisão inteira 

Expressão1 % expressão2 Resto da divisão

Nota: Em substituição do comando expr normalmente utiliza-se$((…)) , que é mais eficiente (também se pode utilizar $[…]). 

PRINTF - é utilizado para formatar a saída. 

A sintaxe para este comando é:printf \"formato da string\" parâmetro1 parâmetro2 …

O formato da string é semelhante ao formato utilizado nalinguagem C, com algumas restrições (Só suporta valoresinteiros, pois a shell faz todas as suas operações sobre valoresinteiros). 

Page 174: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 174/254

 

 

SET - permite configurar as variáveis da shell. É útil como meiode usar campos nos comandos que dão como resultado valoresseparados por espaço. 

Considere a script:

#!/bin/bash 

echo A data é $(date) 

set $(date) 

echo O mês da data é $2

Como o resultado de executar o comando date, dá uma string(ex: Mon Jan 17:22:57 MET 1999), apenas o segundo campo(que contém o mês) é apresentado no segundo echo. 

SHIFT - o comando shift retira um parâmetro aos parâmetrosda script (ex: $2 torna-se o $1, o $3 torna-se o $2, etc). Oshift é utilizado para pesquisar os parâmetros.

#!/bin/bash 

while [ \"$1\" != \"\"]; do 

echo $1 

shift 

done

Esta script mostra todos os parâmetros introduzidos.

Expansão de Parâmetros 

Page 175: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 175/254

 

A expansão de parâmetros é muito útil no manuseio de partesdesses parâmetros. 

Suponha que precisa de uma script que processe o ficheiro1.tmp e o 2.tmp. 

A script que estaria tentado a fazer possivelmente seria:

#!/bin/bash 

for i in 1 2 do 

processa $i.tmp 

done

Esta script não funciona, pois o que a shell está a tentar fazer ésubstituir o valor da variável $i.tmp, que não existe. Paraproteger a expansão da variável é necessário que o i entre { }. 

A script correta é:

#!/bin/bash 

for i in 1 2 do 

processa ${i}.tmp 

done

Em cada iteração o valor de i é substituído por ${i}. 

Expansão de Parâmetros --- Descrição

${parâmetro:-valor} Se parâmetro é nulo então dá como

resultado valor 

${#parâmetro} Tamanho do parâmetro 

${parâmetro%palavra} Do fim, remove a parte mais pequenaque contenha palavra e retorna o resto. 

Page 176: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 176/254

 

${parâmetro%%palavra} Do fim, remove a parte mais longaque contenha palavra e retorna o resto. 

${parâmetro#palavra} Do inicio, remove a parte mais pequenaque contenha palavra e retorna o resto. 

${parâmetro##palavra} Do inicio, remove a parte mais longaque contenha palavra e retorna o resto.

Exemplo:

#!/bin/bash 

echo ${valor:-Vazio} 

valor=Cheio 

echo ${valor:-Vazio} 

valor=/usr/bin/X11/startx 

echo ${valor#*/} 

echo ${valor##*/} 

valor=/usr/local/etc/local/networks 

echo ${valor%local*} 

echo ${valor%%local*}

dá como resultado:

Vazio 

Cheio 

usr/bin/X11/startx 

startx 

 /usr/local/etc 

 /usr/

Page 177: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 177/254

 

A script seguinte muda todos os ficheiros com extensão .txtpara .doc:

#!/bin/bash 

for ficheiro in *.txt do 

mv $ficheiro ${ficheiro%txt}doc 

done

Montando um servidor de E-Mail com o qmail

Uma Introdução

O qmail é um poderoso servidor de e-mail, leve e muitorápido, que foi desenvolvido com o intuito de ser totalmente seguro. Desde sua última versão estável (1.03), o qmail nunca teve nenhum bug comprometedor conhecido. Isso nos faz pensar que ele é muito bom

 para o uso em produção, inclusive porque além de ele ser muito estável, é flexível o bastante para aguentar um tráfego de e-mails muito grande.

O site do qmail é:http://www.qmail.org  

Vamos aprender aqui como montar um servidor de e-mail usando o qmail junto com o vpopmail. O qmail vaitrabalhar com o manuseio dos e-mails, enquanto ovpopmail irá cuidar das contas dos usuários, senhas,informações, quotas, entre outros. Neste tutorial ireiexplicar também como utilizar o vpopmail paraarmazenar as informações de contas em um servidor de banco de dados, que no nosso caso será o MySQL.

1. Instalando e configurando o QMail 

 Neste tutorial, instalaremos o qmail a partir do seucódigo-fonte. Existem pacotes já prontos em RPM,

Page 178: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 178/254

 

 DEB, etc, mas para um completo entendimento ecompatibilidade entre todos os sistemas, usaremosmesmo o código-fonte. A versão que estamos usando éa 1.03, e pode ser obtida no endereço:

http://www.qmail.org/qmail-1.03.tar.gz  1.1. Patches

 Precisaremos também aplicar alguns patches para oQMail antes de instalá-lo no sistema. Você podeinstalar o QMail puro, mas eu recomendo estes patches

 para um aumento de desempenho e recursos. A seguir temos os patchs recomendados junto com suas

descrições:• big-concurrency ( http://www.qmail.org/big-concurrency.patch

 

 ): Este patch faz com que o qmail  possa processar mais de 255 mensagens de uma vez noqueue. Assim se a máquina for boa e com grandevolume de mensagens simultâneas, o servidor poderá

 processá-las mais rapidamente.

qmailqueue ( http://www.qmail.org/qmailqueue- patch

 

 ): Com este patch, o qmail antes de processar qualquer mensagem em seu queue, verifica a variável de ambiente QMAILQUEUE em busca do programa dequeue. Com isso pode-se encaminhar as mensagens

 para um script (qmail-scanner por exemplo) que filtrará estas mensagens. Isso pode ser usado pararepassar a mensagem para filtros de extensões,

 palavras e anti-virus.

• tarpit ( http://www.palomine.net/qmail/tarpit.patch

 

 ):O Tarpit é uma técnica anti-spam que adiciona um

 pequeno tempo de espera (sleep) quando o envio de e-mails passa de um certo limite. Por exemplo, se um

 spammer resolver mandar 1000 mensagens em uma

Page 179: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 179/254

 

conexão só, o qmail com este patch verificará estaação e a cada mensagem que o spammer mandar, você

 pode configurar quanto tempo ele terá que esperar. Então se configurado pra 50 mensagens, quando o

 spammer for mandar a mensagem 51, esperara por exemplo, 5 minutos. E depois pra mensagem 52, mais 5minutos, e por aí vai. Tudo isso configurável.

 Existem outros patches interessantes, que você podequerer usar em seu servidor de e-mail. Abaixo estão asdescrições de alguns que na minha opinião sãointeressantes. Como estou descrevendo-os apenas para

o leitor conhecer mais recursos, não os cobrirei nestetutorial. Cobrirei apenas o três patches anteriores.

• mfcheck ( http://www.qmail.org/qmail-1.03-mfcheck.3.patch

 

 ): Com este patch, o servidor verificano DNS se o domínio do destinatário existe.

 Agora vamos primeiro descompactar o qmail e instalar estes patches. Usaremos neste tutorial diretórios

exemplo. Adapte como quiser.mkdir /root/build cd /root/build tar zpvfx /root/download/qmail-1.03.tar.gz

 patch -p0 < /root/download/big-concurrency.patch patch -p0 < /root/download/qmailqueue.patchcd qmail-1.03

 patch -p0 < /root/download/tarpit.patch

 Pronto. Agora o qmail já está descompactado eaplicamos os três patches como queríamos. Se vocêquiser aplicar algum outro patch, esta é a hora. Se nãoquiser, seguimos em frente.

1.2. Compilando e instalando o qmail 

Page 180: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 180/254

 

 Hora de se preparar para compilar o qmail e instalá-lo. Por padrão, o qmail é instalado no diretório"/var/qmail". Você pode especificar em que diretórioele será instalado editando o arquivo "conf-qmail" 

dentro do diretório em que você descompactou ocódigo-fonte do qmail. E em falar nisso, temos aquialguns arquivos para configurar antes de compilar o

 programa. Aqui vai uma descrição deles:

• conf-users e conf-groups: Aqui estão os arquivosque indicam que usuários serão usados para rodar oqmail. É bom deixar o padrão mesmo, criaremos estes

usuários e grupos logo a seguir.• conf-qmail: Como dito anteriormente, o diretórioonde o qmail irá ser instalado e estará funcional.

 Recomendo deixar este valor como "/var/qmail" mesmo, a não ser que você queira instalar em outrolugar (outra partição de disco por exemplo). Estetutorial irá usar o valor "/var/qmail", se por acasovocê mudou esta configuração, substitua o "/var/qmail" 

 pelo diretório que você configurou durante os passosdeste tutorial. Uma outra boa idéia é mudar este valor  para algo como /var/qmail-algumacoisa paraindetificar esta instalação, e depois fazer um link 

 simbólico como /var/qmail para manter acompatibilidade. Assim você pode compilar váriosqmails diferentes, e apenas mudar o link simbólico

 para alterar a instalação do qmail que você fez.

• conf-spawn: Quantas mensagens poderão ser  processadas de uma vez pelo qmail. Com o patch queaplicamos, o "big-concurrency", pode-se colocar ovalor maior que 255. O próprio patch modificou estevalor para 1000, e até que é um número bom. Mascomo não queremos ter que recompilar o kernel para

Page 181: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 181/254

 

 suportar mais de 509 "file descriptors", colocaremos500. Se seu servidor não tiver tantas mensagens assim,

 pode diminuir (deixar 240). Se tiver mensagem atédemais (e o computador for bom também), pode

aumentar.

• conf-split: Quantos subdiretórios o diretório dequeue do qmail terá. 23 é um bom número, mas sequiser pode aumentar um pouquinho.

 Depois de ajustados os arquivos ao seu gosto, é horade criar os usuários do qmail. Como criar estesusuários está descrito no arquivo "INSTALL.ids", mas

colocarei aqui também para fins didáticos:mkdir /var/qmail 

 groupadd nofilesuseradd -g nofiles -d /var/qmail/alias aliasuseradd -g nofiles -d /var/qmail qmaild useradd -g nofiles -d /var/qmail qmaill useradd -g nofiles -d /var/qmail qmailp

 groupadd qmail useradd -g qmail -d /var/qmail qmailquseradd -g qmail -d /var/qmail qmailr useradd -g qmail -d /var/qmail qmails

 Agora crie um link simbólico para refletir asconfigurações do qmail no diretório /etc/qmail (ficamais bonito). Para fazer isso execute o comando:

mkdir /etc/qmail 

ln -s /etc/qmail /var/qmail/control  Feito isso, agora iremos compilar o qmail:

make setup check 

 Lembre-se de que para compilar os programas no Linux, você deve ter os pacotes de desenvolvimento de

Page 182: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 182/254

 

 sua distribuição. Então você terá que ter elesinstalados no sistema, ou a compilação nunca será

 feita. Em algumas distribuições mais novas (como por exemplo, o Red Hat 9.0), durante a compilação ocorre

um erro com o "errno" indefinido, se isso estiver ocorrendo com você, pegue os patches para os

 programas usados neste tutorial no seguinte endereço:

 ftp://moni.csi.hu/pub/glibc-2.3.1/  

 E aplique os patches como os anteriores antes decompilar. Os arquivos que você precisará são os quetem "programa.errno.patch" como nome de arquivo.

 Depois de compilado e instalado no diretório /var/qmail, é hora de configurar. O qmail contém um script que faz uma configuração rápida. Certifique-seque sua máquina tenha um nome válido no DNS, edigite:

 

./config 

Caso você não tenha um DNS ainda, você pode ir configurando o qmail para ser usado. Tenha em mãos

o hostname e domínio de sua máquina e digite:./config-fast nomedamaquina.dominio

Substitua o nomedamaquina e dominio pelo hostnameda sua máquina. Lembre-se que se isso não for válidono DNS, você precisará ter acesso ao DNS econfigurar este hostname para que o qmail funcionecorretamente.

1.3. Instalando programas adicionais Agora é hora de instalar alguns programas adicionaisque trabalharão junto ao qmail. Estes são: ucspi edaemontools.

Page 183: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 183/254

 

• ucspi-tcp ( http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

 

 ): O ucspi-tcp é um programa feito pelocriador do qmail que substitui o inetd. Ele é usado

 para servir de ponte entre o cliente e o servidor.

• daemontools( http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

 

 ):O daemontools é um pacote com uma série de scripts

 para lidar com servidores (daemons). Ele é usado parao controle dos programas do qmail.

Vamos instalar os dois programas:

cd /root/build tar zpvfx /root/download/ucspi-tcp-0.88.tar.gzcd ucspi-tcp-0.88makemake setup check 

mkdir /packagechmod 1755 /packagecd /packagetar zpvfx /root/download/daemontools-0.76.tar.gzcd admin/daemontools-0.76 

 package/install 

 Pronto. Os dois programas foram instalados com êxito.

1.4. Configurando a inicialização do qmail 

 Agora vamos ter que criar uma série de scripts e procedimentos para a inicialização do qmail. Crie o

arquivo /var/qmail/rc com o seguinte conteúdo:#!/bin/sh

# Using stdout for logging # Using control/defaultdelivery from qmail-local to

Page 184: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 184/254

 

deliver messages by default 

exec env - PATH="/var/qmail/bin:$PATH" \qmail-start "`cat /var/qmail/control/defaultdelivery`" 

 Depois digite os comandos:

chmod 755 /var/qmail/rcmkdir /var/log/qmail 

 Agora precisaremos configurar qual o tipo de caixa demensagem teremos no nosso servidor. Usaremos o

 Maildir, que é o formato preferido para se trabalhar com o qmail. O Maildir faz com que as mensagens

 sejam colocadas separadamente em diretórios,diferentemente do mbox, que é o formato padrão doUNIX. No mbox todas as mensagens ficam em umarquivo só, e quando este arquivo está muito grande,

 pode-se perder um pouco de desempenho. Paraconfigurar o tipo de caixa de mensagem, é só colocar otipo no arquivo "/var/qmail/control/defaultdelivery".Com o comando abaixo, iremos configurar com

 Maildir:echo "./Maildir/" > /var/qmail/control/defaultdelivery

Crie então o arquivo /var/qmail/bin/qmailctl com o seguinte conteúdo:

#!/bin/sh

# description: the qmail MTA

 PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbinexport PATH 

QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild`

Page 185: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 185/254

 

 case "$1" in start)

echo "Starting qmail" 

if svok /service/qmail-send ; then svc -u /service/qmail-send /service/qmail-send/log 

elseecho "qmail-send supervise not running" 

 fiif svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd /service/qmail-smtpd/log 

else

echo "qmail-smtpd supervise not running"  fiif [ -d /var/lock/subsys ]; then

touch /var/lock/subsys/qmail  fi;;

 stop)echo "Stopping qmail..." 

echo " qmail-smtpd"  svc -d /service/qmail-smtpd /service/qmail-smtpd/log echo " qmail-send"  svc -d /service/qmail-send /service/qmail-send/log if [ -f /var/lock/subsys/qmail ]; then

rm /var/lock/subsys/qmail  fi;;

 stat) svstat /service/qmail-send  svstat /service/qmail-send/log  svstat /service/qmail-smtpd  svstat /service/qmail-smtpd/log qmail-qstat ;;

Page 186: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 186/254

 

doqueue|alrm|flush)echo "Flushing timeout table and sending ALRM signal to

qmail-send."  /var/qmail/bin/qmail-tcpok 

 svc -a /service/qmail-send ;;

queue)qmail-qstat qmail-qread ;;

reload|hup)echo "Sending HUP signal to qmail-send." 

 svc -h /service/qmail-send ;; pause)

echo "Pausing qmail-send"  svc -p /service/qmail-send echo "Pausing qmail-smtpd"  svc -p /service/qmail-smtpd ;;

cont)echo "Continuing qmail-send"  svc -c /service/qmail-send echo "Continuing qmail-smtpd"  svc -c /service/qmail-smtpd ;;

restart)echo "Restarting qmail:" echo "* Stopping qmail-smtpd."  svc -d /service/qmail-smtpd /service/qmail-smtpd/log echo "* Sending qmail-send SIGTERM and restarting."  svc -t /service/qmail-send /service/qmail-send/log echo "* Restarting qmail-smtpd."  svc -u /service/qmail-smtpd /service/qmail-smtpd/log ;;

Page 187: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 187/254

 

cdb)tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtpchmod 644 /etc/tcp.smtp.cdbecho "Reloaded /etc/tcp.smtp." 

;;help)cat <<HELP 

 stop -- stops mail service (smtp connections refused, nothing  goes out)

 start -- starts mail service (smtp connection accepted, mail can go out)

 pause -- temporarily stops mail service (connections accepted,

nothing leaves)cont -- continues paused mail service stat -- displays status of mail servicecdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM &restarts it doqueue -- schedules queued messages for immediate deliveryreload -- sends qmail-send HUP, rereading locals and 

virtualdomainsqueue -- shows status of queuealrm -- same as doqueue

 flush -- same as doqueuehup -- same as reload 

 HELP ;;

*)echo "Usage: $0

{start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}" 

exit 1;;

esac

Page 188: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 188/254

 

exit 0

 Este script é o script de controle de inicialização doqmail. Com ele você poderá iniciar o qmail, parar,

reiniciar, entre outros. Depois de criado esse arquivocom o conteúdo acima, utilize os comandos:

chmod 755 /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/sbin

Quando quiser colocar o qmail para ser rodado nainicialização do Linux, faça os ajustes necessários em

 sua distribuição para rodar o comando"/usr/sbin/qmailctl start".

 Agora iremos criar os scripts "supervise" do qmail:

mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log 

 Preencha agora os conteúdos dos arquivos:

 /var/qmail/supervise/qmail-send/run

#!/bin/sh

exec /var/qmail/rc /var/qmail/supervise/qmail-send/log/run

#!/bin/shexec /usr/local/bin/setuidgid qmaill 

 /usr/local/bin/multilog t /var/log/qmail 

 /var/qmail/supervise/qmail-smtpd/run

#!/bin/sh

QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat  /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me`

Page 189: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 189/254

 

 if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z"$MAXSMTPD" -o -z "$LOCAL" ]; then

echo QMAILDUID, NOFILESGID, MAXSMTPD, or 

 LOCAL is unset inecho /var/qmail/supervise/qmail-smtpd/runexit 1

 fi

if [ ! -f /var/qmail/control/rcpthosts ]; thenecho "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll 

create an open relay" exit 1 fi

exec /usr/local/bin/softlimit -m 50000000 \ /usr/local/bin/tcpserver -H -v -R -l "$LOCAL" -x

 /etc/tcp.smtp.cdb -c "$MAXSMTPD" \-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp

 /var/qmail/bin/qmail-smtpd 2>&1 /var/qmail/supervise/qmail-smtpd/log/run

#!/bin/shexec /usr/local/bin/setuidgid qmaill 

 /usr/local/bin/multilog t /var/log/qmail/smtpd 

 Execute os comandos:

echo 20 > /var/qmail/control/concurrencyincoming 

chmod 644 /var/qmail/control/concurrencyincoming chmod 755 /var/qmail/supervise/qmail-send/runchmod 755 /var/qmail/supervise/qmail-send/log/runchmod 755 /var/qmail/supervise/qmail-smtpd/runchmod 755 /var/qmail/supervise/qmail-smtpd/log/runmkdir -p /var/log/qmail/smtpd 

Page 190: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 190/254

 

chown qmaill /var/log/qmail /var/log/qmail/smtpd echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtpln -s /var/qmail/supervise/qmail-send 

 /var/qmail/supervise/qmail-smtpd /service

 Logo após feito isso, o qmail será iniciado pelo sistemae já estará funcionando.

1.5. Configurações adicionais para o qmail 

1.5.1. Relay

Como configurações adicionais, veremos primeiroquem poderá usar seu servidor de e-mails para mandar e-mails pra fora. Isso se chama "relay", e é muito

importante, pois impede que os spammers usem seu servidor de e-mail para mandar spams para e-mails por aí afora. Edite o arquivo /etc/tcp.smtp, nele temosa seguinte linha:

127.:allow,RELAYCLIENT="" 

 Essa linha diz que o IP 127.x.x.x pode utilizar o relayno seu servidor SMTP. Adicione aqui os IPs e/ou faixas

de IPs que poderão utilizar o seu servidor SMTP paraenviar e-mails. Como por exemplo:

192.168.1.:allow,RELAYCLIENT="" 200.165.123.223:allow,RELAYCLIENT="" 

 E por aí vai. Depois salve o arquivo e utilize o seguintecomando para recarregar essa configuração:

qmailctl cdb

1.5.2. Tarpit Quando fomos compilar o qmail, utilizamos o patch"tarpit", que serve para injetar uma quantidade de

 segundos entre certas mensagens (veja a descrição do patch para uma melhor explicação). Agora é a hora de

Page 191: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 191/254

 

configurar esses valores. Existem dois arquivos aosquais teremos que criar para essa configuração:

•  /var/qmail/control/tarpitcount: Quantidade de

mensagens aceitas. Depois que o numero demensagens exceder o valor configurado neste arquivo,o qmail irá esperar X segundos entre cada mensagemadicional. O X segundos está configurado no outroarquivo.

•  /var/qmail/control/tarpitdelay: Quantidade de segundos que o qmail irá esperar entre as mensagens.

 Então vamos usar como exemplo no nosso servidor 30mensagens de limite, e 1 minutos entre cada mensagemadicional:

echo 30 > /var/qmail/control/tarpitcount echo 60 > /var/qmail/control/tarpitdelay

 Mude os valores conforme suas necessidades e gostos.

1.5.3. Outros arquivos de configuração do qmail 

Vá no diretório /var/qmail/control (ou /etc/qmail) everifique os arquivos deste diretório. Eles contém osarquivos de configuração criados pelo comando./config (ou ./config-fast) que foi executado durante ainstalação do qmail. Modifique estes arquivos se você

 precisar, colocando o hostname completo (isso é feito se o ./config deu certo).

2. Instalando o vpopmail 

 Agora para cuidar das contas, iremos usar o vpopmail.O vpopmail pode ser encontrado na URL:

http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz  

 Baixe este arquivo e o descompacte:

 

cd /root/build 

Page 192: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 192/254

 

tar zpvfx /root/download/vpopmail-5.2.1.tar.gz

2.1. Configurando e compilando

 Antes de compilar, temos que saber o que configurar.

 Primeiro crie os usuários do vpopmail no sistema: groupadd vchkpwuseradd vpopmail -g vchkpw -d /mailhome

 Repare que o /mailhome irá ser o diretório HOME dousuário vpopmail. Neste diretório estarãoarmazenados todos os e-mails dos usuários, então

 substitua esse diretório por um diretório que esteja

numa partição grande. É sempre bom você criar uma partição (ou quem sabe colocar outro HD) grande para os e-mails e montar em um diretório. E foi issoque foi usado neste tutorial, uma partição montada nodiretório /mailhome.

 No nosso tutorial iremos usar o servidor MySQL paraarmazenar os dados das contas. A configuração inicial do MySQL não é explicada neste tutorial. Primeiro crieum banco de dados para o vpopmail no seu servidor 

 MySQL. Certifique-se que o servidor esteja rodando eexecute o comando:

mysqladmin -u root -p create vpopmail 

 Depois logue-se como root no seu servidor MySQL ecrie um usuário vpopmail com as permissõesnecessárias para o banco de dados vpopmail:

mysql -u root -p mysql mysql> GRANT ALL PRIVILEGES ON vpopmail.* TOvpopmail@localhost 

-> IDENTIFIED BY 'senhasecreta' WITH GRANT OPTION;

Page 193: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 193/254

 

mysql> FLUSH PRIVILEGES;

Substitua "senhasecreta" pela senha do usuáriovpopmail que você desejar. Veja também se você tem

instalado os pacotes de desenvolvimento do MySQL, pois eles serão necessários na hora de compilar ovpopmail. Agora edite o arquivo vmysql.h e altere as

 seguintes linhas:

 /* Edit to match your set up */ #define MYSQL_UPDATE_SERVER "localhost" #define MYSQL_UPDATE_USER "root" #define MYSQL_UPDATE_PASSWD "secret" 

#define MYSQL_READ_SERVER "localhost" #define MYSQL_READ_USER "root" #define MYSQL_READ_PASSWD "secret" 

 /* End of setup section*/ 

Substitua o "root" e o "secret" para o usuário"vpopmail" e a senha que você escolheu. Depois dissoo vpopmail já estará pronto para utilizar o MySQL

como banco de informações sobre as contas de e-mail.O vpopmail inclui várias configurações na hora dacompilação. Todas estas configurações são passadasao código-fonte do programa através do script ./configure. Vou incluir aqui as descrições de algumasopções interessantes, você poderá escolher quaisopções escolher, ou pode seguir o comando exato queutilizei neste tutorial (que é bom também).

• --enable-learn-passwords: Se a senha do usuárioestiver vazia, da próxima vez que o usuário logar no

 sistema e autenticar, a senha será configuradaautomaticamente com o que ele tentou autenticar.

Page 194: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 194/254

 

• --enable-auth-logging: Faz um log das tentativas deautenticação no servidor de banco de dados MySQL.

• --enable-mysql-logging: Faz um log detalhado das

tentativas de autenticação no servidor MySQL.• --enable-clear-passwd: Além das senhascriptografadas, coloca-se também elas em texto puro.

 É útil para quando o usuário esquece a senha e oadministrador do sistema precisa dela. Mas nãorecomendado.

• --enable-default-domain: O domínio padrão do

 servidor.• --enable-mysql: Utilizar o MySQL ou não. Nestetutorial o utilizamos.

• --enable-many-domains: Se sim, o vpopmail éotimizado para suportar vários dominios. Se não, éotimizado para poucos domínios com muitos e-mails.

• --enable-qmail-ext: Suporte às extensões de e-mail do qmail (recomendado).

• --enable-defaultquota: Qual o limite de espaço quecada usuário pode ter por padrão. Sem essa opção,

 fica sem limite. Você pode configurar isso para cadausuário separadamente depois, mas se quiser estabelecer um padrão, utilize o valor "XS" ou "XC" onde o X é substituido pela quantidade de bytes e

numero de mensagens respectivamente. Por exemplo, o parâmetro "--enable-defaultquota=30000000S,2000C"  significa que o limite padrão dos usuários será 30MBou 2000 mensagens. Leia o README.quotas dentro dodiretório do código-fonte do vpopmail para maisinformações.

Page 195: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 195/254

 

 Então neste tutorial usaremos o comando:

./configure --enable-learn-passwords=y --enable-auth-logging=y \

--enable-clear-passwd=n --enable-valias=y \--enable-mysql-logging=y --enable-mysql=y \--enable-qmail-ext=y --enable-

defaultquota=30000000S,2000C 

Caso o configurador não ache as bibliotecas do MySQL, instale o pacote de desenvolvimento do MySQL (como dito acima) e aponte com o parâmetro"--enable-libdir". Por exemplo: "--enable-

libdir=/usr/include/mysql". Agora é hora de compilar e instalar o vpopmail atravésdos comandos:

makemake install-strip

 Pronto! O vpopmail já está configurado e funcionandono diretório /mailhome (ou o que você escolheu).

 Agora é hora de criarmoso o seu primeiro domínio. Fazemos isso com o comando:

 /mailhome/bin/vadddomain dominio.com.br 

 Digite a senha do postmaster, repita e o domínio estácriado. Agora é só ir adicionando usuários nestedomínio:

 /mailhome/bin/vadduser [email protected] 

(Senha) /mailhome/bin/vadduser [email protected] (Senha)

 /mailhome/bin/vadduser [email protected] (Senha)

 E por aí vai.

Page 196: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 196/254

 

3. Instalando o Courier-IMAP 

 Por enquanto nós configuramos o servidor de e-mail (SMTP) e suas contas. Já dá pra mandar e-mail e tudomais. Mas e pra pegar os e-mails no servidor?

 Precisaremos de um servidor POP e/ou IMAP. Nestetutorial usaremos o Courier-IMAP, que é um servidor 

 POP e IMAP especialmente feito para servidores qmail com o tipo de caixa de mensagem "Maildir". Caso vocênão tenha usado o formato "Maildir" na caixa demensagem, utilize outro servidor como o próprioqmail-pop3d.

O Courier-IMAP pode ser obtido na seguinte URL:

http://prdownloads.sourceforge.net/courier/courier-imap-2.1.1.tar.bz2 

 Baixe este arquivo para o diretório /tmp. Você terá quevirar um usuário comum, pois o Courier-IMAP não

 permite que você compile o programa com o root. Depois descompacte o programa e compile:

 

cd /tmp

tar jpvfx courier-imap-2.1.1.tar.bz2cd courier-imap-2.1.1

 su root -c "cp /mailhome/lib/libvpopmail.a /usr/lib ;chmod 644 /usr/lib/libvpopmail.a" (Senha)./configure --prefix=/usr --sysconfdir=/etc/courier-imapmake

 su root -c "make install-strip; make install-configure"  Agora você terá que decidir quais os serviços que vocêrodará com o Courier-IMAP. Estão disponíveis: IMAP,

 POP3, IMAP sob SSL e POP3 sob SSL. No caso destetutorial, usaremos o IMAP e o POP3. Primeiro logue-

Page 197: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 197/254

 

 se como root e copie o arquivo de inicialização para odiretório /etc/init.d:

cd /tmp/courier-imap-2.1.1cp courier-imap.sysvinit /etc/init.d chmod 755 /etc/init.d/courier-imap

 Depois coloque este script na inicialização do Linux,de acordo com sua distribuição. O comando parainiciar é:

 /etc/init.d/courier-imap start 

 Mas primeiro devemos configurar primeiro. Vá no

diretório "/etc/courier-imap", e edite os arquivos"imapd" e "pop3d", mudando no final de cada arquivo:

 IMAPDSTART=YES (e)

 POP3DSTART=YES 

 Agora você já pode iniciar o courier-imap com ocomando anterior, que os servidores de IMAP e POP3estarão funcionando.

4. Instalando programas adicionaisCerto, temos os serviços básicos para um servidor dee-mail rodar: um servidor SMTP, POP3, um banco dedados com as contas dos usuários. Temos agora queinstalar novos programas e acoplá-los à nossainstalação para melhorar o nosso servidor de e-mail.

 Isso inclui um gerenciador de listas de discussão, filtrode e-mails, anti-virus, e por último uma interface deadministração de contas do vpopmail.4.1. Gerenciador de listas de discussão: ezmlm-idx

O ezmlm-idx é uma versão extendida do ezmlm, que por sua vez é um gerenciador de listas de discussãocriado pelo próprio criador do qmail para funcionar 

Page 198: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 198/254

 

em conjunto com o qmail. O ezmlm é um gerenciador muito bom, e muito usado. Outras alternativas aoezmlm incluem o majordomo, mas no nosso tutorial usaremos o ezmlm-idx. O site oficial do ezmlm-idx é:

http://www.ezmlm.org  Você pode obter a versão 0.40 do ezmlm-idx e a versão0.53 do ezmlm (você vai precisar dos dois), nas

 seguintes URLs:

http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm- patches/ezmlm-idx-0.40.tar.gz http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-

 patches/ezmlm-0.53.tar.gz  Baixe e depois descompacte estes dois arquivos:

 

cd /root/build tar zpvfx /root/download/ezmlm-0.53.tar.gztar zpvfx /root/download/ezmlm-idx-0.40.tar.gzcd ezmlm-0.53

 Agora você vai precisar editar 3 arquivos, que são:

• conf-bin: Diretório onde vão ficar os binários doezmlm. Utilize o /usr/bin

• conf-man: Diretório onde vão ficar as páginas demanual do ezmlm. Utilize o /usr/man

• conf-qmail: Caso você tenha instalado o qmail emalgum lugar quie não seja o /var/qmail, modifique estearquivo, colocando nele o diretório onde você instalou

o qmail. No nosso caso vai ficar como /var/qmail mesmo.

 Depois de editado os arquivos, vamos aplicar o patchdo ezmlm-idx antes de compilar e instalar. Para fazer isso execute os seguintes comandos:

Page 199: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 199/254

 

cp -R /root/build/ezmlm-idx-0.40/* /root/build/ezmlm-0.53(Sobrescreva todos os arquivos se precisar)

 patch < idx.patch

echo `which crontab` > conf-cron(Isso vai colocar o executavel do crontab no arquivoconf-cron)

 E antes de compilar, vamos habilitar o suporte ao MySQL já que na instalação deste tutorial estamosusando o MySQL como banco de dados para a

 gerencia de contas. Edite o arquivo "sub_mysql/conf- sqlcc" e o "sub_mysql/conf-sqlld". O conf-sqlcc aponta para o diretório onde estão os cabeçalhos dedesenvolvimento do MySQL (mais uma vez, você

 precisará ter instalado o pacote de desenvolvimento do MySQL), que geralmente fica em /usr/include/mysql (ou /usr/include). Já o "conf-sqlld" aponta para odiretório onde estão as bibliotecas, que geralmente

 ficam em /usr/lib/mysql (ou /usr/lib). Tente essasopções caso uma ou outra não funcione.

 Depois compile o módulo do MySQL:

make mysql 

 Pronto, vamos agora compilar o programa, as páginasde manual, o suporte à língua Portuguesa do Brasil:

make cleanmakemake manmake pt_BR

 E assim o programa estará totalmente compilado.Como passo final, iremos configurar o servidor 

 MySQL para o ezmlm-idx utilizar. Teremos primeiro

Page 200: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 200/254

 

que criar o nosso banco de dados, o usuário ezmlm edar as permissões:

mysqladmin -u root -p create ezmlmmysql -u root -p mysql 

mysql> GRANT ALL PRIVILEGES ON ezmlm.* TOezmlm@localhost 

-> IDENTIFIED BY 'senhasecreta' WITH GRANT OPTION;mysql> FLUSH PRIVILEGES;

 Depois na linha de comando digite:

./ezmlm-mktab -d list | mysql -uezmlm -psenhasecreta -f ezmlm

 Alguns erros podem ocorrer, dizendo que as tabelasnão existem. Isto é normal, e este comando irá criar essas tabelas para você, e deixar o servidor MySQL

 pronto para o uso do ezmlm-idx. Depois disso é sóinstalar o ezmlm-idx no sistema através do comando:

make setup E assim o ezmlm-idx estará totalmente instalado no seu sistema! :)

4.2. Anti-Virus

Um bom servidor de e-mails sempre tem que ter umanti-virus. Nossa instalação irá suportar umavariedade de anti-virus para sistemas Linuxdisponíveis no mercado, tanto comerciais como livres.O Anti-virus será usado em conjunto com o qmail-

 scanner (Ver próxima seção). Como neste tutorial estamos usando uma solução livre, usaremos oClamAV, que tem sua URL oficial sendo:

http://clamav.elektrapro.com/  

Page 201: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 201/254

 

 Baixe a versão mais nova. Neste tutorial, usaremos o seguinte arquivo:

http://unc.dl.sourceforge.net/sourceforge/clamav/clamav-0.60.tar.gz 

 Baixe este arquivo, descompacte e instale:

 

cd /root/build tar zpvfx /root/download/clamav-0.60.tar.gzcd clamav-0.60

 groupadd clamavuseradd clamav -g clamav -s /dev/null ./configure --prefix=/usr --sysconfdir=/etc

makemake install ldconfig 

 Agora edite o arquivo /etc/clamav.conf e vamosconfigurar. A seguir vai um arquivo de configuraçãoexemplo, com as opções comentadas no próprioarquivo:

# Exemplo de configuração do ClamAV # 

# Arquivo de log para o clamd, muito útil para seavaliar depois o que o# clamav está fazendo.

 LogFile /var/log/clamav.log 

# Tamanho máximo do arquivo de log. Se voce estiver  preocupado com seu# espaço em disco, uns 5MB está bom. Especifique ovalor 0 para deixar # sem limite de tamanho máximo.

 LogFileMaxSize 5M 

Page 202: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 202/254

 

 # Loga a hora para cada mensagem do log 

 LogTime

# Log mais detalhado LogVerbose

# O arquivo PID contendo o identificador do processo para o servidor clamd. PidFile /var/run/clamav/clamd.pid 

# Diretório onde estão os arquivos .db (banco de dados

de virus, entre outros) DataDirectory /usr/share/clamav

# Diretório onde vai ficar o socket local de conexãocom o clamd 

 LocalSocket /var/lib/clamav/clamd 

# Profundidade máxima de diretórios para ser 

 scanneado (segurança) MaxDirectoryRecursion 15

# Suporte adicional para scannear e-mailsScanMail 

# Scannear arquivos compactadosScanArchive

# Tamanho máximo limite para scannear arquivoscompactados.

 ArchiveMaxFileSize 30M 

# Limite máximo de recursividade de arquivoscompactados dentro de

Page 203: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 203/254

 

# arquivos compactados ArchiveMaxRecursion 5

# Número máximo de arquivos scanneados dentro de

um arquivo compactado ArchiveMaxFiles 1000

# Habilitar o suporte ao Clamuko (Scanneamento emtempo real)ClamukoScanOnLine

# Set access mask for Clamuko.

ClamukoScanOnOpenClamukoScanOnCloseClamukoScanOnExec

# Qual o diretório que será scanneado os arquivos.Como estamos usando# num servidor de e-mail, coloque aonde os seus e-mails ficam. No nosso

# caso fica em /mailhomeClamukoIncludePath /mailhome

# Limite do tamanho do arquivo para ser scanneadocom o ClamukoClamukoMaxFileSize 5M 

# Habilitar suporte a arquivos compactados noClamukoClamukoScanArchive

 Depois execute os comandos:

mkdir /var/run/clamavchown clamav.clamav /var/run/clamav -R

 freshclam

Page 204: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 204/254

 

(O freshclam atualiza a base de dados do ClamAV)

 Agora pra ficar mais eficiente, vamos incluir o freshclam no crontab, para que o programa seja

rodado todo dia, verificando por novos bancos dedados com novos virus. Para incluir no crontab,adicione a seguinte linha ao arquivo /etc/crontab:

0 1 * * * root /usr/bin/freshclam

 Agora todo dia à 1 da manhã ele vai chegar se existematualizações no banco de dados de Virus. Caso exista,ele baixa as atualizações automaticamente para você.

 Em seguida crie o script /etc/init.d/clamav (ou oequivalente em sua distribuição) com o seguinteconteúdo:

#!/bin/sh

# description: clamav antivirus

case "$1" in start)echo -n "Iniciando o ClamAV... " 

 /usr/sbin/clamd echo "feito." ;;

 stop)echo -n "Parando o ClamAV... " kill -TERM `cat /var/run/clamav/clamd.pid`echo "feito." ;;

*)echo "Usage: $0 {start|stop}" exit 1;;

Page 205: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 205/254

 

esac

exit 0

 Em seguinda coloque-o na inicialização do sistema(como o script do qmail). Não esqueça de tornar o script executável com o comando:

chmod 755 /etc/init.d/clamav

 Agora execute o clamav para ver se está tudo OK:

 /etc/init.d/clamav start 

4.3. Filtro de e-mails: qmail-scanner 

O qmail-scanner é um programa que atua comointermediador dos e-mails do servidor qmail. Com elevocê pode especificar que mensagens podem passar ounão, a depender de certos critérios. Estes critérios

 podem ser por exemplo: barramento de extensões, scannear em programas externos (anti-virus por exemplo), assunto da mensagem, entre outros. Apesar de seu servidor de e-mail perder um pouco de

desempenho por ter que scannear todas as mensagens,vale muito à pena ter essa medida de segurançaadicional. A URl oficial do programa é:

http://qmail-scanner.sourceforge.net/  

 Baixe a versão mais nova. Neste tutorial, usaremos oarquivo:

http://unc.dl.sourceforge.net/sourceforge/qmail-

 scanner/qmail-scanner-1.20rc3.tgz O qmail-scanner vai fazer uso de um patch do qmail que aplicamos antes. É o qmailqueue-patch. Com ele,

 podemos especificar para o qmail redirecionar todo o fluxo de entrada de mensagens para o qmail-scanner ao invés do qmail-queue, assim o qmail-scanner pode

Page 206: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 206/254

 

 fazer o filtro dos e-mails e repassar para o verdadeiroqmail-queue, que faz a entrega dos e-mails nas caixaslocais.

O qmail-scanner vai precisar de alguns outros programinhas e códigos para satisfazer suasdependências. Estes são:

•  Perl 5.005_03+ e módulos: Time::HiRes, DB_File,Sys::Syslog: http://www.cpan.org  

•  Maildrop 1.3.8+:http://download.sourceforge.net/courier/maildrop-1.6.0.tar.bz2 

• TNEF Unpacker:http://unc.dl.sourceforge.net/sourceforge/tnef/tnef-1.2.1.tar.gz 

 Instale os módulos do Perl com o CPAN (O perl vemem praticamente todas as distribuições):

 

 perl -MCPAN -e shell 

(Configure o CPAN de acordo com as instruções)install Time::HiResinstall DB_Fileinstall Date::Parse

 Para quem não sabe, o CPAN é um repositório decódigos em perl. Com ele você pode instalar "módulo" 

 Perl com a facilidade de um comando. Em termos de facilidade, é bem parecido com o famoso apt :) Os

comandos acima instalam os 3 módulos do Perl requeridos pelo qmail-scanner. Além disso, ele instalatambém outros módulos associados à esses três e quenão estejam no seu sistema.

 Agora vamos instalar o Maildrop:

Page 207: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 207/254

 

cd /root/build tar jpvfx /root/download/maildrop-1.6.0.tar.bz2cd maildrop-1.6.0./configure --prefix=/usr 

makemake install-stripmake install-man

 Pronto! Maildrop instalado, agora é a vez do TNEF:

cd /root/build tar zpvfx /root/download/tnef-1.2.1.tar.gzcd tnef-1.2.1

./configure --prefix=/usr makemake install 

 Pronto! TNEF instalado. Agora vamos voltar ao qmail- scanner... Mas antes! O qmail-scanner rodará comoroot pelo perl, ou seja, ele precisará do perl com suid.Você precisará ter uma instalação do Perl-suid para oqmail-scanner funcionar. Procure pelo pacote do perl-

 suid em sua distribuição. (Por exemplo, no Debianvocê pode digitar apt-get install perl-suid).

cd /root/build tar zpvfx /root/download/qmail-scanner-1.20rc3.tgzcd qmail-scanner-1.20rc3

 groupadd qscand useradd qscand -g qscand -s /dev/null ./configure --install 

O ./condigure irá vasculhar seu sistema pelos programas que ele precisa e por anti-virus disponíveis.Se você fez tudo certo, o resultado que aparecerá natela será parecido com esse:

 Building Qmail-Scanner 1.20rc3...

Page 208: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 208/254

 

 This script will search your system for the virus scanners it knowsabout, and will ensure that all external programsqmail-scanner-queue.pl uses are explicitly pathed for performance

reasons.

 It will then generate qmail-scanner-queue.pl - it is up to you to install it correctly.

Continue? ([Y]/N) Y 

 /usr/bin/uudecode works as expected on system...

 Found tnef on your system! That means we'll be able to decode stupid  M$ attachments :-)

The following binaries and scanners were found on your system:

mimeunpacker=/usr/bin/reformimeuudecode=/usr/bin/uudecode

unzip=/usr/bin/unziptnef=/usr/bin/tnef 

Content/Virus Scanners installed on your System

clamuko=/usr/bin/clamdscan (which means clamscan won't be used as clamdscabetter)

Qmail-Scanner details.

log-details=0 fix-mime=1debug=1notify=sender,adminredundant-scanning=no

Page 209: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 209/254

 

virus-admin=root@hayamalocal-domains='hayama' 

 silent-viruses='klez','bugbear','hybris','yaha','braid','nimda','tanatos','sobig','winevar','p

h','fizzer'  scanners="clamuko_scanner" 

 If that looks correct, I will now generate qmail-scanner-queue.pl  for your system...Continue? ([Y]/N) Y 

Testing suid nature of /usr/bin/suidperl...

 Looks OK... Hit RETURN to create initial directory structure under /var/spool/qmailscan,and install qmail-scanner-queue.pl under /var/qmail/bin: (ENTER)

 perlscanner: generate new DB file from /var/spool/qmailscan/quarantine-attachments.txt 

 perlscanner: total of 9 entries.

 Finished installation of initial directory structure for Qmail-Scanner under /var/spool/qmailscan and qmail-scanner-queue.pl under /var/qmail/bin.

 Finished. Please read README(.html) and then go over the script (/var/qmail/bin/qmail-scanner-queue.pl) to check paths/etc.

"/var/qmail/bin/qmail-scanner-queue.pl -r" should return some well-known virusdefinitions to show that the internal perlscanner component is working.

That's it!

(...)

 Pronto! O qmail-scanner foi instalado no sistema, e seus arquivos de banco de dados e configuração estão

Page 210: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 210/254

 

disponíveis no diretório /var/spool/qmailscan. Agoraaproveite para editar o arquivo"/var/spool/qmailscan/quarantine-attachments.txt" econfigure o filtro de arquivos anexados. Por exemplo,

adicione as seguintes linhas no final do arquivo (Nota:os espaços nas linhas não são espaços, são TABs):

.exe 0 Executable binary

.com 0 Non relocable MSDOS executable binary

.vbs 0 Visual Basic Script 

.vba 0 Visual Basic Application

.shs 0 Shell automation code

.scr 0 Screen Saver 

.bat 0 COMMAND.COM batch file

.btm 0 JP Software fast batch file

.reg 0 Windows Registry file

.msi 0 Executable binary

.msc 0 Executable binary

.chm 0 Compiled HTML help file

.inf 0 Windows INF file

.cpl 0 Control Panel library

.wsf 0 Windows Scripting File.vbe 0 VisualBasic Encoded 

.js 0 JavaScript 

.jse 0 JavaScript Encoded 

.css 0 Cascading Style Sheets

.wsh 0 Windows Scripting Host 

.sct 0 Scriptlet File

.hta 0 HTML Application

.lnk 0 Windows Explorer links.cmd 0 cmd.exe NT batch

.pif 0 Windows Program Information Files

.ade 0 Access Project Extension

.mdb 0 Access Application

.adp 0 Access Project 

Page 211: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 211/254

 

.mde 0 Access MDE Database

.bas 0 Visual Basic Class Module

.msp 0 Windows Installer Patch

.mst 0 Visual Test Source File

.pcd 0 Photo CD Image

.crt 0 Security Certificate

.hlp 0 Windows Help File

.url 0 Internet Shortcut (Uniform Resource Locator).ins 0 Internet Communication Settings.isp 0 Internet Communication Settings.vb 0 Script Script File

.wsc 0 Windows Script Componen.shb 0 Shell Scrap object 

.mp3 0 MPEG Layer 3 Sound 

.mp2 0 MPEG Layer 2 Sound 

Todas as extensões aí listadas serão bloqueadas. Dá pra perceber como funciona, né? Toda vez que vocêmodificar este arquivo, digite o comando:

 /var/qmail/bin/qmail-scanner-queue.pl -g  Agora só falta uma última modificação: falar ao qmail  para usar o qmail-scanner nos seus e-mails. Para issousaremos o recurso do patch qmailqueue, aplicado nainstalação do qmail. Para quem não lembra, este patch

 faz com que o qmail procure pela variável de ambienteQMAILQUEUE, e use o programa contido nessavariável para mandar os e-mails recebidos. Para

configurar essa variável de ambiente, temos que editar o arquivo CDB do qmail, que no nosso caso ficou como sendo o /etc/tcp.smtp. Dei um exemplo na seção doqmail, então o mesmo exemplo será usado aqui abaixo,com as modificações para o qmail-scanner:

127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-

Page 212: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 212/254

 

queue.pl" 192.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-

 scanner-queue.pl" 200.165.123.223:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qm

 scanner-queue.pl"  Assim todo e-mail será passado pro qmail-scanner. Digite o seguinte para recarregar este arquivo:

qmailctl cdb

 Referências:

•  Life With QMail: http://www.lifewithqmail.org  

•  Página do QMail: http://www.qmail.org  

•  Documentações de cada programa :)

 Bom proveito!

Recompilando o kernel do Linux

 A recompilação do kernel tem de ser extremamenteobservada... É nela que você poderá colocar suporte amuitos hardwares, habilitar recursos do kernel (como

 firwall e compartilhamento NAT), entre outras coisas. Muitas distribuições incluem kernels já compilados e prontos para usar, mas é sempre recomendado quevocê compile o seu kernel para otimizá-lo conforme

 suas necessidades, e para aprender também! Vouexplicar aqui, passo-a-passo, como se dá o processo derecompilação do kernel. Lembrando que toda operação

deverá ser feita com o root. Passo 1

 

# cd /usr/src# rm -rf linux# tar zpvfx /diretorio/linux-2.x.x.tar.gz

Page 213: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 213/254

 

# ln -s linux-2.x.x linux# cd linux

O que fizemos aqui foi somente apagar o código do

kernel velho, para instalar um novo. Isso você só faz seestiver compilando um kernel novo que pegou nainternet. Os códigos-fontes do kernel em suas váriasversões podem ser todos encontrados através doendereço ftp://ftp.kernel.org (é preferível que vocêutilize o mirror deste FTP localizado aqui no Brasil,que é ftp://ftp.br.kernel.org 

 

 ). Veja também que euapaguei o kernel antigo (rm -rf linux), se você quiser 

 pode apenas renomear o diretório para outro nome,assim nào perde o código velho.

 Pode acontecer de você pegar kernels compactadoscom .bz2, veja a seção de "Outros comandos" paraobter uma ajuda mais ampla para descompactar isto.

 Alguns arquivos quando descompactados, já criam odiretório 'linux', então não é preciso você ter de fazer olink simbólico (comando 'ln -s linux-2.x.x linux').

 Passo 2# make menuconfig # make dep# make clean# make bzImage# cp /usr/src/linux/arch/i386/boot/bzImage

 /boot/vmlinuz-2.x.x

 No 'make menuconfig', você vai escolher as opções de

 suporte. Esta parte é com você, pois você é que vaiescolher o que quer. Tem muitas e muitas opções quevocê poderá não saber... Você pode ler o help destasopções, ou simplesmente deixá-las como estão.Configuração do kernel é uma coisa que você seacostuma com o tempo, praticando :) O 'make

Page 214: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 214/254

 

menuconfig' gera um menu gráfico no console, você pode substituir este comando por outros, que são:'make config' (modo terminal, sem gráficos, vai

 perguntando opção por opção e não é recomendado) e

'make xconfig' (modo gráfico com janelas, só roda no X-Window).

O 'make dep' cria as dependências que a compilaçãodo kernel vai usar. O 'make clean' apaga arquivos que

 já estão compilados, para poder compilá-los de novo.

O 'make bzImage' vai criar uma imagem do kernel compactada com o bzip2 (que é mais eficiente que o

 gzip). O recomendável é você usar o bzImage, masvocê também pode usar o 'make zImage', que cria umaimagem compactada com gzip, ou pode usar o 'make

 zdisk', que faz a imagem e cria um disco de boot, ou pode usar 'make zlilo', que faz a imagem e reinstala o LILO).

O 'cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz-2.x.x' copia a imagem para o diretório /boot, com o nome de vmlinuz-2.x.x. Substitua o .x.x pela versão do seu kernel. Esta informação será útil quando você for configurar o LILO para bootar comessa nova imagem. Veja a configuração do LILO ou doGRUB também.

 Passo 3

# make modules# make modules_install 

# lilo# reboot 

O 'make modules' cria os módulos que você configurouno 'make menuconfig', e o 'make modules_install' instala estes módulos compilados no diretório

 /lib/modules. O 'lilo' reinstala o LILO, para obter mais

Page 215: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 215/254

 

detalhes, veja sobre a configuração do LILO, e sóutilize este comando se você estive rodando o lilo e nãoo GRUB (geralmente quando se está usando o GRUB,o arquivo "/etc/lilo.conf" não existe ou está vazio. E 

 por último, o 'reboot', que reseta a máquina para que seu kernel novo funcione.

Se você usa GRUB, não se esqueça de alterar oarquivo "/boot/grub/menu.lst" e adicione na opção'kernel' o caminho da sua imagem do kernel recém-criada. No caso do GRUB, não é preciso executar nenhum comando, é só salvar o arquivo que asconfigurações estarão feitas.

 A recompilação do kernel é a única coisa no Linux quenecessita reiniciar a máquina!

 Passo alternativo

 As instruções acima foram para a compilação de umupgrade do kernel. Se você quiser recompilar o kernel 

 somente para adicionar e/ou retirar coisas, você vai aodiretório '/usr/src/linux' e executa o passo 2.

Reparticionamento livre

1. Particionamento

 Esta é uma das mais difíceis tarefas, que impedem econfudem vários iniciantes do Linux! Sem dúvida, estaé a etapa mais difícil de qualquer instalação, todomundo diz que o Linux é dificil de instalar justamente

 por causa disto. Mas pense bem, imagine que umcomputador venha pronto para instalar o Linux, serádifícil? Não, será que nem o Windows, e do jeito que ostipos de instalação estão ficando cada vez mais fáceis...

2. Reparticionamento com o fdisk 

Page 216: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 216/254

 

 Legal, mas vamos aprender a mecher então no fdisk do Linux, que é onde criaremos nossas partições :) Antesde mais nada, fique sabendo que você tem que ter o

 HD com espaco livre (não espaço livre numa partição,

e sim espaço livre para criar uma partição). Tem genteque opta em formatar o HD, mas como não é todomundo que gosta disso, tentem usar o FIPS, quedeixará espaço livre para você criar outras partições,

 sem ter de formatar o HD. Funciona, eu já vi funcionar.

Se você não tiver um sistema DOS/Windows, entãovocê pode usar o programa GNU Parted para fazer o

 particionamento do disco sem ter que perder os dadosdele. Também funciona porque eu já tentei aqui naminha própria máquina. Algumas distribuições atuais

 já incluem na sua instalação uma interface automática para reparticionar o disco com esse programa... Então se for o caso de você usar uma distribuição que tenhaeste recurso, não será necessário você ter que

 particionar seu disco como descrito aqui nesta seção.

 Aqui estão os endereços para os programas dereparticionamento:

• GNU Parted - http://www.gnu.org/software/parted/  •  FIPS - ftp://ftp.debian.org/debian/tools/  

 Antes de tentar qualquer coisa desesperadamente,certifique-se de que sabe o que você vai fazer, e sempre

 pense duas vezes antes de fazer qualquer coisa. Se vocêtem dúvidas em relação a particionamento, e quer ter acerteza que não vai perder nenhum dado, o ideal seriavocê fazer um backup dos seus arquivos. Então vamos,mãos à obra. Você deve estar no simples prompt do

 Linux... Nas instalações você pode ser presenteadocom uma shell, onde você poderá rodar o fdisk. Se você

Page 217: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 217/254

 

tiver numa interface gráfica ou coisa assim,experimente apertar CTRL+ALT+F2, provavelmentevocê irá para o prompt. Primeiro entenda o seguinte:

 /dev/hda - IDE Primária Master  /dev/hdb - IDE Primária Slave /dev/hdc - IDE Secundária Master  /dev/hdd - IDE Secundária Slave

 Fazemos de conta que aqui eu não tenho o Linuxinstalado, e pretendo instalar ele no segundo HD daminha máquina. Tenho 2 HDs, um para o sistemaWindows (/dev/hda) e outro para o Linux (/dev/hdb). Oque eu vou particionar com o fdisk é apenas o segundo

 HD, que é o /dev/hdb, então eu executo o fdisk assim:

 fdisk /dev/hdb

Você irá ser presentiado com um prompt. Neste prompt você poderá digitar algumas letras que vãocorresponder a comandos... Como primeiro comando,vamos ver a mensagem de ajuda. Digite "m", e umamensagem com informações de uso vai aparecer. Os

 seguintes outros comandos estão disponíveis:Comando Ação

a Muda a partição ativa(bootável)

b Edita o disklabel do bsd 

c Muda o sinal decompatibilidade do DOS 

d Deleta uma partição

l  Lista os tipos de partiçõesconhecidas

m Mostra a mensagem de ajuda

n Adiciona uma nova partição

Page 218: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 218/254

 

 p Mostra a tabela de partiçõesatuais

q Sai sem salvar as mudanças

t Muda o tipo de partiçãou

 Muda as unidades deentrada/saída

v Verifica a tabela de partições

w Aplica as alterações e sai do programa

 x Outras opções

Vamos começar a mexer com as opções do fdisk. Comovamos mexer com o o HD, temos que saber primeiro seele está vazio... Para fazer isso você usa o comando"p" para ver a tabela de partições atual:

Command (m for help): p

 Disk /dev/hdb: 64 heads, 63 sectors, 526 cylindersUnits = cylinders of 4032 * 512 bytes

 Device Boot Begin Start End Blocks Id System

 Aqui no caso não apareceu nenhuma listagem de partição, então isto quer dizer que o HD está vazio e pronto para se criar partições! Mas se por exemplo,existisse uma partição já criada neste HD, como

 ficaria? Vejamos:

Command (m for help): p

 Disk /dev/hdb: 64 heads, 63 sectors, 526 cylindersUnits = cylinders of 4032 * 512 bytes

Page 219: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 219/254

 

Device Boot Begin Start End Blocks Id System

 /dev/hdb1 1 1 526 1060384+ bWin95 FAT32

 Aí então apareceu uma partição FAT32, e como eu nãoquero essa coisa, vou deletá-la para deixar o HD sem

 partições! :) Repare que é a partição 1, porque vem onúmero 1 depois de /dev/hdb, ficando /dev/hdb1. Entãoiremos agora deletar a partição 1:

Command (m for help): d  Partition number (1-4): 1

 Pronto, a partição foi deletada. Como eu vou querer instalar o Linux sozinho, crio as partições Linux Nativee Linux Swap. Eu tenho um HD de 1gb, e vou colocar 950MB para o Linux Native e 50MB para Swap:

Command (m for help): nCommand action

e extended  p primary partition (1-4)

 p Partition number (1-4): 1 First cylinder (1-526): 1 Last cylinder or +size or +sizeM or +sizeK ([1]-526):+950M 

Command (m for help): p

 Disk /dev/hdb: 64 heads, 63 sectors, 526 cylindersUnits = cylinders of 4032 * 512 bytes

 Device Boot Begin Start End Blocks Id System

 /dev/hdb1 1 1 483 973696+ 83

Page 220: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 220/254

 

 Linux native

Command (m for help): nCommand action

e extended  p primary partition (1-4)

 p Partition number (1-4): 2 First cylinder (484-526): 484 Last cylinder or +size or +sizeM or +sizeK ([484]-526): 526 

Command (m for help): t  Partition number (1-4): 2 Hex code (type L to list codes): 82Changed system type of partition 2 to 82 (Linux swap)

Command (m for help): p

 Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders

Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id 

System /dev/hdb1 1 1 483 973696+ 83 Linux native /dev/hdb2 484 484 526 86688 82 Linux swap

Command (m for help):

Viu como não é tão difícil? Como último comandoacima, eu primeiro criei duas partições com tamanhosvariados. Uma dessas partições vai ser a swap, entãotenho que mudar o tipo (id) dela... Para isso executei o

Page 221: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 221/254

 

"t" e coloquei o valor 82 para a partição 2 (/dev/hdb2).Como resultado deste processo todo... podemos ver aultima mostragem do comando "p"... Perfeito! Agora

 só precisamos salvar a configuração, e só assim o fdisk 

irá fazer o particionamento de verdade. Para isso use o"w" e boa sorte :)

Com isso seu HD estará preparado para abrigar umadistribuição Linux. Saindo um pouco do fdisk, vamosver agora como funciona o GNU Parted e o FIPS.

 Estes dois programas serão úteis para você não perder os seus queridos dados, como seus vídeos de Anime e

 suas musiquinhas em mp3 :D

3. Reparticionamento com o GNU Parted O GNU Parted é um programa muito bom parareparticionar o seu HD sem perder os dados. Ele é um

 programa totalmente feito para o Linux, ou seja, você só poderá rodá-lo se tiver um Linux. Então você pergunta... Se eu quero particionar o meu HD parainstalar o Linux, como vou fazer isso com esse

 programa?

Sim, existe um jeito bem simples de você usar o GNU  Parted sem ter instalado o Linux em sua máquina. Para fazer isso você precisará de um disquete, e algunsutilitários. Com isso iremos criar um bootdisk que vaiconter o GNU Parted para você usar à vontade! Sevocê já tiver Linux, não precisa criar um bootdisk... :)Você precisará de dois arquivos para criar o bootdisk:

•  Rawrite - ftp://ftp.debian.org/debian/tools/rawrite2.zip •  Imagem do disco -

 ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img  

Page 222: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 222/254

 

O Rawrite é um programa que cria bootdisks a partir de imagens. Então para criar a bootdisk, a imagem(segundo arquivo) é o necessário. Essa imagem contémum Linux bem compacto, com o GNU Parted contido

nele. No DOS, descompacta o Rawrite em um diretórioe coloca a imagem neste mesmo diretório e executa ocomando:

rawrite partboot.img a:

Ou você pode digitar rawrite apenas, e ele vai te pedir a imagem e depois aonde escrever a imagem. Entãovocê coloca os dois parâmetros (partboot.img que é a

origem, e a: que é o destino). Espere um pouco e obootdisk está pronto para ser criado e utilizado. Paracriar este bootdisk no Linux, você só precisará daimagem, então é só utilizar o comando:

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

 Para utilizar o bootdisk, reinicie a máquina, coloque odisquete no driver e espere o boot (o boot por disquetetem de estar habilitado na BIOS claro). Você irá cair 

no prompt do Linux, podendo usar o GNU Parted àvontade. Vou explicar agora como usar o GNU Parted direitinho. Primeiro de tudo, você tem de executar o

 parted em um HD. No exemplo anterior (do fdisk),estávamos usando o /dev/hdb, então aqui vai ser amesma coisa:

 parted /dev/hdb

Você será presenteado com um prompt. Digite print  para obter a tabela de partições atual do seu HD.Vamos usar aqui um exemplo que bate com a maioriados casos:

(parted) print  Disk geometry for /dev/hdb: 0.000-2457.984 megabytes

Page 223: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 223/254

 

 Disk label type: msdos Minor Start End Type Filesystem Flags1 0.031 2457.000 primary FAT boot 

 Aqui eu tenho uma partição de 2.5GB. Os dados fornecidos pelo comando print estão todos em MB... Oque você terá de fazer aqui é redimensionar esta

 partição, para deixar um espaço livre para Linux. Antes de redimensionar certifique-se de que sabe o queestá fazendo, e de que o espaço livre tenha o tamanhoda partição que você quer criar (é meio impossível você criar uma partição sem espaço em discodisponível né? :)). Vamos supor que eu quero criar uma partição de 1.5GB, faço assim:

(parted) resize 1 0.031 1000

O programa irá mecher com seu HD como se estivesseesbagaçando ele todinho, mas o que ele está fazendo éredimensionando a partição, mexendo nos dados echeckando tudo para que se houver algum crash, possa

 se recuperar alguma coisa depois. O comando "resize" 

 já diz tudo, redimensiona a partição. O primeiro parâmetro, o "1" corresponde ao número da partição(Minor), que foi mostrado com o comando "print". O

 segundo e terceiro parâmetro são respectivamente oinício e o fim em Megabytes da partição que vai ser redimensionada, no exemplo, a partição ia de 0 até2500, então diminuímos ela para de 0 até 1000,deixando 1500 Megabytes livres para criar outras

 partições. Feito com sucesso essa modificação databela de partições do HD, saia com o comando "quit",e manuseie normalmente o seu HD com o programa

 fdisk (criação de partições Linux, definições como Linux Native e Swap, etc). Por que usar o fdisk?Questão de gosto :)

Page 224: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 224/254

 

4. Reparticionamento com o FIPS 

Se você não pode usar o fdisk, e não quer usar o GNU  Parted para reparticionar sem perder dados, o FIPS éuma boa alternativa para fazer isso. O FIPS é um

 programa para DOS, então é o oposto ao GNU Parted: só roda em DOS, e não em Linux. O FIPS foi e ainda ébem usado para fazer a tarefa de repartição do HD.

 Mostrarei a seguir os passos básicos para vocêredimensionar uma partição Windows, seguindo omesmo escopo dos exemplos anteriores.

 Antes de mais nada, você terá que desfragmentar o seudisco todo. No Windows e no DOS isto é feito com o

 programa defrag, que move os arquivos para o começodo HD, organizando e deixando o final livre. O FIPS requer que o final do HD fique livre, assim ele podedividir a partição sem mexer com nenhum dado. Outracoisa muito importante: crie um disco de boot doWindows e coloque dentro dele também o fips.exe.

 Então boote com este bootdisk que você criou e executeo fips:

a:\fips.exe

 Depois disso, algumas informações irão ser mostradas,como por exemplo a tabela de partições e osinformações sobre o setor de boot, como no exemplo a

 seguir:

 Partition table:

| | Start | | End | Start |Number of|

 Part.|bootable|Head Cyl. Sector|System|Head Cyl.Sector| Sector |Sectors | MB-----+--------+----------------+------+----------------+--------+---------+----

Page 225: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 225/254

 

1 | yes | 1 0 1| 0Ch| 127 783 63| 63|6330177|30902 | no | 0 0 0| 00h| 0 0 0| 0|0| 0

3 | no | 0 0 0| 00h| 0 0 0| 0|0| 04 | no | 0 0 0| 00h| 0 0 0| 0|0| 0

 Boot sector:

 Bytes per sector: 512

Sectors per cluster: 8 Reserved sectors: 32 Number of FATs: 2 Number of rootdirectory entries: 0 Number of sectors (short): 0 Media descriptor byte: F8hSectors per FAT: 6176 Sectors per track: 63

 Drive heads: 128 Hidden sectors: 63 Number of sectors (long): 6330177  Physical drive number: 80hSignature: 29h

Checking boot sector ... OK Checking FAT ...

 Na mensagem "Checking FAT...", o programa estácheckando o seu sistema de arquivos DOS para ver seele vai poder fazer o redimensionamento da partição.Se por exemplo você não tiver o último cilindro da

 partição livre (isso porque você não deve ter executadoo defrag para colocar tudo no começo), então o

Page 226: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 226/254

 

 programa diz que não pode criar partição e sai. Setudo ocorrer bem, você já poderá especificar qual otamanho para ser redimensionado.

 Escolha o tamanho da sua nova partição movendo asdimensões dos cilindros com os cursores (setas doteclado). Depois de tudo ajeitado conforme as suasnecessidades, aperte enter para continuar. O programairá checkar novamente por cilindros livres e depois vairecalcular os dados da tabela de partições do HD,mostrando as novas configurações. Apertando C agora, ele vai fazer mais verificações e finalmente irá

 perguntar se você deseja continuar. Apertando Y você

confirma, ele cria a nova partição, salva, e sai do programa.

 Esta nova partição criada é uma partição primária DOS, então você terá de ir ao fdisk do Linux (atravésde um bootdisk por exemplo), excluir essa nova

 partição criada e criar novas para o Linux, comodescrito anteriormente. É o mesmo esquema de depoisda redimensionamento da partição com o GNU Parted,

e não deve apresentar muitas dificuldades.5. Ufa!

 Finalmente tudo está criado e pronto para se instalar  Linux. Só para finalizar o assunto de partições, vamos falar sobre os sistemas de arquivos suportados pelosredimensionadores (GNU Parted e FIPS). O FIPS apenas suporta redimensionamento de partições dotipo DOS (fat), sendo impossível dividir uma partição

 Linux (ext2). Já o GNU Parted suporta partições DOS (fat) e Linux (swap e ext2). No Linux também é possível usar o sistema de arquivos ReiserFS, e pararedimensionar este tipo de partição, há um utilitário

 próprio chamado reiserfs resizer, que vem junto com o pacote ReiserFS. Se você tiver uma partição ReiserFS 

Page 227: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 227/254

 

o pacote pode ser obtido através do endereço:http://devlinux.com/projects/reiserfs.

 E qualquer dúvida sobre o partições, e o uso de destes programas, você deve recorrer à algumasdocumentações disponíveis:

•  Partition mini-HOWTO:http://www.linuxdoc.org/HOWTO/mini/Partition.html  • GNU Parted User Guide:http://www.gnu.org/software/parted/USER  •  Manpage do fdisk: man fdisk •  Documentação do FIPS (vem incluso com o

 fips20.zip)

Gerando relatórios do Squid com o SARG

O SARG (Squid Analysis Report Generator) é uma ferramenta muito boa desenvolvida por um brasileiroque permite à você ver para "onde" seus usuários estãoindo na Internet através da análise do arquivo de log 

"access.log" do famoso proxy Squid. O poder da ferramenta é incrível, ele pode dizer para você quaisusuários acessaram quais sites, em que horas, quantosbytes foram baixados, quantas conexões foram feitas,relatórios de sites mais acessados, usuários que maisacessam, relatório de sites negados, falha deautenticação, entre outros. A gerência que você podeobter com isso é muito boa, principalmente para asempresas que querem economizar o uso da Internet.

Vamos aqui instalar e configurar o SARG para ele gerar relatórios diários de acesso do Squid. Para isso precisaremos de um Squid já configurado e rodando (oque não vou cobrir neste tutorial em si), que gere oslogs de acesso no arquivo access.log. Se você

Page 228: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 228/254

 

desconhece isso, vá ao arquivo de configuração doSquid e veja se existe a linha abaixo. Se não existir,adicione:

cache_access_log /var/log/squid/access.log 

Geralmente o arquivo de configuração do Squid estáem "/etc/squid/squid.conf". A linha acima especificaque o arquivo de log deverá estar em"/var/log/squid/access.log", lembre-se disso para

 posteriormente informarmos ao SARG. Se você teveque adicionar essa linha no Squid, reinicie-o (ou de um'reload' no serviço) para que as mudanças sejam

efetivadas. Agora vamos ao que interessa. Você precisará baixar oSARG através do endereço:

• SARG - http://web.onda.com.br/orso/ 

 No caso deste tutorial, peguei o codigo-fonte da versão1.2.2. Você poderá notar também que há links para

 pacotes pré-compilados, e caso você tenha uma

distribuição suportada, você pode pegar os pacotes einstalar através do gerenciador de pacotes. Mas como

 peguei o código-fonte, vamos compilar o programa:

# tar zpfx sarg-1.2.2.tar.gz# cd sarg-1.2.2# ./configure --enable-sysconfdir=/etc/sarg 

[...configurando a compilação...]

# make

[...compilando...]

# make install 

Page 229: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 229/254

 

 Fiz o procedimento como root porque quis, na verdadeo root só é requerido no passo "make install", porqueele instala o programa "sarg" no /usr/bin e o diretóriode configuração em "/etc/sarg". Isso tudo pode ser 

escolhido através do comando "./configure", e paravocê saber de suas opções, digite "./configure --help".

 Agora que o programa foi compilado e instalado, precisaremos configurar para ele rodar. Escolhemosna compilação o diretório /etc/sarg para armazenar osarquivos de configuração, então vamos agoratrabalhar nele.

# pwd  /etc/sarg # lsexclude_codes languages/ sarg.conf 

Veja quais os arquivos padrões que ele cria. Comonossa instalação vai ser um pouco mais complexa,teremos de criar alguns arquivos mais, e organizar os

 já existentes:

# mv sarg.conf default.conf # touch exclude.hosts# touch exclude.strings# touch exclude.users# lsdefault.conf exclude.hosts exclude.usersexclude_codes exclude.strings languages/ 

Uma breve explicação sobre os arquivos que criamos:

• exclude.hosts - Aqui cada linha terá umdomínio/URL que não será mostrada no relatório. Útil 

 para você colocar, por exemplos, endereços dedownload da Intranet que passam pelo Squid, mas não

 gastam banda de Internet nenhuma.

Page 230: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 230/254

 

• exclude.strings - Se alguma linha do arquivo de log conter uma das strings deste arquivo (cada string por linha), esta linha do log será ignorada do relatório.Com isso você pode filtrar qualquer coisa do relatório.• exclude.users - Os usuários que estiverem nestearquivo (separados por linha) não serão incluídos norelatório.

 Agora vamos ter que criar um arquivo de configuração para o SARG. Como eu disse anteriormente, estearquivo de configuração será para um relatório diário.Colocaremos essa configuração no arquivo

"/etc/sarg/sarg-dia.conf". Abaixo segue um arquivo deconfiguração comentado, para posterior análise:

# Relatório Squid por: Dia

# Língua Utilizada, coloquei em inglês aqui, mas serátudo em português# do Brasil, veja o porquê depois.language English

# Arquivo de LOG do Squid, lembra? Na suaconfiguração do Squid tem# falando onde se encontra este arquivo.access_log /var/log/squid/access.log 

# Título da página HTMLtitle "Relatório Diário do Proxy" 

# --- Visual ---# Aqui tem várias variáveis que você pode mudar paradeixar o# visual do relatório (cores, fontes, etc) de acordo como que

Page 231: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 231/254

 

# você quiser. Aqui estou usando os valores padrões. font_face Arial header_color darkblueheader_bgcolor blanchedalmond 

header_font_size -1background_color whitetext_color black text_bgcolor beigetitle_color green#--- Fim do Visual ---

# Diretório Temporário

temporary_dir /tmp

# Diretório de Saída para as página de relatório, ou seja,# onde o relatório vai ficar para consulta via umnavegador.# "Geralmente" esse diretório tem que estar dentro doroot do seu

# servidor Web :Doutput_dir /var/www/html/squid-report/dia

# Qual critério de ordem para a seção "TopUser?" USER/CONNECT/BYTES/TIME # Isso irá organizar o relatório na seção de TopUsers,colocando os usuários# que mais baixaram bytes primeiro.topuser_sort_field BYTES reverse

# Qual critério de ordem para a seção "User"?SITE/CONNECT/BYTES/TIME # Isso irá organizar a seção de usuários da mesma

 forma que o item anterior.user_sort_field BYTES reverse

Page 232: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 232/254

 

 # Arquivo com usuários que não devem estar nosrelatóriosexclude_users /etc/sarg/exclude.users

# Arquivo com hosts que não devem estar nosrelatóriosexclude_hosts /etc/sarg/exclude.hosts

# Formato da data (e=dd/mm/yy, u=mm/dd/yy,w=yy/ww)date_format e

# Limite de logs até os antigos serem removidos,quando houver mais# de N relatórios, o mais antigo é automaticamenteremovido. Aqui# estamos indicando para nunca apagar nada.lastlog 0

# Remover arquivos temporários após o uso?remove_temp_files yes

# Gerar o index.html? (only = gera só o index.html  principal)index yes

# Sobrescrever o relatório se já existe?overwrite_report yes

# O que fazer com registros sem usuário?(ignore/ip/everybody)records_without_userid ignore

# Usar vírgula ao invés de ponto?

Page 233: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 233/254

 

use_comma no

# Qual a quantidade de sites mais visitados à listar?topsites_num 100

# Qual critério de ordem para o topsites?CONNECT/BYTES A/D# Aqui diz para ordenar os sites mais acessados por utilização de banda,# em forma decrescente.topsites_sort_order BYTES D

# Arquivo de códigos HTTP para serem ignorados norelatórioexclude_codes /etc/sarg/exclude_codes

# Tempo de checkagemmax_elapsed 28800000

# -- Tipo de Relatorio a ser gerado --

# + topsites - Mostra o site, conexão e bytes# + sites_users - Mostra que usuários estavamacessando um site# + users_sites - Mostra sites acessados pelousuário# + date_time - Mostra quantidade de bytesusados por dia e hora# + denied - Mostra todos os sites negadoscom URL completa# + auth_failures - Mostra falhas de autentificaçãoreport_typie topsites users_sites sites_users date_timedenied auth_failures site_user_time_date

# Exibir URLs completas? (Não recomendado)long_url no

Page 234: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 234/254

 

 # Se alguma linha do access.log conter uma das

 strings, será ignoradaexclude_string /etc/sarg/exclude.strings

# Mostrar mensagem de sucesso na geração dorelatório no fim?

 show_successful_message no

# Campos para a seçao topuserstopuser_fields NUM DATE_TIME USERID CONNECT 

 BYTES %BYTES IN-CACHE-OUT USED_TIME 

 MILISEC %TIME TOTAL AVERAGE 

# Quantidade de usuários para listar no relatóriotopsitestopuser_num 0

O arquivo de configuração em si já explica asconfigurações para você alterar. Mas também há maisopções disponíveis no programa, você pode ver 

explicações sobre estas novas configurações noarquivo padrão de configuração, que deixamos como"/etc/sarg/default.conf".

Sobre a língua utilizada, eu verifiquei um erro queaconteceu comigo, então fiz uma solução simples erápida pra isso. O que acontece é que mesmo mudandoa variável language, o programa fica gerandorelatórios em Inglês. Se acontecer isso com você, faça

o seguinte:# cd /etc/sarg/languages# mv English English.old # ln -s Portuguese English

Page 235: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 235/254

 

O que fiz aqui foi fazer um link simbólico do English para o Portuguese, para que o programa pegue oconteúdo do arquivo Portuguese e não do Englishoriginal. Repare que eu também fiz um backup do

arquivo English, e lembre-se sempre disso: faça sempre backups! Tente nunca apagar algo.

 Existe também outro erro em relação à isto, só que esteé mais sério. O arquivo de tradução "Portuguese" estáincompleto, e por isso ele não gera os links para osrelatórios de falhas de autenticação e de sites maisacessados. Para consertar isso, edite o arquivo"/etc/sarg/languages/Portuguese" e adicione as

 seguintes linhas no final do arquivo:"Negado" "Topsites" 

 Assim a tradução não irá faltar, e os links estarãobonitinhos no lugar :) Mas agora falta rodar o

 programa para gerar o nosso relatório! Vamos supor que hoje seja o dia 05/02/2003 (epa, essa é a data em

que estou escrevendo isso :P) e você queira gerar oque até agora acessaram no seu proxy. Execute isto:

# /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d 05/02/2003-05/02/2003

 E espere... Dependendo da quantidade de acessos ao seu proxy, e o tamanho do arquivo de log, o processo poderá demorar. Quando terminar, acesse o diretórioque você configurou o "output" no seu servidor Web

 para ver o relatório na íntegra. Mas e agora, teremosque ficar rodando este comando todo dia pra ficar 

 gerando? Não! :P Para isso que serve o crontab,vamos configurá-lo para rodar este comando todo diaàs 01:01 da manhã.

Page 236: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 236/254

 

 Nota: Várias distribuições já vem com um crontabdiário configurado. Ou seja, todos os arquivosexecutáveis que estiverem dentro do diretório"/etc/cron.daily" serão executados em um certo horário

(geralmente 4 da manhã de todo dia).Se sua distribuição tiver este diretório, crie o arquivo"/etc/cron.daily/sarg-dia". Caso ela não tenha, crie umarquivo chamado "/usr/local/bin/sarg-dia". Coloque o

 seguinte conteúdo em um desses arquivos:

#!/bin/bash

 HOJE=$(date --date "1 day ago" +%d/%m/%Y)

 /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d $HOJE-$HOJE exit 0

Se o seu caso foi de criar o arquivo"/usr/local/bin/sarg-dia", então você terá queconfigurar também o crontab para rodar este

 programa às 01:01 da manhã como dissemos. Adicionea seguinte linha no arquivo "/etc/crontab":

01 1 * * * root /usr/local/bin/sarg-dia

 E não se esqueça de dar permissão de executável parao script que criamos:

# chmod +x /usr/local/bin/sarg-dia(ou)

# chmod +x /etc/cron.daily/sarg-dia Pronto. Com isso o crontab irá rodar o nosso script todo dia de madrugada. Para quem não entendeu o

 script, ele primeiro pega a data de 1 dia antes e colocano formato DIA/MES/ANO, como queríamos para

Page 237: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 237/254

 

 passar pro SARG, então ele chama e gera o relatóriodo dia anterior... Legal não?

 Para cada dia, o SARG gera um diretório diferente,especificado por data. Experimente gerar os relatóriose verificar no diretório de saída (output), vai aparecer algo como:

# ls01Feb2003-01Feb2003 03Feb2003-03Feb2003index.html 02Feb2003-02Feb2003 04Feb2003-04Feb2003

 Pronto! Você já pode ser um usuário feliz deste

excelente gerador de relatórios :) Se você entendeudireitinho este tutorial, verá que é fácil fazer tambémrelatórios semanais e mensais através dos scripts ecrontab. Mas aí vai de exercício pra você.

 Aviso: Os relatórios geram muitas páginas, edependendo do relatório, pode gastar muito e muitoespaço em disco, então tome cuidado. Por exemplo,aqui o dia 03 de Fevereiro deu 103MB de relatório.

 Mas ao compactar este diretório para .tar.bz2,consegui reduzir para 1.2MB :) Faça os relatórios,compacte-os, vá juntando e gravando em um CD,assim você poderá ter um histórico completo de quemacessou o que durante uma certa época. Boa sorte!

Montando estatísticas com o Webalizer

1. Introdução

O Webalizer é uma poderosa ferramenta escrita em C que analisa os logs do seu servidor de páginas Apachee gera páginas de estatísticas completa, incluindo oscorrespondetes gráficos. Por ser escrita em C, possuiuma velocidade fantástica, analisando milhares de

Page 238: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 238/254

 

linhas de log em segundos. Retirado do seu site: "Emuma máquina Pentium 200, mais de 10 mil linhas

 podem ser processadas em 1 segundo, e um arquivo de40MB sendo alisado em 15 segundos (mais de 150.000

linhas)." Então dá para perceber que ele é bem rápidoné?

 Além disso, ele suporta diferentes tipos de arquivos delog, incluindo o formato Comum do Apache, o FormatoCombinado, e suporte aos formatos de log do wu-ftpd (xferlog) e do squid. Está disponíveis em diversaslínguas, incluindo o Português do Brasil. Além de ser Software Livre, claro. Só vemos vantagens neste

 programa, e é para isso que criei este tutorial, paraajudar a quem precisar usá-lo para montar estatísticasde seu servidor.

2. Download e Instalação

O Download do código-fonte do programa pode ser  feito através do endereço:

http://www.mrunix.net/webalizer/download.html 

(Código-fonte e alguns binários)http://www.megaloman.com/~hany/RPM/webalizer.html (Pacotes RPM)

Ou se você preferir, e sua distribuição suportar, utilizeum "apt-get install webalizer" para instalar o pacote.

Se você pegou o código-fonte e não um pacote já pronto (eu recomendo para organização pegar um pacote RPM/DEB já pronto, ou utilizar o apt-get),

então execute os seguintes comandos para compilar ocódigo-fonte:

./configuremakemake install 

Page 239: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 239/254

 

 Assim o programa será instalado no seu sistema. Por  padrão, se você não especificar as opções através do./configure, ele vai instalar os arquivos dentro dodiretório /usr/local (os binários no /usr/local/bin,

configuração em /usr/local/etc, entre outros), então eurecomendo você especificar as opções de diretório deinstalação (--prefix) no ./configure. Para saber asopções disponíveis para compilação, utilize o comando"./configure --help".

3. Configuração

 Agora teremos que configurar o webalizer, criando umarquivo de configuração. Para cada estatística de site,é necessário um arquivo de configuração. Então

 primeiro crie um diretório chamado /etc/webalizer,onde você colocará todos os arquivos de configuraçãonecessários.

Colocarei aqui um exemplo de um arquivo deconfiguração comentado, para posterior análise,chamado de principal.conf:

# Arquivo exemplo de configuração do Webalizer # nome do usuario(xxx xxxxxx...),[email protected] # 

# Arquivo de Log do Apache, ou seja, onde fica oaccess_log do dominio

 LogFile /var/www/dominios/www.dominio.com.br/logs/access_l og 

# Tipo de arquivo de log, no nosso caso estamosusando o formato combinado# do Apache

 LogType clf 

Page 240: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 240/254

 

 # Diretório à ser gerado as estatísticas, ou seja, ondevai se encontrar # a página onde ficarão todas as estatísticas para a

visualização através# de um navegador.OutputDir 

 /var/www/dominios/stats.dominio.com.br/html/principal 

# Modo incremental? Isso significa que ao invés deestar gerando apenas

# as estatísticas do log atual do Apache, incrementar novas informações# do log na página. Essa opção serve para aqueles quequerem manter todas# as estatísticas e estar sempre resetando os logs paranão deixar eles# absurdamente grandes. Bom para sites com muitosacessos.

 Incremental yes# Título da página

 ReportTitle Estatísticas de acesso para:

# Nome do host  HostName www.dominio.com.br 

# Tipos a ser considerados como páginas peloanalizer; os que não tiverem# esta extensão, não serão consideradas páginasvisualizadas pelos# navegadores.

 PageType htm*

Page 241: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 241/254

 

 PageType cgi PageType php

# Psit! Não faça output nenhum! Pois assim poderemos

rodar o processo# no crontab sem ter que ficar recebendo avisos!Quiet yes

 ReallyQuiet yes

# Quantidades de "Top Sites" a serem mostrados na página principal. Aqui# mostra a quantidade de informações para serem

mostradas na página.TopSites 30TopKSites 30TopURLs 30TopKURLs 30TopReferrers 30TopAgents 15TopCountries 30

TopEntry 10TopExit 10TopSearch 20TopUsers 20

# Gerar página com todas as entrys (contrario dos"Top"), ou seja, além# da página principal, o webalizer também gera uma

 página separada para# cada tipo de acesso, com *todas* as informações, enão apenas com as# "mais acessadas", ou coisas do tipo.

 AllSites yes AllURLs yes AllReferrers yes

Page 242: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 242/254

 

 AllAgents yes AllSearchStr yes AllUsers yes

# Esconde imagens dos relatórios, ou seja, dispensa asimagens para que# elas não apareçam no relatório e não atrapalhem.

 Assim o relatório não# gera "a página mais acessada", sendo que aponta

 para uma imagem. HideURL *.gif  HideURL *.GIF 

 HideURL *.jpg  HideURL *.JPG HideURL *.png  HideURL *.PNG HideURL *.ra

# Grupos para a identificação dos navegadores, para ser mostrado na

# página de relatórios dos navegadores usados pelosvisitantes.GroupAgent MSIE Microsoft Internet 

 Explorer  HideAgent MSIE GroupAgent Mozilla Netscape/Mozilla

 HideAgent MozillaGroupAgent Lynx* Lynx

 HideAgent Lynx*

# Tipos de mecanismos de busca, para saber que foraos mecanismos# de buscas que referenciaram a página.SearchEngine yahoo.com p=SearchEngine altavista.com q=

Page 243: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 243/254

 

SearchEngine google.com q=SearchEngine eureka.com q=SearchEngine lycos.com query=SearchEngine hotbot.com MT=

SearchEngine msn.com MT=SearchEngine infoseek.com qt=SearchEngine webcrawler searchText=SearchEngine excite search=SearchEngine netscape.com search=SearchEngine mamma.com query=SearchEngine alltheweb.com query=SearchEngine northernlight.com qr=

 Há também as tags HTMLBody e HTMLEnd, queatravés delas, você pode criar "templates" para suas

 páginas de estatísticas. Este exemplo acima foi umexemplo bem prático, completo e ao mesmo tempo

 simples. Ele não faz o uso de todas as opçõesdisponíveis no Webalizer, mas atende as necessidadesbásicas da maioria dos administradores de páginas. Sevocê quiser todas as opções, experimente ver o arquivo

de exemplo que vem junto com o pacote do webalizer,no caso o arquivo webalizer.conf, localizado nodiretório de configuração do webalizer.

4. Rodando o webalizer 

 Agora vamos gerar os relatórios a partir de nossaconfiguração anterior. Lembrando que o arquivo deconfiguração que criamos anteriormente é

 /etc/webalizer/principal.conf:

 /usr/local/bin/webalizer -c /etc/webalizer/principal.conf (supondo que o executável foi instalado no

 /usr/local/bin, pois pode ser /usr/bin também)

O parâmetro -c diz para usar um certo arquivo deconfiguração, e é o que fizemos. Você notará que o

Page 244: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 244/254

 

 programa é extremamente rápido, e é só assim quevocê vai acreditar o quão ele é rápido :) Entãoverifique no diretório

 /var/www/dominios/stats.dominio.com.br/html/principa

l que os arquivos de estatísticas estão lá, e que se vocêacessar com um navegador, verá todas as estatísticasdo seu site, com bons gráficos e ótima qualidade deinformação.

5. Programando a geração das estatísticas

Convém lembrar que o webalizer só gera asestatísticas quando você mandar, ou seja, ele tem que

 ficar rodando de tempos em tempos para gerar estatísticas atualizadas dos logs do Apache.Geralmente se gera as estatísticas uma ou duas vezes

 por dia, e para esse tipo de necessidade, usaremos onosso velho amigo crond.

Vamos ter como exemplo rodar o webalizer duas vezes por dia, uma vez ao meio-dia e outra vez à meia-noite. Para fazer isso no exemplo deste tutorial, é só colocar a seguinte linha no /etc/crontab:

01 12,00 * * * root /usr/local/bin/webalizer -c /etc/webalizer/principal.conf 

 Assim, o comando /usr/local/bin/webalizer -c /etc/webalizer/principal.conf será executado pelousuário root às 12:01 e 00:01.

6. Finalização

 E é isso! Para provedores, seria bom criar arquivos delog separados para cada domínio virtual, ou diretório,assim o webalizer poderia gerar estatísticas para cadaum destes arquivos de log.

 Instalando o Webmin

Page 245: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 245/254

 

O Webmin é um gerenciador de sistema baseado numainterface web. Com este utilitário você podeadministrar suas máquinas pela rede através de umnavegador comum. Ele é bem completo e tem módulos

 para configuração de várias e várias coisas. É umamão e tanta para os administradores de sistema.

 Algumas das tarefas que você pode fazer com oWebmin atualmente:

•  Mudar senhas, configurar o crontab, configurar  scripts de inicialização, backup, configuração do pam,quotas, gerência de processos, pacotes, usuários e

 grupos.• Configura e administrar servidores majordomo, cvs,

 sendmail, qmail, postfix, fetchmail, jabber, samba, postgresql, proftpd, ssh, squid, wu-ftpd, apache, dhcp,dns bind, MySQL.• Configura rede, exportações NFS, NIS, PPP, túneisSSL.•  Adminstração de impressoras, gerenciadores de

boot, cd-roms, raid, partições, lvm, clustering.•  Além de outras coisas como shell via web, gerenciador de arquivos, módulos perl, etc.

 Então dá pra ver que o sistema é bem completo né? E ele é também amplamente usado. Vamos através destetutorial saber como instalar e configurar de um modobem prático e direto.

 Download e Instalação

O download do Webmin pode ser feito a partir doendereço:

• Webmin - http://www.webmin.com.

Page 246: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 246/254

 

 A versão que utilizei neste tutorial foi a versão 1.060,em formato .tar.gz. Se você usa uma distribuição que

 suporte o formato .rpm, seria melhor você utilizar estetipo de formato já que é compatível com o resto do

 sistema. Mas aqui neste tutorial iremos a partir docódigo-fonte:

# tar zpfx webmin-1.060.tar.gz# mv webmin-1.060 /usr # cd /usr # ln -s webmin-1.060 webmin

Como você pôde ver nos comandos acima, eu

descompactei num diretório qualquer o arquivo .tar.gze depois movi o conteúdo para o diretório "/usr". Vocêescolhe este diretório, e eu escolhei o "/usr". Depois euapenas fiz um link simbólico chamado "webmin" parao diretório "webmin-1.060", para que quando euatualizar, eu possa manter a versão sem ter que mudar os diretórios (apenas mudo os links para a versão queeu quero que esteja funcionando).

 Agora vamos executar o script de instalação doWebmin. Abaixo irei mostrar passo a passo cada umadas perguntas que voc6e deverá responder, explicandoelas. Os meus comentários vão estar entre parênteses.Vamos lá:

# cd /usr/webmin# ./setup.sh******************************************************************

* Welcome to the Webmin setup script, version 1.060 *******************************************************************Webmin is a web-based interface that allows Unix-like operating 

 systems and common Unix services to be easily administered.

 Installing Webmin in /usr/local/webmin-1.060 ...

Page 247: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 247/254

 

 ******************************************************************Webmin uses separate directories for configuration files and log files.Unless you want to run multiple versions of Webmin at the same time

 you can just accept the defaults.

(Aqui vai ser o diretório com todas as configurações do Webmin. Estasconfigurações vão estar sempre disponíveis para todas as versões.Config file directory [/etc/webmin]: (enter)

(Aqui vai estar o arquivo de log do Webmin, ou seja, o que os usuáriosdo programa estão fazendo :)

 Log file directory [/var/webmin]: (enter)

******************************************************************Webmin is written entirely in Perl. Please enter the full path to the

 Perl 5 interpreter on your system.

Como eu falei anteriormente, o Webmin é feito em Perl, então ele vainecessitar do Perl. Aqui você indica onde o Perl está. Geralmente ele

está no /usr/bin/perl mesmo, então não precisamos mudar este valor. Full path to perl (default /usr/bin/perl): (enter)

Testing Perl ... Perl seems to be installed ok 

******************************************************************Operating system name: Redhat LinuxOperating system version: 7.3

******************************************************************Webmin uses its own password protected web server to provide accessto the administration programs. The setup script needs to know :- What port to run the web server on. There must not be another 

Page 248: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 248/254

 

web server already using this port.- The login name required to access the web server.- The password required to access the web server.- If the webserver should use SSL (if your system supports it).

- Whether to start webmin at boot time.

 Aqui dizemos em qual porta o Webmin vai funcionar. Para que assimvocê acesse http://maquina:porta e entre no Webmin. A porta 10000 éum valor saudável, então vamos usar esse valor mesmo.Web server port (default 10000):

 No Login Name você indica o nome do usuário administrador. Coloque

um usuário que você queira, ou coloque admin ou root mesmo. Login name (default admin):

 Agora você digita a senha para o login anterior. E depois novamente para confirmar. Login password: Password again:

 A mensagem abaixo indica que o sistema não possui a biblioteca do Perl para usar SSL. Neste tutorial não vamos usar SSL, então isso nãoimporta muito. Se você tem essa biblioteca, escolha se você desejainstalar o Webmin num servidor SSL (encriptado) ou não. Aqui nãousaremos isso, apesar de ser bom :)The Perl SSLeay library is not installed. SSL not available.

 Iniciar o Webmin na hora do boot? Selecione não, vamos colocar umalinha de comando na inicialização para ficar menos complicado.Start Webmin at boot time (y/n):

******************************************************************Creating web server config files....done

Page 249: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 249/254

 

Creating access control file....done

 Inserting path to perl into scripts..

Creating start and stop scripts....done

Copying config files....done

Creating uninstall script /etc/webmin/uninstall.sh ..

..done

Changing ownership and permissions ....done

 Running postinstall scripts ....done

 Attempting to start Webmin mini web server..Starting Webmin server in /usr/local/webmin-1.060..done

******************************************************************Webmin has been installed and started successfully. Use your webbrowser to go to

http://seuhost.de.maquina:10000/ 

and login with the name and password you entered previously.

 Pronto! O Webmin foi instalado com êxito. Agora você já pode usar o Webmin, colocando no seu navegador oendereço que o Webmin disse

Page 250: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 250/254

 

(http://seuhost.de.maquina:10000/) e colocando ousuário e senha de administrador que você criou. Sevocê quiser por acaso desinstalar o Webmin, utilize ocomando:

 /etc/webmin/uninstall.sh

 Agora você poderá usufruir das facilidades que oWebmin traz para a administração do seu sistema. No

 futuro estarei colocando aqui algumas dicas sobre ouso do Webmin. Bom proveito ;)

 Instalando o ZipSlack 

O Zipslack é uma mini-distribuição gerada a partir doSlackware. Esta distribuição na verdade é um mini-

 slackware, com 100MB de tamanho. É ideal para quemquer testar o básico do Linux, pois não requer nenhumreparticionamento no seu HD, e tem suporte a tudocomo se fosse um Linux normal (e não é?). Para fazer essa façanha, o Zipslack se instala na sua partição

 DOS e usa um sistema de arquivos especial, chamado

UMSDOS. Todos os principais programas que você precisa estão inclusos nesta distribuição.

Uma outra distribuição gerada a partir da idéia do Zipslack é o Bigslack. As instruções de instalação servem para estas duas distribuições, já que elas sãoquase a mesma coisa. A diferença entre estas duasdistribuições é que o Bigslack é uma versão maior do

 Zipslack, ou seja, não tem apenas 100MB. Na verdade

o Bigslack é a distribuição Slackware, para se instalar numa partição DOS (justamente como o Zipslack,usando sistema de arquivos UMSDOS).

 A instalação é bem simples e você provavelmente nãovai encontrar nenhum problema com ela.

 Primeiramente você terá de obter os arquivos

Page 251: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 251/254

 

compactados (em .zip) do Zipslack ou Bigslack. Estesarquivos contém exatamente todos os arquivos queestarão na sua distribuição. Você pode pegar nos

 seguintes endereços:

•  Zipslack:http://public.ftp.planetmirror.com/pub/slackware/slack ware-8.1/zipslack/zipslack.zip  •  Bigslack: (não mais disponível)

Os requerimentos mínimos para a instalação são bem poucos... Você precisará de no mínimo um 386 com16MB de RAM. Caso você queira instalar numamáquina que tenha apenas 4MB de RAM, você pode

 pegar um patch que cria um arquivo swap (dememória) e ajuda com a memória RAM. O patch estádisponível no endereço:http://public.ftp.planetmirror.com/pub/slackware/slack ware/zipslack/fourmeg.zip. Todos estes arquivoscitados para download estão no FTP ibiblio.org, você

 pode também (e é recomendado) usar mirrors para

este FTP. A página de mirrors está localizado no seguinte endereço:http://www.slackware.com/getslack/ 

 

 , que inclusivecontém alguns mirrors aqui no Brasil. Para instalar o

 Zipslack você precisará de no mínimo 100MB, e para o Bigslack, 850MB.

 Para instalar é só você descompactar estes arquivos.zip que você pegar na raiz do seu HD. Por exemplo,

você descompacta no C: ou no D:, ou seja lá o que for. A descompactação irá criar um diretório linux/ dentrodesta sua raiz com todos os arquivos da distribuição. É extremamente necessário que você coloque na raiz,

 para ficar C:\linux (por exemplo), senão não funcionadireito.

Page 252: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 252/254

 

O próximo passo para você começar a usar é bootar o seu sistema. A instalação já foi feita, então você só precisará agora carregar o kernel e usar à vontade! Para fazer isso você tem duas alternativas: 1. Bootar 

com o loadlin; 2. Bootar com um bootdisk. Bootandocom o loadlin pode ser legal, mas você terá de ir parao DOS toda vez que quer entrar no Linux. Com obootdisk, você coloca o disquete na inicialização e ele

 já boota. Vamos aprender aqui os dois métodos...

 Para usar o loadlin (bem prático), você terá de editar oarquivo linux.bat que vai ser descompactado nodiretório linux/ dentro da raiz do seu HD (C:, D:, etc).

 Edite este arquivo, e veja as linhas "root = /dev/xxxx". Esta linha vai determinar ao loadlin aonde o seu Linuxestá instalado, então coloque a partição. Na maioriados casos é /dev/hda1 (quando instalado no C:). Aslinhas que contiverem um "rem" no começo, são linhascomentadas e ignoradas pelo loadlin, então seguindo oexemplo, ficaria assim:

rem root=/dev/sda1

rem root=/dev/sda2rem root=/dev/sdb1root=/dev/hda1rem root=/dev/hda2rem root=/dev/hdb1...

 Adapte o exemplo acima conforme suas necessidades.Salve o arquivo linux.bat e tudo está pronto!Simplesmente execute o linux.bat e você terá o seu

 Linux prontinho para usar! Só para complementar, olinux.bat é apenas um script que vai rodar o programaloadlin. Se você quiser rodar manualmente o

 programa, você deve apenas executar o comando:

Page 253: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 253/254

 

loadlin vmlinuz root=/dev/hda1 rw

Com o bootdisk, o processo é um pouco diferente...Você terá de pegar a imagem do disquete e o programa

rawrite, para escrever esta imagem em um disquete. Aqui estão os lugares para pegar:

•  Imagem do disco -http://public.ftp.planetmirror.com/pub/slackware/slack ware/zipslack/bootdisk.img  •  Rawrite -http://public.ftp.planetmirror.com/pub/slackware/slack ware/bootdisks/RAWRITE.EXE  

 Logo após pegar estes dois arquivos, você só tem deescrever a imagem com o rawrite. O comando paraisto é:

•  No DOS - rawrite bootdisk.img a:•  No Linux - dd if=bootdisk.img of=/dev/fd0

 Inicie o computador e coloque o bootdisk para ele

bootar. No prompt de boot você terá de executar ocomando "mount root=/dev/hda1 rw, e com isso já

 poderá usar o seu sistema!

Se você instalou o Zipslack e está insatisfeito porquenão vem muita coisa nele (não vem nem o ambiente

 gráfico), você pode instalar estes ambientes através docomando "installpkg pacote.tgz". Este pacote.tgz é o

 formato dos pacotes do Slackware, então você pode

 pegá-los da distribuição oficial Slackware e instalar no seu Zipslack à vontade. Lembre-se que o Bigslack édiferente e já tem todos estes programinhas instalados.Um bom lugar para obter os pacotes e alguns exemplosde pacotes bons para pegar estão disponíveis noendereço:

Page 254: Linux - Tutoriais

5/9/2018 Linux - Tutoriais - slidepdf.com

http://slidepdf.com/reader/full/linux-tutoriais 254/254

 

•  Pacotes -http://public.ftp.planetmirror.com/pub/slackware/slack ware/slackware/  • Servidor Apache -

http://public.ftp.planetmirror.com/pub/slackware/slack ware/slackware/n/apache-1.3.26-i386-1.tgz • Servidor X -http://public.ftp.planetmirror.com/pub/slackware/slack ware/slackware/x/  •  KDE -http://public.ftp.planetmirror.com/pub/slackware/slack ware/slackware/kde/  •

GNOME -http://public.ftp.planetmirror.com/pub/slackware/slack ware/slackware/gnome/  

Se estiver instalando apenas para testar o Linux, aproveite muito! Mas

recomendo você instalar uma distribuição nativamente mesmo, pois oUMSDOS é um pouco mais lento que o sistema de arquivos do Linux

(ext2, ou ReiserFS). Não perca a oportunidade de instalar vários tipos dedistribuições!

 ___________________________________________________________  Adobe create pdf De - Alexandre Zanca

Bacich

software Arco-Debian - Linux 

 Email:[email protected]