linux - tutoriais
TRANSCRIPT
5/9/2018 Linux - Tutoriais - slidepdf.com
http://slidepdf.com/reader/full/linux-tutoriais 1/254
Linux -
5/9/2018 Linux - Tutoriais - slidepdf.com
http://slidepdf.com/reader/full/linux-tutoriais 2/254
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
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.
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
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
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:
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
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:
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
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
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.
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
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
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
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
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
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
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
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
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"
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
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
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.
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
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.
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
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>
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
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)
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.
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
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),
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
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
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
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
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
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.
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
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
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
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.".
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 :)
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
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]
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
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.
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
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
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
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
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
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>
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)
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
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
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,
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 :)
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
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
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
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
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.
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
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
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
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
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
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
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...]
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
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 ;;
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");
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 =
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
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
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
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
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
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.
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
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.
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
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
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,
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
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
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
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.
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
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):
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
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
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).
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
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
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
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
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
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!
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
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
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
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!
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
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
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
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
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
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.
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.
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.
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
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 ###
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
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).
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".
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.
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
^ ^
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
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:
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.
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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).
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.
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:
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
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):
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).
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
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
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
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
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
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
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))
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.
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
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 { }.
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.
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\"
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
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
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
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
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.
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 $[…]).
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
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
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
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.
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).
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
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.
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/
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,
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
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
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
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
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.
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
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`
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 ;;
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 ;;
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
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`
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
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
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
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;
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.
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.
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.
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-
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
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:
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
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/
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
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
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
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;;
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
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:
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...
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
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
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
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-
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
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
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
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
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ê
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
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
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
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
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
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
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 :)
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-----+--------+----------------+------+----------------+--------+---------+----
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
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
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ê
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
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.
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
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
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?
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
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
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ã.
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
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
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
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
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*
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
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=
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
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
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.
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 ...
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
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
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
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
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.
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:
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:
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]