Académique Documents
Professionnel Documents
Culture Documents
Contedo
APT-RedHat: Instrues de como instalar e usar o APT, um poderoso gerenciador de pacotes, no RedHat ou Fedora. Contm tambm instrues para fazer um espelho do FTP do RedHat e criar um repositrio do APT na sua mquina. 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 srie de explicaes sobre comandos no Linux, para quem est querendo iniciar ou aprender mais. Compartilhando Internet: Uma das coisas que o Linux faz melhor compartilhar uma conexo Internet, seja ela discada ou fixa, com outros computadores em uma rede. Alm de compartilhar bem, pode dar at segurana adicional atravs de um firewall. Este tutorial traz o bsico para quem quiser compartilhar sua conexo com uma rede local. Crontab: Como utilizar o cron e os arquivos crontab para automatizar as tarefas do Linux, agendando qualquer tipo de coisa. timo para quem quer poupar tempo e trabalho! Dispositivos: Os dispositivos so uma coisa que temos que conhecer no Linux, seno agente se perde aos poucos nas configuraes mais bsicas. Por isso fiz esse tutorial tentando explicar algo sobre eles... Distribuies: Alguns comentrios meus sobre as distribuies atualmente disponveis. Pode estar um pouco desatualizado, e no incluir todas
distribuies, mas pode servir pra alguma coisa :) File Server: Muitas pessoas que tem mquinas Linux como servidores, com links bons e tudo mais, no acham um jeito de servir arquivos a no ser por ftp. Eis aqui uma soluo para fazer um tradicional file server por IRC com o Linux, sem precisar de interface grfica. htaccess: Um tutorial sobre como usar os arquivos .htaccess no Apache, incluindo autenticao de usurios, muito til para quem mexe com servidores Web. Instalando Java um texto de como instalar Java Introduo ao Linux: Um texto um pouco grande com uma introduo terica do Linux, como sua histria, seu funcionamento "atrs do palco", sua licena, entre outros. Bom para quem nunca ouviu falar de Linux :P LILO: Aprendendo a configurar o clssico gerenciador de boot do Linux fica fcil com esse tutorial, bem, pelo menos eu acho que vai ficar fcil :P Manipulao de usurios: Como adicionar ou remover usurios no Linux, entendendo como funciona tudo. Modem como instalar mode 56kbps MRTG: Como configurar o MRTG para analisar o trfego de seu roteador, e gerar grficos em tempo real a partir dele. Placas de Som como instalar audio nas placas de som. Primeiros Contatos: Uma srie de textos falando sobre os primeiros contatos entre o usurio e o sistema Linux, sem se aprofundar muito.
Permisses: Um tutorial clssico sobre permisses 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 em bash qmail: Como montar um servidor de e-mail utilizando o qmail, um robusto e seguro servidor de e-mail. Contm instrues e passo-a-passos para instalar um sistema completo de e-mail, com filtros, anti-virus, servidor IMAP e POP3, contas gerenciveis via MySQL, entre outros. Recompilando o kernel: Um passo a passo para a recompilao do kernel, bem simples, para quem quer comear a entrar na aventura que personalizar o Linux. Reparticionamento: Reparticione seu HD sem precisar perder seus dados, de diversas formas. Mtodos bem seguros e sem o uso de programas comerciais. SARG: Neste tutorial voc poder aprender como gerar relatrios completos de acesso ao Squid com o programa SARG, que apropsito muito bom e feito por um brasileiro :) Sistema de arquivos proc: o /proc no Linux um diretrio virtual que serve como "diagnstico" e configuraes em tempo real do kernel. Este tutorial traz uma breve introduo ele. Webalizer: Aprenda a montar estatsticas precisas e com grficos a partir dos arquivos de log do servidor de pginas Apache. Saiba quem est acessando o seu servidor. Webmin: Aprenda a fazer a simples instalao do Webmin, um poderoso gerenciador de
computador via Web feito em Perl. timo para administrar mquinas e servidores remotamente. ZipSlack: Para quem quiser experimentar uma distribuio Linux simpleszinha, como o Slackware, o ZipSlack bom porque no necessita de reparticionamento, e aqui vai um tutorial de como fazer esta instalao. 2. Dicas sobre Linux Apache: Aprenda mais sobre o mais usado e poderoso servidor Web! :) Tomcat: Respostas s dvidas dos administradores de sistema que usam o Tomcat como servidor de pginas JSP. VIM: Dicas para o uso deste poderoso editor de texto de modo console no Linux. Servidor X: Dvidas sobre o funcionamento do servidor grfico no Linux, o X-Window. ProFTPd: Com este poderoso servidor FTP, voc pode obter muito, ento aqui esto algumas dicas e dvidas sobre ele. IPTables: Algumas dicas para se usar com este filtro de pacotes do kernel do Linux. Incio APT no RedHat/Fedora 1. O que o APT? O APT (Advanced Package Tool, ou Ferramenta de Pacotes Avanada) uma ferramenta que gerencia de uma maneira muito intuitiva os pacotes de programas no Linux. O APT foi originalmente criado para funcionar junto com dpkg, do Debian, mas ele foi portado pela Conectiva para funcionar com o sistema
de pacotes RPM, criado pela RedHat. O APT resolve os conflitos e dependncias de pacotes de uma maneira muito fcil e automtica. Alm disso ela uma tima ferramenta para a atualizao do sistema atravs da Internet, instalao de programas adicionais, entre outros. Neste tutorial irei ensinar como instalar e usar o APT em sistemas RedHat ou Fedora, mas com algumas adaptaes, os mtodos descritos aqui podem ser feitos em outras distribuies que utilizam o RPM. No caso do Debian, nada precisa ser feito pois o sistema j vem com o APT por padro. 2. Instalando o APT no RedHat ou Fedora Para cada verso do sistema, h pacotes especficos a serem baixados. No site (http://apt.freshrpms.net/) voc obtm uma lista das verses do APT para cada verso do 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. Ento para instalar o RPM no seu sistema depois de baixado atravs dos links acima, utilize o comando:
# rpm -Uhv apt-0.5.5cnc6-fr1.i386.rpm Depois de instalado no sistema, voc ter de configurar o APT atravs de seus arquivos de configurao. O diretrio /etc/apt foi criado na instalao do pacote e nele que voc vai editar os arquivos necessrios para o funcionamento da ferramenta. O arquivo /etc/apt/apt.conf contm as configuraes padres do utilitrio APT. As configuraes neste arquivo j vm 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 seo Acquire para utilizar um Proxy ao baixar os pacotes na Internet. J o arquivo /etc/apt/sources.list precisa de nossa configurao. Este arquivo contm a localizao dos ndices dos pacotes e os prprios pacotes na Internet. Editando este arquivo, voc ira especificar onde o APT ir baixar os pacotes para instal-los na sua mquina. O nome que damos essa localidade "repositrio apt". Vamos pegar o exemplo que j vem por padro na configurao: rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms As duas linhas acima especificam dois tipos de repositrios APT: um de RPMs binrios, e outro de RPMs com cdigo-fonte (SRPMS). Caso voc no utilize SRPMS, s necessrio a primeira linha. A linha 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
repositrio do APT. Este host pode ser HTTP ou FTP. O terceiro campo o diretrio onde o repositrio est localizado. E por ltimo, o quarto campo em diante so os mdulos contidos no repositrio. Na primeira linha, eu especifiquei que acessaria o repositrio 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 so as atualizaes de segurana da distribuio; e freshrpms que um repositrio especial do http://freshrpms.net/ que contm pacotes extras que a distribuio oficial no disponibiliza (por exemplo, o apt um desses pacotes extras). Como host do repositrio apt, voc pode tambm usar os mirrors (espelhos) disponveis, como listado na pgina 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 prprio mirror, como explicado 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 do repositrio APT, armazenando-o no nosso sistema. Para fazer isso, voc s precisa de um comando:
# apt-get update E ele ir atualizar o ndice do repositrio configurado no arquivo /etc/apt/sources.list como explicado antes. Se tudo ocorrer bem, tudo ira seguir mais ou menos como mostro abaixo: # apt-get update Get: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/updates release Fetched 434kB in 2s (208kB/s) Reading Package Lists... Done Building Dependency Tree... Done Depois do indice atualizado no sistema, hora de voc comear a colocar as coisas pra funcionar. Vamos agora por exemplo, tentar atualizar o sistema: # apt-get upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages will be upgraded libxml2 1 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 be used. Do you want to continue? [Y/n] y Get:1 http://ayo.freshrpms.net
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.43.rh9_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:libxml2 ########################################### [100%] Como voc pde ver acima, eu utilizei o comando aptget upgrade para procurar por pacotes mais novos e atualizar o sistema com eles. Na minha configurao, eu coloquei o mdulo updates no /etc/apt/sources.list, ento isso quer dizer que as atualizaes que estiverem neste local do repositrio sero reconhecidas pelo APT. assim que fica fcil de se atualizar o sistema. Se eu fizer novamente o processo acima, olha o que vou conseguir: # apt-get upgrade Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded. Ou seja, todos os pacotes esto atualizados no meu sistema. Suponhamos agora que voc queira instalar uns pacotes do PHP, mas no sabe ao certo como eles se chamam. Com o APT, voc pode procurar no ndice por pacotes que tenham em sua descrio certas
palavras, como por exemplo PHP. Para fazer isso, utilizamos o comando apt-cache, veja s: # apt-cache search php asp2php - Converts WWW Active Server Pages to PHP pages asp2php-gtk - gtk+ frontend for asp2php quanta - 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 applications that 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 use ODBC databases. php-pgsql - A PostgreSQL database module for PHP. php-snmp - A module for PHP applications that query SNMP-managed devices. squirrelmail - SquirrelMail webmail client Viu s? Estes so 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... Done The following NEW packages will be installed: php-manual 0 packages upgraded, 1 newly installed, 0 removed and 0 not upgraded.
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.217.2_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:php-manual ########################################### [100%] Uma coisa muito legal do APT que se voc quer instalar ou remover um pacote, e este pacote depende de outros pacotes, o APT sabe disso e resolve isso pra voc: ele pergunta se voc quer tambm instalar/remover os pacotes dependentes. Ou seja, se voc no tiver o PHP instalado em sua mquina e tentar instalar o php-imap, o APT vai querer instalar tambm o pacote principal php, pois o php-imap dependente dele. Teste para ver. E agora que eu j li o manual do PHP inteiro em apenas alguns segundos, eu quero remov-lo. Voc pode remover muito bem utilizando o RPM, mas aqui estamos aprendendo sobre o APT, ento utilizaremos: # apt-get remove php-manual Reading Package Lists... Done Building Dependency Tree... Done
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, se algum outro pacote depender do manual do PHP, o APT perguntar a voc se deseja remover o outro pacote tambm. E agora como nota final de uso, voc pode atualizar uma verso de distribuio inteira atravs do APT. Para isso voc s precisa mudar a verso do seu repositrio (arquivo /etc/apt/sources.list) para uma verso superior a sua e executar o comando apt-get dist-upgrade. E pra terminar essa seo, vamos tabelinha bsica dos comandos e suas funes: Comando apt-get install <pacote> apt-get remove <pacote> apt-get upgrade apt-get distupgrade apt-cache search Funo Instala um pacote e suas dependncias. Remove um pacote e suas dependncias. Procura por pacotes mais novos para fazer atualizaes. Faz uma atualizao de verso da distribuio. Procura por termo nas descries dos pacotes
<termo>
disponveis.
E basicamente isso. Utilizar o APT muito simples e no requer muito segredo, nem esforo. Mas uma coisa certa: uma vez que voc comea a usar o APT, no quer parar nunca por causa de sua praticidade. 4. Montando um repositrio local do APT/RedHat Se voc um usurio domstico ou tem poucas mquinas em sua mo rodando Linux, j muito prtico voc utilizar o APT com os repositrios disponveis por a na Internet. Mas para os administradores de Rede que possuem vrias mquinas Linux, seja na mesma rede ou no, pedir para cada uma delas instalar ou atualizar pacotes da Internet um desperdcio de banda, alm de um pssimo favor para os servidores externos. Ento por que no fazer um repositrio APT local? O mtodo aqui utilizado criar um mirror (espelho) do FTP da RedHat no seu sistema local, e scripts iro criar os ndices do APT em sua mquina. Para fazer o espelho, precisaremos do pacote lftp, ento se voc no o possue, o que est esperando? apt-get install lftp! Criando o espelho da distribuio Baixe o script make-redhat-mirror disponvel nesta pgina e coloque-o no diretrio /usr/local/bin. Ento rode inicialmente o seguinte comando: # /usr/local/bin/make-redhat-mirror full 9 E espere. Espere bastante. O script ir baixar todo o contedo do RedHat 9 (inclusive as atualizaes) para o diretrio /var/mirror/redhat. Este diretrio de destino pode ser configurado dentro do script, editando-o. Inclusive voc pode editar tambm o FTP onde o
mirror vai tirar seus arquivos. Tente achar um mirror da RedHat mais prximo de voc. S ser necessrio rodar este comando uma vez. Mas depois voc vai querer se manter atualizado com os novos pacotes, ento para atualizar apenas a parte de updates, utilize o seguinte comando: # /usr/local/bin/make-redhat-mirror quick 9 Mais tarde iremos tambm colocar no crontab para rodar as atualizaes de ndice com o FTP da RedHat automaticamente todo dia. Preparando o territrio do APT Antes de criar os ndices, voc precisar primeiro de um mtodo para os clientes do APT baixarem as coisas. O mtodo pode ser HTTP e FTP (Pode ser CDROM tambm, mas isso no vem ao caso). Fica ao seu critrio escolher o mtodo. No meu caso eu prefiro criar um host virtual no Apache chamado de apt.meudominio.com.br. Ou se voc no tem domnio, pode usar seu prprio IP. Isto ser extremamente necessrio, e a configurao disto est fora do escopo deste tutorial. Se voc no sabe, procure saber como configurar um servidor HTTP ou FTP. Provavelmente voc sabe um pouco, seno no estaria lendo esta parte do tutorial :) Aqui, como eu disse, o lugar do repositrio APT vai ser apt.meudominio.com.br, e o diretorio real no sistema vai ser /var/www/dominios/apt.meudominio.com.br/html. Criando o repositrio APT Agora a hora de criar o repositrio do APT em sua mquina. Para isso, baixe o script make-apt disponvel nesta pgina e coloque-o em /usr/local/bin. Edite o
script e voc ver algumas variveis no comeo 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 repository ORIGINURL=apt.meudominio.com.br Veja a o que voc precisa. A varivel MIRRORDIR indica onde voc colocou o mirror do RedHat (isto est configurado tambm no script make-redhat-mirror). A varivel APTDIR indica o diretrio no sistema onde vai ficar o repositrio do APT, que no nosso caso ficou sendo como /var/www/dominios/apt.meudominio.com.br/html. E por ltimo a varivel ORIGINURL indica a URL onde vai estar disponvel o repositrio, que no nosso caso ficou sendo apt.meudominio.com.br. Depois de configurado estas trs variveis, hora de finalmente criar o repositrio. Na primeira vez que voc for fazer isso, utilize o comando: # /usr/local/bin/make-apt full 9 Isso ir iniciar o processo de criao do repositrio, que deve demorar um pouquinho. Depois de feito, est pronto! Agora seus usurios j podem acessar o seu repositrio APT atravs do seu servidor HTTP. Configurando os clientes para usar seu repositrio Tudo que voc precisar fazer para configurar os clientes do APT para utilizar o seu repositrio ser alterar o arquivo /etc/apt/sources.list e utilizar a seguinte linha: rpm http://apt.meudominio.com.br redhat/9/en/i386 os
updates E pronto! Se voc estiver rodando vrias mquinas numa rede interna, apenas uma ter o repositrio e o resto ir baixar tudo localmente :) Atualizando o repositrio diariamente Como existem as atualizaes de segurana, sempre bom voc estar sempre atualizando seu repositrio. Para fazer isso diariamente, crie um arquivo chamado /usr/local/bin/mirror-apt com o seguinte contedo: #!/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 atualizaes no FTP da RedHat e crie o repositrio APT caso necessrio todo dia s 1:00 da manh. Se voc quiser aprender mais sobre como agendar as tarefas atravs do crontab, visite meu outro tutorial: Utilizando o crontab. E pronto! Seu trabalho est feito. Experimente e modifique as coisas para aprender mais. No to difcil adaptar estas informaes para criar um repositrio do Fedora por exemplo, ou de outra verso do RedHat. A nica coisa que ir mudar ser a localizao do mirror, entre outras pequenas coisas. 5. Concluso e Referncias Espero que voc tenha gostado desse tutorial, e que ele possa ter te ajudado a lidar melhor com sua
distribuio. Crticas e Sugestes podem ser mandadas para o meu e-mail. E agora os crditos para este tutorial: http://www.webmo.net/support/apt_repository.html Foi da que peguei os scripts make-redhat-mirror e make-apt, e foi a que aprendi basicamente como se monta o repositrio. Crditos TOTAIS para este endereo, muito bom. FreshRPMS - timo site com os recursos necessrios 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 quando acontece alguma coisa com seu sistema. Um backup sempre bom, mesmo que for bem simples. Vou apresentar atravs deste manual algumas formas de se fazer backup de arquivos do sistema Linux, opcionalmente armazenando estas cpias em um servidor remoto via FTP. Com isso os administradores de redes podem centralizer os backups em uma mquina, para depois armazenar ou em uma fita dat, ou em cd-rom, ou seja l o que for. Para fazer os backups, utilizaremos o clssico comando "tar", que serve justamente para isso: armazenar arquivos em um arquivo. Vamos primeiro criar um exemplo de arquivo de backup: tar -cf maquina-backup-full-20030212.tar /etc /var/named /var/log bzip2 maquina-backup-full-20030212.tar
O que fiz foi armazenar os arquivos dos diretrios "/etc", "/var/named" e "/var/log" no arquivo maquinabackup-20030212.tar, e depois compact-lo no formato bzip2 (uma compactao melhor, mas que requer mais processamento), gerando ento o arquivo "maquinabackup-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 dos trs diretrios 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 contm o backup que criamos anteriormente, e outro arquivo ter o backup do diretrio "/home", ou seja, o diretrio dos usurios do sistema. A diferena aqui que eu usei a opo "z" e no a "j". Isso quer dizer que o tar vai usar o programa gzip ao invs do bzip2. Agora vamos supor que eu alterei o contedo do diretrio "/etc", adicionando um arquivo chamado "teste" e modificando o arquivo "crontab". Para no ter que fazer um backup total novamente, eu posso incrementar este backup somente com as modificaes 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 modificados numa faixa de 1 dia (usado para backups incrementais
dirios) e armazen-los no arquivo "maquina-backupincremental-20030212.tar.gz". Vejamos agora um backup feito com os arquivos modificados numa faixa de 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 nomeao do arquivo o comando "date", gerando assim a data no arquivo. Veja o exemplo dessa compactao: # tar zcf backup-full-`date +%Y%m%d`.tar.gz /etc # ls backup-full-20030212.tar.gz Agora que voc j aprendeu a fazer os backups, vamos armazen-lo remotamente. Eu assumo que voc j tenha configurado um servidor FTP em outra mquina, se voc ainda no fez isso, faa. Depois adicione um usurio com uma certa senha para acessar este ftp. Aqui no tutorial vamos usar como usurio: "backup" e como senha: "segredo". Utilize o seguinte script para automatizar 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"
USUARIO_FTP="backup" SENHA_FTP="segredo" # A partir daqui no precisa mais editar. # Cria o arquivo .tar.gz no /tmp (Temporrio) cd /tmp tar zcf /tmp/$ARQUIVO $DIRETORIOS # Acessa o FTP e coloca os arquivos ftp -in <<EOF open $HOST_FTP user $USUARIO_FTP $SENHA_FTP bin lcd /tmp dele $ARQUIVO put $ARQUIVO bye EOF # Remove os arquivos temporarios rm -rf /tmp/$ARQUIVO Pronto! Lembre-se de proteger este arquivo aos olhos alheios, porque a senha do usurio do FTP est visvel. Este pequeno script shell cria um backup dos diretrios "/etc" e "/var/log", conecta ao servidor FTP e envia o arquivo. Voc s precisar alterar as variveis do comeo do arquivo para as suas necessidades. Com isso voc ter o backup remoto que precisar. Modificando o script voc pode criar tambm backups incrementais, e junto com o crontab, pode programar para as mquinas ficarem fazendo backups dirios, semanais, mensais, ou como voc quiser. Lembre-se sempre que os backups uma vez na mquina remota, devem ser colocados por segurana em uma mdia
como fita DAT ou CD-ROM. Cabe voc decidir :) Bom proveito! Depois criarei mais dicas sobre o assunto. Comandos no Linux Comandos para manipulao de arquivos A primeira coisa que sempre vem em mente no uso de um sistema operacional como lidar com os arquivos dentro dele... Nesta seo eu vou mostrar alguns comandos bsicos para mexer com os arquivos. cd - Navegando entre diretrios ls - Listar arquivos mkdir - Cria um diretrio rmdir - Remove um diretrio vazio cp - Cpia de arquivos e diretrios mv - Move arquivos e diretrios rm - Deleta arquivos e diretrios ln - Linkando arquivos cat - Exibe o contedo de um arquivo ou direciona-o para outro file - Indicando tipo de arquivo
cd - Navegando entre diretrios cd [nome_do_diretrio] Este comando acima mudar o diretrio atual de onde o usurio est. H tambm algumas abreviaes de diretrios no Linux para a facilitao, estes so: Abreviao . (ponto) .. (dois pontos) Significado Diretrio atual Diretrio anterior
Por exemplo, se eu quero ir para o meu diretrio home, fao o seguinte: $ pwd /usr/games $ cd ~ $ pwd /home/xxx Ou seja, eu estava no diretrio /usr/games, e com um simples cd para o diretrio ~, fui para o meu diretrio home (/home/xxx). Quando voc deseja saber o caminho completo do diretrio em que voc est, utilize o comando pwd. Se voc deseja ir para um diretrio 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 diretrio /usr/local/RealPlayer7/Codecs e quis ir para o diretrio etc/rc.d que est na raiz. Note depois que eu usei o hfen e fui de volta para o ltimo diretrio em que eu estava.
ls - Listar arquivos ls [opes] [arquivo/diretrio] Este comando lista os arquivos, nada mais que isso. Se voc executar apenas o ls sozinho, ele vai mostrar todos os arquivos existentes no diretrio atual. H tambm as opes extras: Parmetro -l -a -h -R Significado Lista os arquivos em formato detalhado. Lista os arquivos ocultos (que comeam com um .) Exibe o tamanho num formato legvel (combine com -l) Lista tambm os subdiretrios encontrados
Exemplo de uma listagem detalhada: $ ls -l total 9916 drwxrwxr-x 5 xxx xxx 1302 Aug 16 10:15 CursoC_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 tambm usar no ls os wildcards, ou seja, caracteres que substituem outros. Exemplo: eu quero listar todos os arquivos que tm a extenso .txt, fao o seguinte: $ ls *.txt debian-install.txt manualito.txt named.txt plip.txt seguranca.txt
placa_de_video.txt
O wildcard o "*", que representa "tudo".txt. Existem outros wildcards, exemplo disso o ponto de interrogao (?), 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 substitudo por 3, 4, 5, 6 e 7. mkdir - Cria um diretrio mkdir <nome_do_diretrio> Cria um diretrio. Exemplo: $ mkdir ~/paginas Este comando criar o diretrio paginas no seu diretrio home. rmdir - Remove um diretrio vazio rmdir <nome_do_diretorio> Apaga um diretrio que esteja vazio. Exemplo: $ rmdir /tmp/lixo Isto apagar o diretrio /tmp/lixo apenas se ele estiver vazio. Para apagar um diretrio com seu contedo, refira-se ao comando rm.
cp - Cpia de arquivos e diretrios cp [opes] <arquivo_origem> <arquivo_destino> O comando cp copia arquivos e diretrios. Como opes dele, podemos ver: Parmetro -i -v -R Significado Modo interativo Mostra o que est sendo copiado Copia recursivamente (diretrios e subdiretrios)
Exemplos: Quero copiar brasil.txt para livro.txt, com a opo de modo interativo. $ cp -i brasil.txt livro.txt cp: sobrescrever `livro.txt'? Como o arquivo livro.txt j existia, ele pergunta se quer sobrescrever, responda y(sim) ou n(no). Agora eu quero copiar o diretrio /home/ftp com tudo dentro (at seus subdiretrios) para /home/ftp2, fao o seguinte: $ cp -R /home/ftp /home/ftp2 mv - Move arquivos e diretrios mv <arquivo_origem> <arquivo_destino> Este comando simplesmente move algum arquivo para outro lugar. Ele tambm usado para renomear um arquivo. Por exemplo, se eu quero renomear o industria.txt para fabrica.txt, eu fao o seguinte: $ mv industria.txt fabrica.txt
Se eu quiser mover o industria.txt para /home/usuario com o mesmo nome, fao: $ mv industria.txt /home/usuario rm - Deleta arquivos e diretrios rm [opes] <arquivo> Este comando apaga definitivamente o arquivo ou diretrio. Exemplo: $ rm arquivo.bin Para apagar um diretrio com todo seu contedo, usase a opo -r, assim: $ rm -r /tmp/lixo ln - Linkando arquivos ln -s <arquivo_origem> <link simblico> Este comando usado para gerar links simblicos, ou seja, que se comportam como um arquivo ou diretrio, mas so apenas redirecionadores que mandam seu comando para outro arquivo ou diretrio, por exemplo: $ ln -s /manual /home/linux-manual Este comando criar o link /home/linux-manual, se voc der um ls -l voc ver que o diretrio /home/linuxmanual est apontando para /manual. Se voc ir para o /home/linux-manual, voc na verdade estar no /manual, mas como um link, no h diferena. cat - Exibe o contedo de um arquivo ou direciona-o para outro cat <arquivo>
Este comando existe para mostrar o contedo de um arquivo, ou para fazer a cpia deste arquivo, ou uma juno. Vejamos um exemplo, se eu quiser mostrar o contedo de /home/usuario/contato, eu digito: $ cat /home/xxx/contato Aparecer o contedo do arquivo contato: Nome do usurio (xxx xxxxx..) xxx_arroba_itotal_ponto_com_ponto_br http://tlm.conectiva.com.br Este comando pode tambm servir de direcionador para outro arquivo. Indicadores so usados para isso: Indicador ">" - faz uma cpia, exemplo: $ cat contato1 > contato2 Indicador ">>" - Acrescenta um arquivo ao outro, exemplo: cat contato1 >> contato2 O cat pode fazer coisas que nem voc imagina, como tocar sons. Para fazer isso simples, ele direciona o arquivo 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 diretrio indicado pelo usurio conforme os padres do sistema operacional. H varios tipos de retorno, vamos aqui ver alguns mais importantes: ASCII text directory C Program source ELF-Executable
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 usurios logados
ps - Listando processos ps [opes] Quando um programa executado no sistema, ele recebe um nmero de identificao, o chamado PID. Este comando lista esses processos executados, e apresenta o PID. Alm do PID, ele tambm mostra o comando executado (CMD) e tambm o STAT (status atual do processo executado, veja nota abaixo), alm de outros. O status do processo identificado por letras, aqui segue uma tabela com as definies de cada letra: Letra 0 S R I Z T Definio No existente Descansando, fora de funcionamento (Sleeping) Rodando (Running) Intermediando (Intermediate) Terminando (Zumbi) Parado (Stopped)
Esperando (Waiting)
Agora um exemplo para este comando: $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1120 52 ? S Dec25 0:05 init 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 Dec25 0:00 [mysqld] root 1007 0.0 0.0 2852 0 ? SW Dec25 0:00 [smbd] xxx 1074 0.0 0.0 1736 0 tty1 SW Dec25 0:00 [bash] xxx 1263 0.0 0.0 1632 0 tty1 SW Dec25 0:00 [startx] xxx 1271 0.0 0.0 2304 0 tty1 SW Dec25 0:00 [xinit] xxx 1275 0.0 2.4 4312 1360 tty1 S Dec25 0: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:03 0:13 mpg123 King Diamond - Help.mp3 Este parmetro (aux) fez o ps listar todas as informaes sobre todos os processos executados.
kill - Matando um processo kill [-SINAL] <PID> O comando kill muito conhecido (principalmente pelos usurios 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 ento executar o kill neste PID. Vamos killar o Netscape: $ ps aux | grep netscape xxx 2461 0.0 0.0 1636 0 tty1 [netscape] $ kill -9 2461 SW 07:09 0:00
E o processo do Netscape foi morto! Vivas! O sinal -9 significa para forar e matar natoralmente mesmo. Uma lista de sinais pode ser encontrada com o comando: 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 no precisa saber o PID do processo, e sim o nome. A desvantagem que se tiver dois processos com o mesmo nome, os dois so finalizados. Seguindo o exemplo do comando kill: $ ps aux | grep netscape xxx 2461 0.0 0.0 1636 0 tty1 [netscape] $ killall -9 netscape SW 07:09 0:00
w - Listas os usurios logados w Com este comando, possvel voc ver quais usurios esto atualmente logados no seu sistema, alm de informaes como "O que ele est fazendo", "aonde est fazendo", "desde quando est logado", etc. Vejamos um exemplo aqui da minha mquina: xxx@itotal xxx]$ w 10:37am up 13:45, 4 users, load average: 0.85, 0.70, 0.71 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT xxx tty1 Mon 8pm 25.00s 34:16 0.09s -bash root tty2 10:37am 5.00s 0.27s 0.14s top xxx tty3 10:37am 11.00s 0.25s 0.13s vi cmpci.c jim tty4 10:37am 22.00s 0.23s 0.12s BitchX Comandos de pacotes (instalao/desinstalao/consulta) O que so pacotes? No Linux, geralmente os aplicativos vem em forma de cdigo-fonte, ento o usurio tem de baixar e compilar. Os pacotes servem justamente para facilitar o trabalho do usurio, dando a ele um arquivo empacotado com o cdigo j compilado. Existem diversos gerenciadores de pacotes que iremos aprender a usar o bsico deles aqui. Tem o RPM (RedHat Package Manager), que usado por vrias distribuies como o Conectiva Linux, Red Hat, SuSE e Mandrake. Tambm tem o DEB (Debian Packages),
muito bom tambm e usado pela distribuio Debian e Corel Linux (que baseada no Debian por isso). E temos tambm o pacoteamento do Slackware (TGZ), que no to poderoso como os anteriores, mas quebra galhos tambm. Alm de empacotar o cdigo-fonte compilado, os gerenciadores de pacotes tambm armazenam as informaes de instalao em um banco de dados, para depois o usurio ter informaes sobre a instalao, e para desinstalar o pacote do sistema. E no h apenas pacotes com cdigo-fonte compilado, tambm h pacotes que contm o cdigo-fonte sem compilar, mas empacotado. Utilizando o PKGTOOL (Slackware) Nas distribuies Slackware, bem simples o gerenciamento de pacotes dele. Os pacotes tm extenso .tgz (diferente de .tar.gz), e alm de conter os arquivos, contm scripts de ps-descompactao tambm. Existe uma interface muito amigvel para o gerenciamento dos pacotes .tgz, e se chama pkgtool. Tente executar o pkgtool no console e ver no que d. Mas tambm existem os comandos individuais: Comando installpkg X.tgz removepkg X makepkg O que faz Instala o pacote X.tgz Desinstala o pacote X Cria um pacote
Utilizando o RPM Para instalar um pacote, usa-se a opo -i: # rpm -i pacote.rpm
Voc tambm pode utilizar as opes -v e -h combinadas com a -i para uma mostragem mais agradvel. Se voc j tem o pacote.rpm e deseja atualizar para uma verso mais recente da mesma, voc utiliza a opo -U ao invs 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 opo -e, assim: # rpm -e pacote Caso este pacote gere dependncias com outros pacotes, e mesmo assim voc queira remov-lo, voc pode utilizar a opo --force, que como o nome diz, fora a remoo do mesmo: # rpm -e pacote --force Agora uma caracterstica muito importante tambm para o usurio 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 opo -q (query) a opo de consulta, e seguida de outra letra ela faz tarefas. Combinando o comando anterior com o comando grep, podemos ver se um certo pacote est instalado no sistema: $ rpm -qa | grep BitchX BitchX-75p3-8cl E se voc quer saber informaes sobre um pacote? Ento usa-se a opo -i. Vejamos um exemplo: $ rpm -qi BitchX
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 : Aplicaes/Internet Source RPM: BitchX-75p3-8cl.src.rpm Size : 2812352 License: GPL URL : http://www.bitchx.org Summary : Cliente IRC para o console do Linux Description : O BitchX um cliente de IRC com suporte a cores para o console do Linux. Ele incorpora vrias caractersticas que normalmente requereriam um script, e a sua interface mais colorida, e simples de trabalhar que a do ircII :) Se quisermos ver quais pacotes fazem dependncia com um certo pacote, utilizamos a opo -R: $ rpm -qR pacote E para verificar a qual pacote um certo arquivo pertence, utilize a opo -f, assim: $ rpm -qf /diretorio/arquivo Ou o contrrio, se voc quiser listar todos os arquivos pertencentes um pacote, faa assim: $ rpm -ql pacote Outros tipos de comandos Descompactar arquivos
Extenso .tar.gz Extenso .tar Extenso .gz Extenso .tar.bz2 Extenso .bz2 Extenso .zip Compactar arquivos
tar zxpvf arquivo.tar.gz tar xpvf arquivo.tar gunzip arquivo.gz bunzip2 arquivo.tar.bz2 ; tar xpvf arquivo.tar bunzip2 arquivo.bz2 unzip arquivo.zip tar cvf diretorio/ tar zcvf diretorio/ gzip arquivo bzip2 arquivo
Empacotar um diretrio em .tar Empacotar um diretrio em .tar.gz Compacta um arquivo para .gz Compacta um arquivo para .bz2 Espao em disco df -h du hs
Mostra o espao em disco das parties montadas Mostra o espao ocupado pelo diretrio atual
Informaes do sistema date cal uptime Mostra a data e hora atual Mostra um calendrio Mostra quanto tempo seu sistema est rodando
free top uname -a Programas (console) vi pico pine mutt lynx links
Exibe a memria livre, a usada, e os buffers da memria RAM Mostra os processos que mais gastam memria Mostra informaes de verso do kernel Editor de texto Editor de texto Leitor de E-Mail Leitor de E-Mail Navegador Web Navegador Web
Compartilhando uma conexo com o Linux Um dos casos mais comuns esse, voc ter uma conexo com a Internet, e outros computadores em uma rede interna. Ento voc quer compartilhar essa conexo com os outros computadores. Poderia-se usar servidores de proxy para isso, mas queremos compartilhar totalmente! Ento o que fazer? Primeiro de tudo, voc precisa verificar qual a verso do seu kernel. Kernels diferentes utilizaro ferramentas diferentes. Vejamos: Verso do Kernel 2.0.x 2.2.x 2.4.x Utilitrio ipfwadm ipchains iptables
claro que no podemos descartar o fato de que quanto maior a verso do kernel, melhor a implementao desses utilitrios! Ento sempre bom voc 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 se compartilhar a sua conexo, considerando que a sua rede 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 conexo. No exemplo a Internet aqui est funcionando atravs da placa de rede 'eth0' e a rede local em 'eth1', ento eu ativei o masquerading na 'eth0', que a placa da Internet.
Se voc usa conexo discada, ento ao invs de ser 'eth0' ou 'eth1', voc usar 'ppp0', que a interface de conexo PPP, utilizada pelos provedores de acesso discado. E antes que eu me esquea (e voc tambm), 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 rede interna para a Internet. No importa que verso do kernel voc tenha, execute o seguinte comando: # echo 1 > /proc/sys/net/ipv4/ip_forward Pronto, sua conexo est compartilhada com todos da sua rede interna. A nica coisa que lhe restou pra fazer agora configurar as prprias mquinas da rede interna para usarem esta conexo compartilhada. Se voc estiver usando Linux, voc apenas ter que adicionar uma rota padro, que o gateway: # route add -net default gw 192.168.0.1 Onde 192.168.0.1 o IP da mquina servidora. Pronto, sua mquina cliente j est usufruindo do masquerading que a outra mquina est fazendo. Caso a mquina cliente seja Windows, configure na placa de rede para ela ter como Gateway o IP da mquina servidora. As configuraes que voc fez no Linux vo se desfazer assim que voc reiniciar o sistema, ento bom deixar todos estes comandos que voc fez num arquivo de inicializao. Voc pode coloc-los, por exemplo, dentro do arquivo '/etc/rc.d/rc.local'. Agora USAR, USAR e USAR! Utilizando o crontab
O "cron" um programa de "agendamento de tarefas". Com ele voc pode programar para ser executado qualquer coisa numa certa periodicidade ou at mesmo em um exato dia, numa exata hora. Um uso bem comum do cron o agendamento de tarefas administrativas de manuteno do seu sistema, como por exemplo, procura por links simblicos quebrados, anlise de segurana do sistema, backup, entre outros. Estas tarefas so programadas para todo dia, toda semana ou todo ms, serem automaticamente executadas atravs do crontab e um script shell comum. A configurao do cron geralmente chamada de crontab. Os sistemas Linux possuem o cron sempre presente. Pelo menos eu nunca vi nenhuma distribuio que no inclusse o to til cron. A configurao tem duas partes: Uma global, e uma por usurio. Na global, que o root quem controla, o crontab pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usurio. J na parte por usurio, cada usurio tem seu prprio crontab, sendo restringido penas ao que o usurio pode fazer (e no tudo, como o caso do root). Para configurar um crontab por usurio, utiliza-se o comando "crontab", junto com um parmetro, dependendo do que voc quiser fazer. Abaixo uma relao: Comando crontab -e crontab -l crontab -r Funo Edita o crontab atual do usurio Exibe o atual contedo do crontab do usurio Remove o crontab do
usurio Se voc quiser verificar os arquivos crontab dos usurios, voc precisar ser root. O comando crontab coloca os arquivos dos usurios no diretrio: /var/spool/cron/usuario Onde "usuario" corresponde ao usurio dono do arquivo crontab. Agora se voc quiser editar o crontab global, este fica no arquivo "/etc/crontab", e s pode ser manipulado pelo root. E agora que j sabemos onde ficam os arquivos de configurao, vamos estudar o formato da linha do crontab, que quem vai dizer o que executar e quando. Vamos ver um exemplo: 0 4 * * * who Ento como se pode ver, a linha dividida em 6 campos separados por tabs ou espao: Campo 1o. 2o. 3o. 4o. 5o. 6o. Funo Minuto Hora Dia do ms Ms Dia da semana Programa pra execuo
Todos estes campos, sem contar com o 6o., so especificados por nmeros. Veja a tabela abaixo para os valores destes campos: Campo Minuto Hora Funo 0-59 0-23
Ento o que nosso primeiro exemplo estava dizendo? A linha est dizendo: "Execute o comando 'who' todo dia de todo ms sendo o dia qualquer dia da semana, s 4 horas e 0 minutos.". Vamos pegar mais exemplos para analisar: 1,21,41 * * crontab rodou mesmo!" * * echo "Meu
Aqui est dizendo: "Executar o comando do sexto campo toda hora, todo dia, nos minutos 1, 21 e 41". 30 4 * * 1 rm -rf /tmp/* Aqui est dizendo: "Apagar todo contedo do diretrio /tmp toda segunda-feira, as 4:30 da manh.". 45 19 1,15 * * /usr/local/bin/backup Aqui est dizendo: "Executar o comando 'backup' todo dia 1 e 15 s 19:45.". E assim voc pode ir montando inmeros jeitos de agendamento possvel. No arquivo do crontab global, o sexto campo pode ser substitudo pelo nome do usurio, e um stimo campo adicionado com o programa para a execuo, como mostro no exemplo a seguir: 0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg Aqui est dizendo: "Executar o mrtg como usurio root, durante 5 e 5 minutos dos minutos 0-59. Ou seja, executar de 5 em 5 minutos o mrtg sempre.".
Em alguma distribuies, os agendamentos mais comuns esto programados para serem executados. Veja as linhas abaixo: 01 * * /etc/cron.hourly 02 4 * /etc/cron.daily 22 4 * /etc/cron.weekly 42 4 1 /etc/cron.monthly * * * * * * 0 * root root root root run-parts run-parts run-parts run-parts
O programa "run-parts" executa todos os scripts executveis dentro de um certo diretrio. Ento com essas linhas, temos diretrios programados para executar programas de hora em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela: Diretrio /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly Perodo De hora em hora Diariamente Semanalmente Mensalmente
Ento todos os arquivos executveis dentro de cada diretrio sero executados no seu correspondente perodo. Ou seja, posso colocar um certo contedo no arquivo "/etc/cron.daily/teste", depois torn-lo executvel atravs do comando "chmod +x /etc/cron.daily/teste", e ento ele ser executado todo dia as 4:02 da manh. Bem isso! Agora voc j pode programar suas tarefas para serem automaticamente executadas e te poupar muito trabalho manual :)
Dicas - Apache Mostrando pginas de um servidor Intranet num servidor Internet s vezes voc se depara com uma configurao em que voc tem um servidor Apache rodando para a Internet, e outros servidores rodando internamente. S que como fazer para que os usurios da Internet acessem os vrios servidores internos? Uma soluo seria configurar o firewall para que redirecione as respectivas conexes para os servidores internos via NAT. Mas o problema disso que voc no consegue redirecionar na mesma porta de acordo com o nome do host, ou seja, no tem a habilidade de fazer uma configurao de Domnio Virtual no firewall. Vamos supor que eu tenha trs servidores internos e um externo. Cada um destes servidores internos carrega 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 aos usurios da Internet as pginas que esto nos servidores internos? Para solucionar este caso, voc pode simplesmente utilizar o poderoso mod_rewrite para pegar todo um endereo da rede Interna e colocar disponvel no seu servidor Internet transparentemente para o usurio. No servidor externo, voc pode colocar as seguintes linhas na configurao principal ou dentro de um domnio virtual (<VirtualHost>): RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?nomedodominio\.com\.br
RewriteRule (.*) http://192.168.0.1$1 [P] Neste exemplo, quando o usuario acessar o domnio virtual www.nomedodominio.com.br, o Apache coletar as informaes do servidor interno 192.168.0.1 e colocar disponvel transparentemente para o usurio. 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 diretrio /site dentro do dominio www.nomedodominio.com.br seja associado ao servidor interno 192.168.0.2. E por a vai. As possibilidades so muitas, e se voc souber mexer com expresses regulares e o mod_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, alguns usurios sem tica comeam a copiar tudo e deixar links diretos para os seus arquivos em pginas prprias. Para evitar muitos casos disso, pode-se usar o mod_rewrite. s colocar as seguintes linhas dentro da sua configurao principal ou de um domnio virtual (<VirtualHost>): RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedodominio\.com\.br/.*$ [NC]
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 no esto inclusos no dominio www.nomedodominio.com.br tenham seu acesso negado ao link direto para os arquivos com as extenses: .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 invs dele pegar o arquivo .mp3, ele cair na pgina http://www.nomedodominio.com.br/download_negado. php, que poder conter um aviso de que o download direto foi negado. P: Eu tenho muitos domnios 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 servidores em que a quantidade de domnios virtuais muito grande, surge a necessidade de voc separar os logs de acesso para cada um dos dominios virtuais, com o fim de fazer a anlise destes logs e apresentar estatsticas para os usurios de cada domnio (O Webalizer faz isso). 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 utilitrio chamado splitlogfile (que vem junto com o Apache) que separa os logs de acordo com o domnio virtual. Para fazer funcionar, primeiro retire todos os logs dos seus
domnios virtuais e adicione apenas as seguintes linhas de log na configurao principal do seu servidor (e no do domnio 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 vo criar o formato da linha de log que o Apache ir escrever. A nica diferena para o formato padro o acrscimo do %v no incio, que indica o domnio virtual usado. As duas ultimas linhas indicam onde o log vai ser gravado (o de acesso e o de erros do servidor). Agora reinicie ou recarrege o seu Apache, e o seu arquivo de log estar sendo escrito de uma forma diferente. Agora vamos separar os logs por domnio 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 logs cd /var/www/logs/splitted /usr/bin/split-logfile < /var/www/logs/access_log # Zera o log principal echo -n > /var/www/logs/access_log No esquea de criar antes tambm o diretrio /var/www/logs/splitted. Onde estaro armazenados os logs separados.
Agora s rodar este script e verificar o contedo do /var/www/logs/splitted. Existir um arquivo .log para cada domnio virtual, sem o nome do domnio virtual (string %v do LogFormat), permitindo que voc use normalmente o arquivo de log (para fazer anlises com o Webalizer por exemplo). Dicas - IPTables P: Como redireciono o trfego de toda uma porta para um servidor meu? R: Esta pergunta muito importante. Suponhamos que voc queira redirecionar o trfego de envio de e-mails de toda a sua rede para um servidor de preferncia, como por exemplo, um servidor interno que voc tenha. Assim, ao invs de os usurios da sua rede utilizarem outro servidor SMTP, sero obrigados a sempre usar o servidor SMTP que voc escolher. Para isso, necessitase 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 prpria mquina 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
256.103.245.3 pelo IP do servidor SMTP do seu provedor) E por a vai. Qualquer endereo, seja qualquer for ele, que o destino seja a porta 25, o filtro ir redicionar a conexo para onde quiser. Assim voc pode evitar problemas de uma migrao por exemplo, ou obrigar os usurios da sua rede ou de seu provedor a usarem o servidor SMTP especificado. Uma boa! :) Lembrando que isso no serve apenas para SMTP, e sim qualquer porta. Este mtodo tambm muito usado para deixar o Squid como proxy transparente. Dicas - ProFTPd P: Por que quando dou upload em algum arquivo, a hora no fica igual hora do sistema do servidor FTP? R: Em algumas distribuies do programa ProFTPd, h uma configurao padro bem chatinha. O padro diz que o programa armazene os arquivos com o fuso horrio universal (GMT) e no o local. E a no ser que voc realmente queira que ele faa assim, isso horrvel! Modifique o /etc/proftpd.conf e adicione a diretriz: TimesGMT off Isso far com que os arquivos tenham as datas locais certinho. P: Como utilizar um chroot e acessar diretrios disponevis em vrios lugares do sistema? R: Para quem conhece o ProFTPd, sabe que pode-se configurar um chroot padro para "trancar" o usurio dentro de um diretrio. Este diertrio pode ser o
diretrio HOME do usurio, ou pode ser um diretrio especificado. O problema deste mtodo que ao ficar dentro de um chroot como por exemplo: /home/usuario, o usurio do FTP no poder acessar nada alm deste diretrio e seu contedo. Pode ser que o usurio precise acessar outros diretrios, e foi a que chegou a alternativa para o chroot. O ProFTPd contm uma configurao bem flexvel, parecida com a do Apache. Com a diretriz <Directory>, podemos restringir um certo usurio a acessar apenas os diretrios que queremos. Vou usar aqui um exemplo, que pode ser adaptado facilmente. Suponhamos que eu criei o usurio tobias e seu diretrio home ser /home/tobias. Dentro deste diretrio, eu fiz os seguintes links simblicos: ln -s /var/www/html /home/tobias/apache-html ln -s /var/log/httpd /home/tobias/apache-logs ln -s /etc/httpd/conf /home/tobias/apache-conf Como deu para perceber, tenho vrios diretrios que esto localizados em locais totalmente diferentes uns dos outros, e no seria possvel "prender" o usurio ao diretrio /home/tobias. Criei estes links simblicos, pois eles vo dar o caminho para que o usurio quando logar, poder entrar nestes diretrios. V no arquivo proftpd.conf (geralmente localizado no diretrio /etc) e certifique-se que no esteja usando a opo DefaultRoot, para no utilizar-se do chroot. Agora adicione uma linha assim: include "/etc/proftpd/tobias.conf" Nesta linha eu pedi para o ProFTPd adicionar configuraes a partir deste outro arquivo. Voc poderia colocar o contedo deste arquivo no prprio proftpd.conf, mas resolvi adotar este mtodo pois deixa
as configuraes separadas por usurio, no deixando muito grande e bagunado o arquivo principal. Agora crie o arquivo /etc/proftpd/tobias.conf e coloque o seguinte contedo: <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
</Limit> </Directory> Estas linhas indicam que o usurio tobias, atravs do FTP, poder apenas acessar os diretrios /home/tobias (que alm de ser seu diretrio HOME, contm os links para mand-lo para outros diretrios no sistema), /var/www/html, /var/log/httpd e /etc/httpd/conf. Todos os outros diretrios sero negados ao usurio. Deu para notar como funciona o mtodo n? No to difcil, apenas uma idia para contornar o problema de "segurana mxima" que o chroot oferece. Dicas - Servidor X P: No consigo iniciar o servidor X, e ganho o seguinte erro: Fatal server error: could not open default font 'fixed'. R: Este erro significa que o servidor X no conseguiu uma fonte padro para usar. Isso pode ter ocorrido por dois motivos principais: 1. Voc no est com o servio xfs rodando 2. Voc no 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 servio, tente: /etc/rc.d/init.d/xfs start Ou o equivalente na sua distribuio. Se voc quiser mexer na configurao do xfs, ento edite o arquivo: /etc/X11/fs/config
Caso no seja isso, voc vai precisar instalar os pacotes das fontes, que so 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 distribuio, como sempre. No caso as principais fontes so a base e a de 75dpi. Dicas - Tomcat P: Como desabilitar a listagem de diretrios quando no h um index? R: No diretrio de configurao do Tomcat, edite o arquivo 'web.xml'. Voc pode desabilitar essa caracterstica padro do Tomcat no servlet 'default', que j vem pr-configurado. Geralmente as tags do servlet default se encontram no comeo do arquivo. Veja o exemplo: <servlet> <servlet-name>default</servlet-name> <servletclass>org.apache.catalina.servlets.DefaultServlet</servletclass> ... </servlet> Um dos parmetros deste servlet o listings, e ele que voc deve desabilitar. Por padro, fica como 'true', ento colocaremos 'false': <init-param>
<param-name>listings</param-name> <param-value>false</param-value> </init-param> Depois s salvar o arquivo, reiniciar o Tomcat e ir pro abrao! Dicas - VIM P: Como associo um novo tipo de extenso com um novo syntax highlight? R: Quando o Vim carrega o arquivo, ele verifica em suas configuraes que tipo de cores de sintaxe ele vai carregar para cada tipo de extenso. A configurao est localizada no arquivo filetype.vim, encontrado no diretrio de arquivos de configurao do vim. Este diretrio vai depender muito da sua distribuio, e da verso do prprio vim que voc estiver utilizando. Um exemplo seria: /usr/share/vim/vim61/filetype.vim Mas se voc no estiver com muito saco para sair procurando pelo arquivo de diretrio em diretrio, busque pelo arquivo filetype.vim. Olhando inicialmente para ele, parece meio dificil, mas voc s vai precisar alterar coisas mnimas. Use o bom senso e veja o exemplo: (Antes:) " HTML (.shtml for server side) au BufNewFile,BufRead *.html,*.htm,*.shtml html (Depois:) " HTML (.shtml for server side)
setf
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.tpl setf html Aqui eu adicionei a extenso .tpl (de templates) para que use as cores de sintaxe do HTML. Agora vamos supor que voc queira associar a extenso .sex ao arquivo de sintaxe ecchi.vim: au BufNewFile,BufRead *.sex setf ecchi
O arquivo ecchi.vim ter todas as especificaes de cores, e ter que fica no subdiretrio syntax/, dentro do diretrio do vim que citei um pouco acima. E por ltimo, caso voc queira usar um certo tipo de sintaxe durante a execuo do Vim, s utilizar o comando (por exemplo): :set syntax=python Dispositivos no Linux O que so dispositivos? Um dispositivo todo o componente de hardware, e do sistema operacional. Um dispositivo "algo especial" que compartilhado com o Kernel, ou seja, um exemplo de dispositivo so as impressoras, CD-ROMs, modems, portas, mouse, HDs, etc. No Linux, os dispositivos fsicos so tratados como arquivos. Estes arquivos so um tipo especial no sistema de arquivos e se encontram no diretrio /dev. Se voc der um ls neste diretrio, ver que existe um pouqunho de arquivos (Bota pouquinho nisso :)). Cada arquivo neste diretrio corresponder a um dispositivo de acordo com o seu tipo. Se voc usava DOS/Windows antes, voc acessava o drive C:, lembra? No Linux no existe isso! Vai ser um
dispositivo no lugar... Voc vai usar isso o tempo todo, porque voc vai mexer com mouse, com impressora, IDE's, SCSI's, etc. Ento aqui vai alguns arquivos do /dev e seus respectivos dispositivos: /dev/hdXX Aqui correspondete as Interfaces IDEs, ou seja, tudo que 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 partio. Veja a tabela seguir: Dispositivo /dev/hda /dev/hda1 /dev/hda2 /dev/hdb /dev/hdb1 /dev/hdb2 /dev/hdc /dev/hdc1 /dev/hdc2 /dev/hdd /dev/hdd1 /dev/hdd2 ... Descrio IDE Primria Master Partio 1 da IDE Primria Master Partio 2 da IDE Primria Master IDE Primria Slave Partio 1 da IDE Primria Slave Partio 2 da IDE Primria Slave IDE Secundria Master Partio 1 da IDE Secundria Master Partio 2 da IDE Secundria Master IDE Secundria Slave Partio 1 da IDE Secundria Slave Partio 2 da IDE Secundria Slave ...
Perceba aqui que cada hdx vai at os nmeros 2, mas no apenas at o 2, pode ir mais longe. Dependendo de quantas parties tiver o seu HD, pode ser 3, ou 4, ou 9 por exemplo. /dev/fdX
Aqui o dispositivo equivalente ao drive de disquete, onde o x corresponde a qual driver. Caso voc tenha apenas 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 se logar nesse terminal. Ou seja, um terminal serve para voc6e se logar e usar uma shell (interpretador de comandos). O /dev/ttyX corresponde a cada terminal, onde X vai ser substitudo pelo nmero do terminal (so 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 tambm pode se deparar com /dev/ttypX. Neste caso para terminais acessados por telnet/ssh. /dev/ttySX Portas seriais! Na verso 2.2.x do kerne, estas portas seriais correspondem ao modem, ao mouse, e outras coisas ligadas nas 'COMs'. Veja a tabela: Dispositivo /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 Descrio COM1 (Porta serial 1) COM2 (Porta serial 2) COM3 (Porta serial 3) COM4 (Porta serial 4)
Agora se voc usa um kernel velho de verso anterior a 2.2.x, ao invs de ser /dev/ttySX, vai ser /dev/cuaX. Ou seja, voc ter os equivalentes como /dev/cua0,
/dev/cua1, /dev/cua2 e /dev/cua3. E estes dispositivos /dev/cuaX so usados para determinar os modems. /dev/lpX Corresponde a porta da impressora ou porta de um servio paralelo. X o nmero correspondente a porta... 0 = LPT1 por exemplo. /dev/plipX Esse dispositivo corresponde a uma conexo de cabo paralelo. O X ser o nmero correspondente a porta, como no exemplo anterior. /dev/console Este um dispositivo especial, simbolizando os consoles (terminais no-grficos). /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 so muitos e listar todos eles aqui no seria to legal assim. Voc pode explorar o diretrio /dev procurando saber sobre eles. Se voc por acaso apagou um dispositivo e quer saber como cri-lo, utilize o script /dev/MAKEDEV. Basicamente voc usa este script assim: # /dev/MAKEDEV ttyS3 Isto ir criar o dispositivo ttyS3. Para mais informaes sobre a criao de dispositivos, utilize a manpage do MAKEDEV ou do mknod. Na verdade o /dev/MAKEDEV apenas um script para intermediar o usurio e o comando mknod... O mknod o que faz o trabalho mais rduo :)
Montando os dispositivos Primeiro eu espero que voc tenha lido sobre o que um dispositivo. Agora vamos saber como se usar um dispositivo, ou seja, um HD, um disquete, um CDROM, etc. O comando que usaremos aqui o mount, que pelo prprio nome, podemos ver que ele serve para 'montar' dispositivos em um certo lugar. Vamos falar primeiro sobre como montar o disco flexvel. Para faz-lo o seguinte. O Linux trata todos os seus dispositivos como arquivos device, estes arquivos esto localizados no diretrio "/dev". Para o caso do disco flexvel, o Linux trata como /dev/fdx, onde x o nmero 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 flexvel ento, colocamos o disquete, e executamos o seguinte comando: # mount /dev/fd0 /diretorio_onde_o_disco_vai_ser_montado O diretrio_onde_o_disco_vai_ser_montado tem que existir, e tem que estar totalmente vazio. Este diretrio, que voc pode nomear como quiser funciona como se voc estivesse no disquete. Agora se voc quer montar outro disquete, voc ter que desmontar o disquete montado primeiro, para depois poder montar outro. Para o desmonte, usa-se o comando "umount": # umount /dev/fd0 (ou) # umount /diretorio_onde_o_disco_esta_montado Voc pode tambm fazer o seguinte, criar um shell script, que se chama, por exemplo de 'diskon' (Para ativar) e 'diskoff' (Para desativar). Ento para melhor utilizao, coloque este arquivo em um diretrio
PATH, ou ento coloque o PATH no diretrio onde voc quiser colocar os scripts. Agora vamos montar uma partio. o mesmo esquema de montar o disco flexvel, s que o arquivo do dispositivo diferente. Para parties em um HD IDE, os nomes dos dispositivos so /dev/hdxx, onde o primeiro x a letra correspondente ao HD (na ordem a, b, c, d, e por a vai), e o segundo x correspondente ao nmero da partio. Para parties em um HD SCSI, os nomes dos dispositivos so /dev/sdxx, onde o primeiro x a letra correspondente ao HD (na ordem a, b, c, d, e por a vai), e o segundo x correspondente ao nmero da partio. Se eu quero montar a partio /dev/hda2 (HD nmero 1, partio nmero 2), eu fao: # mount /dev/hda2 /diretorio E para desmontar, usa-se o comando umount: # umount /dev/hda2 (ou) # umount /diretorio Existe tambm no comando mount, o parmetro -t, que vai indicar que tipo de sistema de arquivos a partio usa (FAT32, FAT16, minix, ext2, UMSDOS, etc). Se voc no colocar esta opo, o comando fora uma compatibilidade para a montagem. O recomendado colocar esta opo, pois s vezes o mount no consegue detectar qual o sistema de arquivos, e gera um erro. Um exemplo do uso da opo -t : # mount -t vfat /dev/hda2 /diretorio Este comando montar uma partio 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
tem como nome /dev/hdx, onde x a letra correspondente posio do CD-ROM na IDE. Para montar um exemplo, faamos: # 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 no um dispositivo, e sim um link simblico para o dispositivo correspondente ao CDROM (/dev/hdx). Isso quer dizer que voc pode substituir o /dev/cdrom pelo /dev/hdx tranqilamente, assim como pode tambm modificar o link simblico para apontar para outro dispositivo. Existe outro mtodo de montagem muito mais prtico do que os citados acima... uma pr-configurao de montagem no arquivo /etc/fstab. Este arquivo contm as informaes de montagem para os dispositivos e seus diretrios. Por exemplo, quando a sua distribuio inicia, ela procura no /etc/fstab para saber onde est a raiz do seu sistema, e vai montar no /. Tambm contm informaes de montagem para os diretrios especiais como o /proc, e at mesmo para o uso da memria 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 0 0 /dev/cdrom /mnt/cdrom iso9660
Viu este exemplo? Por exemplo, peguemos a segunda linha. Esta segunda linha a minha raiz, que est na partio /dev/hda5, ser montada automaticamente ('defaults') no diretrio "/" durante a inicializao. E esta partio tem o sistema de arquivos ReiserFS. Na primeira temos a montagem da memria SWAP... E vejamos a linha que comea com /dev/cdrom. Aqui facilita as coisas porque os parmetros 'user,noauto,ro' significam que qualquer usurio pode montar o CD-ROM (user), no montado automaticamente na inicializao (noauto) e montado como somente leitura. Qual a diferena? O comando mount s pode ser usado pelo root, mas com essa opo no /etc/fstab, um usurio comum pode montar o cd-rom apenas com o comando "mount /mnt/cdrom", ou "mount /dev/cdrom". A sintaxe deste arquivo no muito difcil, e vendo este exemplo aqui, voc pode muito bem criar suas prprias configuraes para dar mais praticidade no seu uso com os dispositivos no Linux! Mexa vontade, mas nunca nas linhas que j vm, pois se no o Linux pode no achar sua partio e poder no conseguir iniciar o sistema, e voc ter de bootar com um bootdisk para consertar isto... Ento mexa, mas pense duas vezes antes de mexer :) Comentrios das distribuies Linux Red Hat
A empresa americana Red Hat, caracterizada com uma pessoa "sombra" com um chapu vermelho, foi uma das pioneiras no tratamento srio do Linux. Desde o incio ela uma das principais distribuies mundiais, e tem influncias em todos os lugares. Sua equipe no apenas ajuda na distribuio em si, mas tambm no prprio Linux (como o caso do kernel-hacker Alan Cox). Vrias e vrias distribuies comearam se baseando nesta distribuio, o que a faz uma boa base para todos. Criadora do RPM, o gerenciador de pacotes mais usado atualmente no Linux, a Red Hat atualmente tm uma distribuio mais voltada para o mercado de servidores. Mas isso no quer dizer que ela no seja boa tambm para uso domstico. Voc encontra nela uma facilidade de manuseio, pacotes atualizados e muita coisa que fazem muita gente fica apegada esta distribuio. http://www.redhat.com Slackware Podemos dizer que o Slackware uma das mais famosas distribuies para Linux. O seu criador, Patrick Volkerding, lanou a primeira verso da distribuio em Abril de 1992, e desde ento segue uma filosofia bem rgida: manter a distribuio o mais parecido com o UNIX possvel. As prioridades da distribuio so: estabilidade e simplicidade, e isso que a torna uma das mais populares distribuies disponveis. O Slackware tem uma fama de ser difcil de usar, mas isto no verdade. Ele possui uma interface de instalao bem amigvel, alm de uma srie de scripts que ajudam na instalao e desinstalao de pacotes.
O problema que muitos pensam que tm de se pegar as fontes dos programas, compil-los, instal-los para depois usar no Slackware, mas isso no verdade! O sistema padro de pacotes do Slackware o .tgz (que ao contrrio do que muitos pensam, no igual ao .tar.gz, pois contm algumas informaes adicionais sobre a instalao), e as atuais verses do Slackware tambm vem com o gerenciador de pacotes RPM, podendo assim instalar os aplicativos j compilados em ambos os formatos. O Slackware pode ser uma alternativa tanto para usurios iniciantes como os j experientes. As opes de instalao permitem que o usurio possa instalar em sua mquina uma distribuio que tem como caractersticas 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 necessrios (utilitrios de rede, servidores http, noticias, e-mail, ftp, etc). Os pacotes sempre esto em atualizao, mantidos por uma verso especial da distribuio: o slackware-current. Isto desfaz o mito de que o slackware no uma distribuio "dinmica". Todos aqueles aplicativos esto disponveis, e so atualizados regularmente. Ento o nico potencial que o Slackware ainda no tem um gerenciamento de pacotes que permita uma checkagem de dependncias... Fora isso, ela atende todas as boas exigncias facilmente! Voc poder obter mais informaes e fazer o download desta distribuio atravs da pgina oficial que fica no seguinte endereo: http://www.slackware.com Debian
Talvez a filosofia do Debian seja o ponto que mais chama ateno nesta popular distribuio! No incio, antes do Linux ser lanado oficialmente por Linus Torvalds, o projeto GNU j tinha vrias ferramentas Unix-like disponveis. O que faltava era um kernel, e ento quando Linus Torvalds lanou o seu kernel Linux, resolveram ento criar o GNU/Linux. No, no outro sistema diferente, s um nome para chamarem as distribuies que usam o kernel Linux, e que tm ferramentas feitas pelo projeto GNU. Mas o que isso tudo tem haver com o Debian? O Debian GNU/Linux uma distribuio que segue toda esta filosofia do projeto GNU, oficialmente contendo apenas pacotes com programas de cdigo-fonte livre, feito por voluntrios espalhados pelo mundo, e sem fins lucrativos alguns. Apesar de atualmente o Debian ser usado com o kernel Linux, ele se entitula como um sistema operacional que pode usar no apenas o kernel do Linux em si, mas outros kernels como o Hurd (projeto de kernel livre feito fora do escopo do Linux). Isso o faz o "Sistema Operacional Universal", pois o principal objetivo deles fazer um sistema que rode em todos os lugares e com vrios kernels. E claro, isso tudo na filosofia GNU. O Debian tem uma quantidade incrvel de pacotes precompilados para vrios tipos de arquitetura. Ele conta com mais de 3950 pacotes, que facilitam e muito a instalao e gerenciamento de programas no sistema. Alm do mais, ele o pai do apt, a ferramenta de atualizao de pacotes automtica, feita pela internet. Mas h quem diga que o Debian ainda tem muito o que melhorar: Uma instalao complicada e ideologismo demais so alguns pontos fracos que muita gente
encontra nesta distribuio. Cabe voc ver se a distribuio certa ou no. http://www.debian.org Conectiva Uma empresa de servios ISP, que trabalhava com Linux, resolveu desafiar a rotina e comeou a criar uma distribuio baseada na RedHat. Esta empresa brasileira criou (at onde eu saiba) a primeira distribuio brasileira, o Conectiva Red Hat Linux. A primeira verso se chamou Parolin, e no continha muita coisa alm de tradues da distribuio Red Hat. Porm, seu desenvolvimento foi crescendo e resolveram partir para um rumo prprio, fazendo suas prprias alteraes e ideologias na distribuio em uma rota diferente da empresa americana Red Hat. Ento surgiu o que atualmente conhecemos de Conectiva Linux. A partir do ano de 1999, o Linux comeou a explodir de popularidade no Brasil. E o Conectiva Linux, que j estava na sua verso 3.0, ficou muito popular entre os usurios brasileiros, e foi isso que fez com que a empresa conseguisse investir mais ainda na distribuio. O Conectiva Linux atualmente uma boa distribuio brasileira, que provou ser to boa quanto as estrangeiras. H quem aponte seus pontos fortes e fracos... Apesar de ter tomado um rumo diferente ao da Red Hat, sua distribuio ainda se baseia nos conceitos bsicos da americana, assim como muitas outras baseadas na Red Hat. Mas muita coisa boa foi feita para melhorar a distribuio, como a criao do apt (ferramenta de atualizao de pacotes) para pacotes RPM, o GNU parted (particionador), tradues
diversas para o portugus, entre outras coisas. O objetivo da distribuio tornar fcil as coisas para os usurios novos, sem comprometer muito o andamento do sistema. http://www.conectiva.com.br SuSE A SuSE (no, no a amiga da Barbie!) uma empresa alem que uma das maiores influncias do Linux no mundo, junto com a Red Hat. No incio, a SuSE baseava sua distribuio no Slackware, mas logo depois tomou rumo diferente, comeando a implementar os pacotes com o RPM, e fazendo mudanas na forma de organizao do sistema. Criaram tambm uma ferramenta de configurao do sistema chamada YaST, que facilita e muito mexer nas configuraes da distribuio. Atualmente o SuSE utilizado por muitas mquinas na Europa, incluindo instituies educacionais e no governo. Sem dvida uma distribuio notvel, porm no muito usada no Brasil. http://www.suse.de/br/ Mandrake Esta empresa francesa resolveu apostar no Linux como um sistema fcil para todos! E esse o objetivo principal da empresa, criar uma distribuio fcil para todos os tipos de pessoas usarem. Baseada na americana Red Hat, o Mandrake vm com vrios programas de configurao fceis de ser utilizados e bem teis. Durante o crescimento brusco do Linux mundialmente, o Mandrake adquiriu muitos fs e uma popularidade incrvel principalmente na Amrica do Norte, atravs de sua interface fcil e dinamismo. http://www.mandrake.com
LRP (Linux Router Project) J pensou no dinheiro que voc ter de gastar para comprar um roteador? Se voc precisar de um roteador, vai precisar de dinheiro tambm. O Linux Router Project (Projeto Linux Roteador) uma minidistribuio que cabe em apenas um disquete, e que contm os utilitrios de rede bsicos para deixar um computador com duas placas de rede funcionando como um roteador. A configurao mnima 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-distribuio : http://www.linuxrouter.org LFS (Linux From Scratch) O Linux From Scratch um projeto interessantssimo para quem quer ver fundo como funciona a criao de uma distribuio Linux. O autor no estava satisfeito com nenhuma distribuio que tinha usado, e resolveu criar uma pra ele mesmo. a que entra o esprito: ele fez um tutorial passo-a-passo de como ele montou a distribuio dele, e compartilhou com todos. Assim, com estas instrues, qualquer um pode montar sua prpria distribuio. O nome Linux From Scratch significa "Linux do Zero" em ingls, e muito bom! O site oficial para esta "distribuio" fica no seguinte endereo: http://www.linuxfromscratch.org Zipslack O zipslack um mini-Slackware, feito para rodar numa partio DOS/Windows. Atravs desta verso especial, possvel qualquer um pegar na internet um arquivo em formato .zip, descompact-lo no diretrio c:\linux e usar o linux vontade! Para realizar este feito, usa-se
o sistema de arquivos UMSDOS, e atravs do utilitrio "loadlin" (substitui o LILO), o kernel carregado. O arquivo do zipslack vem bem "enxuto", mas voc pode rechear simplesmente pegando os pacotes .tgz e instalando-os com o comando "installpkg pacote.tgz", e com isso voc pode instalar o sistema X, junto com os Gerenciadores de janelas, e tambm servidores como o Apache. Por que o nome zipslack? Esta minidistribuio foi feita para se rodar em um disco de zipdrive, e tem um limite de 100MB. Claro que voc pode optar em no utilizar um zipdrive, e assim poder usar o espao que quiser, mas um recurso muito bom para alguns utilitrios bsicos que voc pode carregar para todo lugar junto com o disquete e drive do zipdrive. O site oficial dele o mesmo que o do Slackware, no seguinte endereo: 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 um certo canal, servindo arquivos livremente para as outras pessoas. No Windows isso j uma realidade bem comum, mas no Linux algo um pouco ainda oculto. Este tutorial ensina qualquer usurio que tenha uma conta shell em um sistema Linux montar seu file server, e no necessita nem de interface grfica. 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 distibuies geralmente vm com ele, ento
possivelmente no ser necessrio baixar e compilar o programa, pois ou voc j tem instalado, ou deve vir um pacote pronto na sua distribuio. Verifique se o programa est instalado com o comando: "which screen". Se aparecer o cominho do executvel, ento ele existe, se no aparecer nada, tem que ser instalado :) X-Chat - http://www.xchat.org - O X-Chat um cliente de IRC muito bom que inicialmente foi feito pra GTK+ (grfico). Mas como o autor fez o programa de forma modular, ele criou como demonstrao um pequeno front-end em modo texto. O front-end no muito bom, mas serve muito bem para o que queremos no momento. Baixe o cdigo-fonte do X-Chat estvel mais novo, pois iremos compilar apenas o modo-texto e usar em conjunto com o programa screen. Obsidian File Server http://tlm.conectiva.com.br/fserver_linux/obsidian0.9.1-pre3.pl - Este um script feito em perl que introduz 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 cdigofonte do programa, vamos aos passos da compilao: $ tar jpfx xchat-1.8.11.tar.bz2 $ cd xchat-1.8.11 $ ./configure --disable-gtkfe --disable-glib --disablegnome \ --disable-zvt --disable-gdk-pixbuf --disablexlib \ --disable-glibtest --disable-gtktest [...configurando a compilao...]
xchat 1.8.11 Building GTK+ Interface .... : no Building TEXT Interface .... : yes gnome-libs .......... : no gnome panel ......... : no perl ................ : yes gdk-pixbuf........... : no python .............. : no mmx tinting ......... : yes zvt shell tab ....... : no nls/gettext ......... : yes plugin interface .... : yes glib replace ........ : yes link with socks5 .... : no translation tables .. : yes openssl support ..... : no japanese conversion . : no ipv6 support ........ : no hebrew support ...... : no $ make [...compilando...] $ cd src/fe-text $ strip -s xchat-text Pronto. Se tudo ocorreu bem, o X-Chat foi compilado com xito. Agora vamos criar um diretrio que vai ser o "home" do file server. Eu procuro sempre deixar o file server com um usurio especial para ele. Ento vou criar o usurio fserver, com o seu diretrio home sendo o /var/fserver, pois aqui a partio que tem mais espao o /var. No se esquea deste diretrio home, pois usaremos em outros lugares neste tutorial. # adduser fserver -d /var/fserver # passwd fserver
Changing password for user fserver. New password: Retype new password: passwd: all authentication tokens updated successfully. Agora logue-se como este usurio, ou execute o comando "su - fserver", que te transforma no usurio fserver. Vamos criar ento a estrutura de diretrios do file server: $ pwd /var/fserver $ mkdir bin .xchat incoming fserver Agora vamos colocar os arquivos necessrios para o funcionamento do file server. Antes de mais nada, voc precisar colocar o programa xchat-text dentro do diretrio bin do usurio fserver. V no diretrio onde voc descompactou e compilou o cdigo-fonte do xchat e copie: $ cd src/fe-text $ cp xchat-text /var/fserver/bin Agora execute o xchat-text para ele criar os arquivos de configurao padres do x-chat. Depois aperte CTRL+C para sair do mesmo. Vamos ento criar o script que ir iniciar o file server. Crie um arquivo chamado "/var/fserver/bin/fserver" e coloque o seguinte contedo: #!/bin/bash # case $1 in start) screen -A -m -d -S fserver /var/fserver/bin/xchattext ;;
stop) screen -r fserver ;; esac Depois transforme este arquivo em executvel: $ chmod +x /var/fserver/bin/fserver Este script quando executado, chamar o programa screen para rodar em background o programa xchattext. Mas se ele est em background, como diremos ele para conectar a um certo servidor e entrar em um certo canal? Para isso faremos um script em perl. Crie o arquivo "/var/fserver/.xchat/script.pl" com o seguinte contedo: #!/usr/bin/perl -w # Funo que entra identifica o nick, liga o file server e entra nos canais sub entrarcanais { IRC::command("/nickserv identify minhasenha"); IRC::command("/fs on"); IRC::command("/join #canal"); } # Inicialmente conectar no servidor e depois de 1 minuto (6000 milisegundos), # executar a funo acima "entrarcanais" IRC::command("/server irc.brasnet.org"); IRC::add_timeout_handler(60000,"entrarcanais"); # Funo que de 5 em 5 minutos atualiza o file server sub flushfiles { IRC::command("/fs on"); IRC::command("/fs update_files");
IRC::add_timeout_handler(300000,"flushfiles"); } # Ativa o timer que executa a fuo flushfiles em 5 minutos IRC::add_timeout_handler(300000,"flushfiles"); Pronto, agora quando o xchat-text for iniciado, ele automaticamente vai carregar este script em perl. Agora falta configuramos melhor o xchat. Por padro, a interface texto no cria um xchat.conf muito decente. Ento sobrescreva o arquivo "/var/fserver/.xchat/xchat.conf" colocando o seguinte contedo: auto_indent = 1 auto_resume = 1 auto_unmark_away = 0 autodccchat = 1 autodccsend = 1 autodialog = 1 autoopendccchatwindow = 1 autoopendccrecvwindow = 1 autoopendccsendwindow = 1 autoreconnect = 1 autoreconnectonfail = 1 autorejoin = 1 autosave = 1 autosaveurl = 0 awayreason = I'm busy background_dialog_pic = background_pic = ban_type = 0 beep_msg = 1 beep_chans = 0 bluestring =
chanmodebuttons = 1 channelbox = 0 cmdchar = / colorednicks = 0 ctcp_number_limit = 5 ctcp_time_limit = 30 dcc_blocksize = 4096 dcc_ip = dcc_permissions = 420 dcc_remove = 0 dcc_send_fillspaces = 1 dcc_stall_timeout = 60 dcc_timeout = 180 dccdir = /var/fserver/incoming dccwithnick = 0 dialog_height = 100 dialog_indent_nicks = 1 dialog_indent_pixels = 80 dialog_show_separator = 1 dialog_tint = 1 dialog_tint_blue = 151 dialog_tint_green = 151 dialog_tint_red = 151 dialog_transparent = 1 dialog_width = 300 dialog_wordwrap = 1 dnsprogram = host doubleclickuser = /QUOTE WHOIS %s fastdccsend = 1 filterbeep = 0 first_dcc_send_port = 0 font_dialog_normal = -misc-fixed-medium-rsemicondensed-*-13-*-*-*-c-*-iso8859-15 font_normal = -misc-fixed-medium-r-semicondensed-*13-*-*-*-c-*-iso8859-1
font_shell = fudgeservernotice = 0 hide_version = 0 hidemenu = 0 hideuserlist = 0 hilight_notify = 0 hilightnick = 1 host_in_userlist = 0 hostname = indent_nicks = 1 indent_pixels = 80 inputgad_superfocus = 1 invisible = 0 ip_from_server = 1 lagometer = 2 last_dcc_send_port = 0 limitedtabhighlight = 1 logging = 0 logmask = %s,%c.xchatlog mail_check = 0 mainwindow_height = 477 mainwindow_left = 121 mainwindow_save = 1 mainwindow_top = 178 mainwindow_width = 714 max_auto_indent = 256 max_lines = 3000 msg_number_limit = 5 msg_time_limit = 30 newtabs_to_front = 1 nick_suffix = : nickcompletion = 1 nickgad = 1 nickname1 = Nick1DoFserver nickname2 = Nick2DoFserver
nickname3 = Nick3DoFserver notices_tabs = 0 notify_timeout = 15 nu_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 = 0 quitreason = Client Exiting raw_modes = 0 realname = Campo Nome reconnect_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 = 0 tabchannels = 1 tabs_position = 0 thin_separator = 1
throttle = 1 throttlemeter = 2 timestamp = 0 timestamp_logs = 0 timestamp_log_format = %b %d %H:%M:%S tint = 1 tint_blue = 151 tint_green = 151 tint_red = 151 topicbar = 1 transparent = 1 trans_file = treeview = 0 truncchans = 0 use_fontset = 1 use_server_tab = 0 use_trans = 0 userhost = 1 userlist_sort = 0 userlist_icons = 1 userlistbuttons = 1 username = fserver wallops = 1 whois_on_notifyonline = 0 windows_as_tabs = 1 wordwrap = 1 Sim, este um arquivo de configurao para o X-Chat modo grfico, mas as opes que tem a mais no vo influenciar em nada, e tudo que queremos vai estar a. Voc s precisa modificar as linhas que esto em negrito, que so os campos de Nick, Nome Real, Username, entre outros. Veja que tambm a linha "dccdir = /var/fserver/incoming" dir que todo arquivo que o file server pegar vai para este diretrio. Nesta
configurao o DCC Get est habilitado para pegar automaticamente os arquivos, mas se voc quiser desabilitar isso, mude no arquivo acima o valor da varivel "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 diretrio "/var/fserver/.xchat". O X-Chat ir carregar este script automaticamente na inicializao. E parar configurar, crie um arquivo chamado "/var/fserver/.xchat/obsidian.conf" com o seguinte contedo: debug:0 ctcptrigger:1 restorequeues:1 autoon:1 notice_as_msg:0 short_notice:0 raw_chnl_msg:1 raw_wlcm_msg:0 open_tab_early:1 close_tab_auto:0 case_cmd:0 case_file:0 fs_sensitive:0 count_sends:1 send_small_now:1 ads_when_full:1 priority_op:1 priority_voice:1 max_users:10 max_sends:3 max_queues:20 slots_big:1 slots_med:4
slots_small:10 size_big:30000000 size_med:1000000 max_fails:5 min_speed:0 idle_time:180 trigger:!boboalegre serve_no_notify:#testchnl2 serve_hidden:#testchnl3 notify_to_voice:#testchnl2 notify_channels:#canal notify_timeout:0 root_dir:/var/fserver/fserver note:Aqui esto alguns arquivos!! XUGUEM! auto_backup:60 logo:^C14[^C13Osidian FServe^C14]^C c1:^C13 c2:^C14 c3:^C13 c4:^C15 As linhas em negrito so as principais que voc tem que 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 usurios podem dar uma olhada no file server ao mesmo tempo. max_sends:5 - Quantos envios simultneos o file server pode fazer (1 por pessoa). max_queues:50 - Quantos queues (ou slots) podem ser ocupados no file server.
slots_big:1 - Quantos slots uma pessoa pode ter com arquivos grandes. slots_med:4 - Quantos slots uma pessoa pode ter com arquivos mdios. slots_small:10 - Quantos slots uma pessoa pode ter com arquivos pequenos. size_big:30000000 - Qual o tamanho em bytes para um arquivo ser considerado grande (Aqui: 30MB size_med:1000000 - Qual o tamanho em bytes para um arquivo ser considerado mdio (Aqui: 1MB) max_fails:5 - Quantas falhas a transfer6encia pode ter 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 tempo anunciar o file server? (0 = Modo em Silncio) root_dir:/var/fserver/fserver - Diretrio onde ficam os arquivos do file server note:Aqui esto alguns arquivos!! XUGUEM! Mensagem do file server
Voc pode mexer nas outras opes tambm, mas eu no 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 momento chegar no prompt de comando e digitar: $ screen -r fserver
Isso ir restaurar a janela do file server, e voc poder utilizar ele como quiser. Inclusive mudar as configuraes em tempo real com o comando "/fs". Para poder voltar ao prompt de comando sem ter que sair do xchat-text, utilize a seqncia de teclas CTRL+A D (CTRL+A, solta e aperta D logo em seguida). Pronto! Foi to difcil assim? Esse mtodo timo para as pessoas que tem vrias mquinas rodando Linux por a, principalmente porque voc pode controlar os file servers via SSH, sem a necessidade de interface grfica nenhuma. Mas isso tudo funciona com interface grfica tambm, s colocar o script perl do obsidian e o arquivo de configurao no diretrio .xchat do seu home, que ao xchat grfico iniciar, ele tambm ir carregar o script com as configuraes. Boa sorte! Sistema de arquivos proc O sistema de arquivos /proc um diretrio especial onde fica todas as informaes de depurao do kernel. Tambm se encontram algumas configuraes que habilitam e desabilitam o suporte alguma coisa no kernel. muito til para o diagnstico do seu hardware. Vou aqui comentar arquivos do /proc para voc 'depurar' o seu hardware: Aqui esto os dispositivos encontrados no seu sistema, incluindo modem, placa de som, placa de rede, teclado, impressora, etc. /proc/interrupts Neste arquivo esto as informaes das IRQs dos dispositivos.
/proc/devices
Informaes sobre os endereos das portas I/O (Input/Output). /proc/pci Dispositivos PCI instalados no sistema. O comando 'lspci' tambm serve para mostrar esse arquivo. /proc/cpuinfo Aqui voc pode ver as caractersticas do seu processador e mquina. /proc/filesystems Sistemas de arquivos suportados pelo kernel. /proc/devices Dispositivos gerais instalados. /proc/meminfo Informaes da memria usada. O comando 'free' tambm serve para mostrar este arquivo. /proc/modules Mdulos carregados no kernel. O comando 'lsmod' tambm serve para mostrar este arquivo. /proc/mounts Parties montadas. O comando 'mount' sem parmetro nenhum mostra esse arquivo. /proc/partitions Parties existentes e que o Linux reconheceu. /proc/version Verso do kernel. O comando 'uname' tambm serve para mostrar este arquivo. Explore este diretrio! S no d um cat no arquivo /proc/kcore, por favor! :) kcore = kernel core. Uso e Segurana com o .htaccess no Apache 1. Introduo
/proc/ioports
Oi pessoal, neste tutorial vou tocar em alguns mtodos dee segurana com os arquivos .htaccess do Apache, para proteger diretrios na Web, criar meios de login controlado, e outras utilidades deeste arquivo. O .htaccess um arquivo especial para o Apache. Quando um usurio est navegando por alguma pgina do seu servidor Apache, para todo diretrio que ele tentar acessar (e se o servidor estiver configurado para isso), o Apache procura pelo tal do .htaccess e se encontrar, verifica alguma restrio ou liberao para o usurio. Com isso podemos fazer duas coisas bsicas em relao segurana: Restringir acesso aos arquivos e diretrios do servidor Web atravs de um usurio e senha, ou ento pelo IP/Hostname de quem est acessando. Trataremos dos dois assuntos aqui neste 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 configurao do Apache, que o "httpd.conf". Geralmente ele est localizado no diretrio "/etc/httpd/conf". Dentro deste arquivo, voc encontrar uma ou duas diretrizes mais ou menos desta forma: <Directory /> Options FollowSymLinks AllowOverride None </Directory> ou <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None
Order allow,deny Allow from all </Directory> Nesta configurao do Apache, tudo que est dentro das significa restrties e opes especialmente configuradas para aquele diretrio. No caso acima, eu estou aplicando algumas regras tanto no diretrio base do servidor Web (ou seja, todo o servidor Web, independente do domnio virtual ou qualquer outra coisa), como tambm estou aplicando no diretrio "/var/www/html", que aqui no caso onde ficam as pginas Web. Ento cabe a voc decidir escolher entre as duas diretrizes (ou utilizar a configurao nova nas duas diretrizes mesmo, ou at ento criar uma diretriz nova). 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 opo "Indexes" neste diretrio e colocar o valor "AuthConfig" no AllowOverride. Em "Options", eu digo algumas opes extras que podem ser colocadas neste diretrio. Isso no tem muito haver com este tutorial e nem necessrio, mas sempre bom saber alguma coisa a mais se j no se sabe :) Como a prpria documentao do Apache diz, podemos usar as seguintes opes para diretrios: "None", "All", ou qualquer combinao de "Indexes", "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". A opo "Indexes" faz com que quando no tiver nenhum arquivo do tipo index.html,
index.htm, ou "pginas iniciais", o Apache cria uma pgina com a lista dos arquivos existentes no diretrio. O "Includes" permite colocar arquivos do tipo SSI (Server Side Includes), que so pginas dinmicas antigamente usadas por muitos (Agora a moda PHP, Python, Perl, etc). O "FollowSymLinks" faz com que o Apache aceite links simblicos no sistema, seguindo os diretrios ou arquivos que os links apontam. O "ExecCGI" faz com que neste diretrio possam ser executados arquivos CGI (Common Gateway Interface). A opo ExecCGI pode ser (e geralmente ) encontrada para o diretrio "/var/www/cgi-bin", onde esto localizados os scripts CGI. J o "multiViews" serve para por exemplo, servir pginas de acordo com a preferncia de lngua do usurio (index.html.pt_BR, indeex.html.en, etc). O All significa todas as opes (menos o MultiViews) e o None significa nenhuma :) Deixando de lado essa parte, vamos ao que realmente interessa. A opo "AllowOverride AuthConfig" a que diz para o Apache verificar pelos arquivos .htaccess nos diretrios e aplicar as regras contidas no arquivo nos diretrios e subdiretrios de onde o arquivo esteja localizado. Colocada esta opo, 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 configuraes padres do servidor Apache para colocar novas configuraes para aquele diretrio. Estas configuraes podem ser permisses dee acesso, opes (como as que mostrei acima), entre outros. 3. Utilizando o .htaccess
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 vrias coisas neste arquivo. Neste tutorial estarei usando vrios arquivos .htaccess para demonstrar cada opo cada caso, mas voc pode utilizar um .htaccess no diretrio principal do seu servidor, e definir as permisses e opes colocandoas dentro de tags , , etc. Tentarei dar alguns exemplos aqui. 3.1. Restringindo o acesso por IP/Hostname As vezes precisamos restringir certos arquivos e diretrios para cecrtos IPs. Isso vlido por exemplo, quando voc tem um provedor, e s se quer permitir acessar algumas pginas de administrao os IPs da Intranet do provedor. Para isso pode-se aplicar estas regras no .htaccess. Veja o exemplo abaixo: # Deixa a Intranet acessar Order allow,deny allow from 192.168.0. deny from all Esse exemplo de .htaccess far com que o diretrio, seus arquivos e seus subdiretrios s podero ser acessados por quem estiver na faixa de IP de 192.168.0.1 at 192.168.0.254. Vamos supor agora que eu queira restringir apenas 1 IP, para no acessar um certo diretrio. O .htaccess ficaria assim: # Deixa todo mundo acessar, menos o IP 192.168.0.25 Order deny,allow deny from 192.168.0.25 allow from all E est feito, quando o IP 192.168.0.25 tentar acessar, no vai conseguir. Voc pode substituir o IP por um
hostname, contanto que a opo "HostnameLookups" no httpd.conf esteja habilitada (on). 3.2. Restringindo o acesso por usurio e senha Agora vem uma parte muito interessante. As vezes no temos como restringir apenas por IPs, seja porque o usurio que tem que acessar possa etar em qualquer lugar, ou ter IP dinmico, etc. Para resolver esse caso, podemos utilizar o mtodo de usurio e senha. Antes de mais nada voc ter que ter o utilitrio "htpasswd", que serve para criar um arquivo de senhas criptografadas. Neste tutorial, criaremos 3 usurios exemplo: $ 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 sakura O resultado que temos o arquivo /etc/httpd/auth/acesso com o seguinte contedo: hugo:zEerw0euqYD3k eitch:85QVc5DD0rB8M
sakura:UpZuXkyuIq9hw <P.Observao: Caso voc no tenha o utilitrio htpasswd, voc pode criar as senhas criptografadas com 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 ento s incluir a senha no arquivo como no esquema acima. Como pode ver, as senhas esto criptografadas. Este armazenamento de senhas muito simples. H outros mtodos de se armazenar senhas (arquivos de banco de dados por exemplo), mas por enquanto no vou cobrir isto no tutorial porque no to necessrio. Mas fica extremamente necessrio se houver muitos e muitos usurios e senhas, pois se houver muitos, o processo de autenticao pode demorar um pouco. Agora que o arquivo de usurios e senhas est criado, vamos criar o .htaccess que ir verificar este arquivo. Veja o exemplo do .htaccess: AuthName "Acesso Restrito Usurios" AuthType Basic AuthUserFile /etc/httpd/auth/acesso require valid-user Salve o arquivo e pronto, quando um usurio acessar a URL, o servidor ir verificar este arquivo .htaccess e ir perguntar pro cliente um usurio 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 e Senha", ou coisa deste tipo.
AuthType: Tipo de autenticao. Atualmente o Basic o tipo mais comum. Existe tambm o "Digest", mas ainda no muito utilizado e suportado pelos clientes. AuthUserFile: Onde est o arquivo de usurios e senhas que agente criou. require valid-user: O que o Apache precisa para validar o acesso. Neste caso a gente indicou que precisa de um usurio vlido para acessar a pgina, ou seja, algum que digitou um usurio e senha e bateu com o que est no arquivo de senhas. Pode-se restringir para apenas alguns usurios do arquivo de senhas. Por exemplo, se eu quisesse restringir apenas para o usurio eitch e sakura, ao invs de "require valid-user", ficaria "require user eitch sakura".
Mas se por acaso voc tiver muitos usurios, 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: xxx visitante: yyy empresa: xxx yyy Salve o arquivo e ento criamos trs grupos. Para usar estes grupos, teremos que modificar o arquivo .htaccess anterior para ficar desta maneira: AuthName "Acesso Restrito Usurios" AuthType Basic AuthUserFile /etc/httpd/auth/acesso AuthGroupFile /etc/httpd/auth/grupos require group admin No arquivo acima eu adicionei a linha "AuthGroupFile", que indica pro servidor onde est o
arquivo dos grupos (bem parecido com o "AuthUserFile" hein?) e no "require", coloquei que requer o grupo admin. Simples de entender, no? Agora j d pra brincar bastante restringindo usurios :) 3.3. Opes diferentes Lembra do "Options" na diretriz no tpico 2? Pois , voc pode colocar estas opes tambm no .htaccess. Se por exemplo voc quer que o diretrio onde voc colocou o .htaccess liste os arquivos caso no haja um index.html da vida, voc adiciona o seguinte no .htaccess: Options +Indexes E para tirar essa opo: Options -Indexes E nisso voc pode usar para qualquer uma das opes. 3.4. Mensagens de Erro personalizadas Vamos supor que voc tenha uma sub-pgina 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 cdigo de erro do servidor e apontar para a uma pgina 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 no saiba os cdigos de erro do Apache, a configurao do apache 2.x j tem uma boa ajuda quanto a isto, vou colocar as linhas aqui como referncia (entenda se quiser e puder :P):
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
3.5. Opes para arquivos e diretrios especficos Agora vamos supor que voc queira somente fazer restries para certos arquivos e diretrios. Para isso voc poder fazer tudo o que fazia antes, s que dentro de tags como ou . Veja o exemplo de .htaccess a seguir com comentrios 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 diretrio admin para utilizar senhas <Directory /admin> AuthName "Acesso Restrito Usurios" 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 configurao padro do Apache <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> Entendeu bem como funciona o esquema? Ento s brincar bastante :) 4. Concluso
Pudemos aprender bastante como mexer com o .htaccess, mas o que vimos aqui no foi tudo no. Tem muita coisa ainda que se d para colocar no .htaccess. Como eu disse no incio dedste tutorial, o .htaccess poded comportar todo tipo de configurao de diretrios do Apache, sobrescrevendo as configuraes padres contidas no httpd.conf. Explorar as funcionalidades uma questo de prtica, ento mos a 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 no estavam conseguindo rodar o jlGui ento como no foram poucos os emais espero poder ajudar a turma interessada com esta pequena receita.
Se voc estiver usando o Konqueror quando for pegar o j2se(java) no link de download no selecione "salvar link como" pois o arquivo vir corrompido e no vai se auto descompactar (nem rodar vai).
Na verso RPM do j2se ele ser instalado no diretrio /usr/java/j2sdk1.4.0 na verso tar.gz voc poder instalar neste mesmo caminho ou outro qualquer desde que voc se lembre 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 topo do mesmo arquivo (/etc/profile) aonde se encontra a 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
PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin:/us r/java/j2sdk1.4.0/bin"
Salve o arquivo e faa um logout/login novamente para ativar as mudanas. 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 opes do java para o arquivo /opt/jlGui/.
Dentro deste arquivo (o meu se chama /usr/bin/jlGui) deve conter os seguintes comandos:
Torne-o executvel com chmod +x /usr/bin/jlGui Agora basta digitar no terminal jlGui para chamar o programa.
Aproveitando que j temos o java instalado no sistema, para adciona-lo ao konqueror faa o seguinte:
Adcione a seguinte linha no campo "Caminho para o executvel 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 opo "Habilitar Java globalmente", depois v em JavaScript e ative a mesma opo.
Entre no site http://java.sun.com e voc j poder ver os applets menus (ou seria menus applets?) rodando. Se voc achar necessrio adcionar o CLASSPATH no seu sistema, em /etc/profiles logo depois do JRE adcione a linha:
E CLASSPATH no final da linha "export", faa um logout para ativar as mudana Introduo 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 usurio usar o computador. O criador do Linux se chama Linus Torvalds. Com o nome que o autor tem, j d pra tirar uma concluso da origem do
nome "Linux"... Como o Linux baseado (ideologicamente falando) no Unix, ele juntou o seu nome (Linus) com Unix, e deu Linux :) O Linux um sistema operacional multi-tarefa e multiusurio. Alm disso, ele suportado por vrias plataformas (inclusive as mais populares como a arquitetura Intel, que todo o mundo usa). Ele usado por muitas empresas (principalmente provedores) por sua alta capacidade de Rede e conversao com outros sistemas (como por exemplo, redes Windows e Novell), alm de suportar tambm vrios tipos de sistemas de arquivos. Mas o barato de tudo, e o que deu impulso ao desenvolvimento do Linux justamente por ele ser um sistema livre e gratuito (Open Source). Isso quer dizer que voc no precisa pagar para us-lo, e nem ele requer nenhuma licena de uso. O Linux simplesmente pode ser pego na Internet, copiado de um amigo, ou seja l o que for, sem restries. E alm de gratuito, ele livre! Livre? Sim, livre! O cdigo-fonte do ncleo do sistema (kernel) est liberado sob a licena GPL, e pode ser pego na Internet por qualquer pessoa... Isto quer dizer que qualquer pessoa pode pegar e alterar o cdigo livremente, modificando ao seu prprio gosto e suas prprias necessidades. Por ser livre, o Linux tm como desenvolvedores vrios e vrios hackers espalhados pelo mundo, que contribuem sempre mandando pedaos de cdigos e implementaes Linus Torvalds, que organiza tudo e lana junto ao kernel oficial. Um dos nomes mais conhecidos como contribuidores para o kernel Alan Cox, e voc pode obter uma lista de outros contribuidores do kernel junto com o cdigo-fonte do kernel que pode ser
baixado atravs do endereo ftp://ftp.kernel.org/ (se possvel use mirrors para baixar os kernels). Quem diria que o Linux ia se desenvolver tanto! No comeo nada passava de um grupo de hackers que usavam o sistema. Agora temos muitos usurios caseiros usando, alm de vrias empresas prestando servios (como suporte e desenvolvimento de programas), e todo tipo de coisa mais. Sua popularidade cresceu muito, e continua crescendo. As estatisticas dizem que o Linux vai crescer e crescer, e a tendncia realmente essa! Pois o Linux um sistema operacional de deixar qualquer um de queixo cado. No futuro, acredito que mais e mais empresas vo comear a adotar o Linux como sistema padro, e comear a desenvolver produtos apenas para ele. Deixando de lado um pouco o monoplio de empresas como a Microsoft e seu sistema operacional Windows. Voc ainda no testou? Recomendo voc fazer isso agora! Pode ser um pouco estranho no comeo, mas voc aos poucos vai se acostumando, e acaba por se adaptar totalmente ele! Eu mesmo me adaptei e s uso ele :) Viva o Linux! A histria do Linux Como usurios fiis, no podemos nos esquecer da histria do Linux... Como surgiu isso tudo? Linus Torvalds, o pioneiro criador, era inscrito numa lista de programadores. Um dia ele estava lendo as mensagens e se bateu com uma pergunta: "Lembra-se daquela poca quando os homens escreviam seus prprios drivers de dispositivos (device drivers)?' Ele ento resolveu desafiar a si mesmo, e criar um sistema operacional onde se tinha uma liberdade e no se ficasse "preso' no sistema. O que ele tinha em mente era um Unix! Porm, ele no tinha verba suficiente
para comprar os carssimos 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 de lanar a primeira verso oficial do kernel, Linus mandou a seguinte mensagem para o grupo de notcias comp.os.minix: "Voc suspira por melhores dias do Minix-1.1, quando homens sero homens e escrevero seus prprios drivers de dispositivos? Voc est sem um bom projeto e est morrendo por colocar as mos em um sistema operacional no qual voc possa modificar de acordo com suas necessidades? Voc est achando frustrante quando tudo trabalha em Minix? Chega de atravessar noites para obter programas que trabalhem corretamente? Ento esta mensagem pode ser exatamente para voc. Como eu mencionei a um ms atrs, estou trabalhando em uma verso independente de um sistema operacional similar ao Minix para computadores AT386. Ele est, finalmente, prximo do estgio em que poder ser utilizado (embora possa no ser o que voc esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuio. Ele est na verso 0.02... contudo eu tive sucesso rodando o bash, gcc, gnu-make, gnu-sed, compresso e etc nele." No dia 5 de Outubro de 1991, Linus Torvalds anunciou a primeira verso oficial do Linux, verso 0.02. Desde ento muitos programadores tm respondido ao seu chamado, e tm ajudado a fazer do Linux o sistema operacional que hoje, uma grande maravilha. Um sistema criado inteiramente por programadores espalhados pela Internet, os hackers!
Qual a diferena entre Linux e Unix? Linus Torvalds, quando criou o Linux, criou ele nos padres "POSIX", que o mesmo padro que os UNIX usam. por esse mesmo uso do padro POSIX que o Linux parecido com o UNIX. Alm do mais, existem vrios tipos de UNIX, que tm seu cdigo-fonte fechado, e pago. Uma resposta mais completa para esta pergunta foi feita pelo Fernando M. Roxo: Limpo, claro e definitivo: O Linux no UNIX. O Linux um UNIX. O UNIX foi um sistema criado e registrado pela Unix Lab. Todos os sistemas baseados naqueles cdigos so chamados de uma forma geral de UNIX. Linux foi escrito desde o inicio pelo Linus Torvalds e no contm nenhuma linha de cdigo do UNIX. Mas o Linux foi escrito para ser conforme o padro POSIX, que deve ser o padro da API (Application Programming Inteface) Unix, que em ltima anlise pode ser resumido (forando um pouco a barra) como sendo as chamadas do sistema. Por isto se diz que o Linux um Unix (no UNIX). Tem uma diferena sutil a. Por causa da API POSIX, do conjunto de utilitrios (FSF/GNU em sua maioria) e do uso do X-Window (XFree) o Linux to parecido com o UNIX que existem empresas que usam o Linux para desenvolver para UNIX que no seja o dela mesma (por exemplo a IBM). As Distribuies Voltando mais um pouco ao escopo do que Linux, podemos ressaltar que o Linux o sistema operacional, ou seja, o kernel (ncleo). Mas o que um sistema operacional sem programas? Para que haja um uso
dos recursos que o sistema operacional pode oferecer, os programadores vo criando aplicaes e utilitrios que vo dar o gostinho ao usurio. O papel das distribuies isso: empacotar o Linux. O que as distribuies fazem reunir os programas disponveis com o kernel, e deixar o sistema pronto para o uso. Sem as distribuies no haveria a popularizao do Linux, pois seria um grande trabalho o usurio instalar o sistema puro, e depois compilar os programas deixando-os compatveis. Existem inmeras distribuies existentes por esse mundo afora. Mas h sempre as distribuies mais conhecidas, que so as mais atuantes no mercado. Elas so: Slackware, Conectiva Linux, Debian, Red Hat Linux, SuSE, Mandrake. Cada um tem suas caractersticas bem marcantes. E se fssemos discutir aqui quais as vantagens de cada uma em relao a outra, no conseguiramos. A escolha da distribuio uma escolha a gosto. Meu micro suporta Linux? Basicamente, para voc usar o Linux, voc precisar de no mnimo um 386. Isso mesmo, o Linux roda em 386! claro que para um uso amplo de todos os programas e o sistema X-Window (grfico), voc ter de ser mais exigente com seu hardware... Mas todos os computadores compatveis com a arquitetura Intel so suportados pelo Linux (e tambm outros tipos de arquiteturas como por exemplo o Alpha). Para a memria RAM, voc ir precisar de no mnimo 2MB de RAM. recomendvel ter 8Mb acima para rodar o servidor X. E seguindo a mesma filosofia do que falei antes, sempre bom voc ter mais para usar tudo rpido e sem perder a pacincia :) Espao em
disco? Depende muito. As distribuies atuais disponibilizam at 6 CDs recheados de programas, que podem simplesmente acabar com o espao do seu disco em alguns minutos! Uma instalao bsica do Linux, apenas com o bsico mesmo, d 10MB. Eu acredito que 1GB seja suficiente para colocar todo tipo de coisa que 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 espao em disco. Rodei tambm num 386 (nem me pergunte quantos Mhz porque eu no fao a mnima idia :) com 8MB de memria RAM, num HD de 256MB. E por ltimo em um Celeron 300 com 32MB de RAM e 1GB de espao em disco. Atualmente eu estou usando em um K6-II 550, com 64MB de RAM, e 10GB de espao no HD. Outra dvida muito comum : O Linux roda em laptops? Sim! Roda muito bem e suporta bem os dispositivos PCMCIA... No tem absolutamente nada com o que se preocupar. Por que eu devo confiar no Linux? Pergunta muito fcil de se responder, inclusive eu vou responder bem grosseiramente: Ele bom! :) O Linux tem ganhado credibilidade cada vez mais por ser um sistema seguro, estvel, e confivel. muito difcil (seno quase impossvel) que o Linux em si d um crash. S para ter uma idia, nestes 4 anos em que uso Linux, s obtive no mximo 3 travamentos! Por que estes travamentos? Bem, um foi na poca em que exploraram 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 me :) Quer dizer, j aconteceu algumas outras vezes de minha
interface travar, mas eu dei um telnet e um ping na mquina atravs de outra na rede, e ela respondia. Geralmente isso acontece comigo no Quake, quando eu mando conectar em algum nome de host que no existe, o SVGAlib (biblioteca que o Quake usa) simplesmente para de funcionar e voc no tem mais como teclar algo ou mudar de tela... Mas tive a certeza que no foi o sistema que travou e sim o SVGAlib que travou meu teclado e monitor :) Empresas cada vez mais esto 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 tambm est ajudando muito, investindo bastante nos desenvolvedores do sistema. Alm disso, vrias outras pequenas ou mdias empresas esto cada vez mais adotando o Linux como sistema padro pelo simples fato de que ele funciona melhor e mais estvelmente que outros sistemas como o Windows. Pode ser que voc ache que isto tudo conversa fiada, mas o Linux bem estvel mesmo! J vi sistemas Linux ligados por vrios meses sem nem sequer dar um reboot na mquina. Inclusive aqui em casa eu consegui deixar o meu Linux ligado por 23 dias, pena que faltou luz e o computador desligou (bu no tenho nobreak :~(). Basicamente isso. Voc tem de confiar no Linux porque ele bom e t acabado. E s tende a melhorar, antigamente no havia nem uma interface grfica muito boa e usvel para quem est iniciando na computao. Hoje temos o GNOME e KDE que so duas timas interfaces grficas para quem est engatinhando. So coisas que fazem o Linux valer a pena!
1.7. O que GPL? Se voc j ouviu falar bem de Linux, com certeza j deve ter ouvido falar nesta sigla. GPL significa General Public License (ou traduzindo grosseiramente: Licena Pblica Geral), e foi criada pela Free Software Foundation. A grande maioria dos programas que vm nas distribuies Linux so de cdigo-fonte aberto, e usam esta licena. Uma licena serve para proteger o seu cdigo quando ele for lanado para o pblico. A licena GPL permite que o autor do cdigo distribua livremente o seu cdigo... Outras pessoas podem simplesmente pegar este cdigo, modificar suas prprias necessidades e usar vontade. O nico requerimento que a pessoa que modificou deve lanar o cdigo modificado em GPL e manter tambm o seu cdigo aberto (e no apenas distribuir os binrios). Isso tudo cria uma comunidade de desenvolvedores onde toda a ajuda mtua, e voc pode pegar vrias idias de outros desenvolvedores simplesmente olhando o cdigo deles. Alm disso, voc pode aproveitar e poder ajudar o desenvolvedor, criando correes e mandando-as para o autor. com essa licena que o kernel do Linux liberado. assim que o kernel tem seu desenvolvimento feito por vrias e vrias pessoas em todo o mundo. Estas pessoas pegam livremente o cdigo-fonte do kernel, analizam-no e procuram por erros. Se encontrarem erros, escrevem correes e mandam para o Linus Torvalds. E no s correes, mas desenvolvedores tambm fazem novas implementaes ao kernel e mandam para o Linus Torvalds organizar tudo. E assim que temos hoje em dia este grande e bem feito e organizado kernel do Linux! assim que a filosofia
GPL funciona, e funciona muito bem para criar uma comunidade de desenvolvedores justa! Eu pessoalmente apio e muito a licena GPL, que para mim simplesmente perfeita. Vivas Free Software Foundation por criar esta licena! E vivas para os desenvolvedores que a utilizam para seus cdigos! :) Voc pode obter a licena GPL nos seguintes endereos: Verso em Ingls (Oficial) http://www.gnu.org/copyleft/gpl.txt Verso em Portugus - http://liebr.conectiva.com.br/licenca_gnu.html
Outras licenas que interessante ver: GNU Free Documentation License (Ingls) http://www.gnu.org/copyleft/fdl.txt GNU Free Documentation License (Portugus) http://www.cipsga.org.br/sections.php?op=viewarticle &artid=112 GNU Lesser General Public License (Ingls) http://www.gnu.org/copyleft/lesser.txt Listagem com vrias outras licenas 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 para comear a funcionar! Entender a configurao dele muito importante, principalmente para quem tem muitos sistemas numa mesma mquina. Com o LILO, possvel gerenciar parties e assim bootar em diferentes sistemas operacionais. com ele que fica
possvel colocar por exemplo, o Windows e o Linux na mesma mquina. O arquivo de configurao do LILO o /etc/lilo.conf. editando ele que voc vai poder configurar o LILO conforme as suas necessidades. Um arquivo comum para uma mquina que possui dois sistemas (Linux e Windows) segue no exemplo abaixo: # Arquivo de configurao do LILO ### Seo dos parmetros globais do LILO ### boot=/dev/hda vga=normal message=/boot/mensagem.txt prompt timeout=150 ### Seo de parties do LILO ### # Partio Linux image=/boot/vmlinuz-2.2.17 root=/dev/hda1 label=Linux read-only # Partio Windows other=/dev/hdb1 label=Windows table=/dev/hdb Como voc pde ver no exemplo acima, a configurao do LILO divida em duas partes: configurao global e configurao de parties. A configurao global carregar consigo algumas informaes sobre o funcionamento geral do LILO, como ele vai se
comportar, aonde, quando, porque, cade, com quem e fazendo o que :) Na configurao de parties se define as opes de sistemas que o LILO vai bootar. Vamos ver passo-a-passo aqui as opes mostradas no exemplo acima, e tambm algumas opes adicionais que no esto no exemplo acima, mas voc pode usar se quiser: Seo de configurao Global boot=/dev/hda Aqui indica onde o LILO ir ser instalado. A maioria dos casos ele ser instalado na MBR (Master Boot Record), que o /dev/hda, e deve funcionar perfeitamente (a no ser que seu sistema tenha frescura). Mas se voc no quiser instalar na Master Boot Record e quiser por exemplo, instalar em um disquete, substitua /dev/hda por /dev/fd0. vga=normal Esta opo indica o modo VGA que o console do Linux ir rodar. H vrias opes que deixam a tela maior, as letras pequenininhas, ou letras maiores com tela menor, o que seja. Se voc colocar 'vga=ask', antes de bootar no sistema, ele vai te dar uma srie de opes para voc escolher. Cada opo ir deixar o tamanho do console diferente... Experimente! Outro jeito de mudar o tamanho do console usando o programa SVGATextMode, que muito melhor pois voc no precisa reiniciar a mquina para escolher no LILO, qual resoluo voc quer. message=/boot/mensagem.txt Esta opo combinada com a opo 'prompt'. Antes do LILO dar o prompt, ele ir mostrar na tela o contedo do arquivo /boot/mensagem.txt. Voc pode colocar um desenho ou qualquer coisa que quiser
para ele mostrar durante o LILO. Um menuzinho com as opes o que a maioria das pessoas costuma colocar :) prompt Indica que o LILO vai automaticamente para o prompt. Voc pode no colocar esta opo, ento o LILO simplesmente vai ficar esperando voc apertar CTRL, ALT ou SHIFT para ativar o prompt e voc poder digitar algo nele. Esta opo tem muito haver tambm com as outras opes 'timeout' e 'delay'. timeout=150 O tempo de durao que voc tem para digitar algo no prompt. Se este tempo passar o LILO automaticamente vai bootar no sistema padro. O tempo determinado em dcimos de segundos, ou seja, 150 corresponde a 15 segundos (tire/acrescente o zero do final). delay=150 (No usado no exemplo). Funciona da mesma maneira que o timeout, s que ele serve para quando no se coloca o parmetro timeout. Ele vai esperar at voc apertar o CTRL, ALT ou SHIFT para ativar o prompt, e se no digitar isso, boota no sistema padro automaticamente. password=zecapagodinho (No usado no exemplo). Esta opo define uma senha para o usurio digitar toda vez que for bootar um sistema pelo LILO. No existe forma de criptografar esta senha, ento qualquer um que tiver acesso ao seu sistema poder ver, se o arquivo /etc/lilo.conf tiver com permisso de leitura para todo mundo. Aqui a senha est como 'zecapagodinho', mude para uma senha
decente se quiser que aquele teu irmo chato no use seu computador :) single-key (No usado no exemplo). Esta opo bem interessante. Ele permite que o usurio ao invs de digitar o nome do sistema no prompt e dar enter para bootar no sistema, possa simplesmente apertar uma tecla e pronto, o sistema boota. muito mais prtico, e combinado com a opo 'alias' na configurao de parties. Seo de configurao de parties Aqui voc vai colocar as parties/sistemas que vai querer bootar. Cada conjunto de linhas corresponde um sistema diferente (veja no exemplo anterior, para um exemplo disso :)). Vejamos aqui os parmetros para a partio 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 distribuio. Geralmente as imagens esto no diretrio /boot (ou tambm na raiz), com o nome vmlinuz, ou vmlinux. No exemplo acima eu indiquei para ele usar o arquivo /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 partio est localizado o seu sistema. label=Linux Aqui o 'nome' que voc vai dar para esta configurao de partio. No caso aqui Linux, ento quando aparecer o prompt do LILO (LILO boot: ), eu digito Linux, dou enter e o LILO boota o sistema.
Tambm existe a opo 'alias', que o equivalente s que para a opo 'single-key', descrita nas opes globais. read-only Parties Linux tm sempre de ter esta linha, pois ela indica que o LILO tem de montar a partio como somente leitura. Para que isso? Bem, no boot o Linux verifica seu sistema de arquivos, e para ele verificar, tem de estar somente-leitura. Depois que ele verifica, ele remonta a partio para leitura-escrita. alias=1 (No usado no exemplo). Esta opo combinada com a opo global single-key. Ao invs de eu ter que digitar no prompt do LILO a palavra definida na opo 'label', eu apenas aperto uma tecla e ele boota. No exemplo que usei aqui a tecla para bootar a partio o nmero 1. Estas foram as opes para uma partio Linux. Se voc 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 opo 'image' da partio Linux. Aqui voc indica em que partio seu Windows est instalado. label=Windows Mesma coisa que na partio Linux, s que aqui eu coloquei a palavra 'Windows' ao invs de 'Linux'. Voc pode colocar o nome que quiser vontade. table=/dev/hdb O HD em que se encontra a partio.
Assim voc poder ir montando um arquivo de configurao com o quanto de sistemas quiser. Nota: algumas vezes me referi que o LILO boota no sistema 'padro'. O sistema padro definido pela ordem que voc coloca os sistemas na configurao de parties... No exemplo anterior, a partio Linux a padro 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 antes de alguma ao especfica. Se o LILO falhar em alguma ao, as letras impressas na tela podem ser usadas para identificar o problema. Preste ateno que alguns digitos hexa podem aparecer depois do primeiro "L" se algum problema transitrio ocorrer no disco rgido. A no ser que o LILO pare neste ponto, gerando uma corrente de erros sem fim, os digitos hexa no indicam um problema srio. Nenhuma parte do LILO foi carregada. Ou o LILO no est instalado ou a partio em que o setor de boot est alocado nao est ativa. O primeiro estgio do carregador de boot foi carregada e inicializada, mas no pode carregar o segundo estgio. O cdigo de erro de dois digitos indica o tipo do problema. Isto geralmente indica um erro na mdia(o HD no caso) ou os parametros do HD no foram colocados corretamente.
(nada)
LI
LIL
LIL?
LIL-
LILO Mega-exemplo
O primeiro estgio do carregador de boot pode carregar o segundo estgio, mas no pode execut-lo. Isto pode ser causado pelos parmetros do HD no terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map. O segundo estgio do carregador de boot foi inicializado, mas no pode carregar a tabela de descrio do arquivo map. Isto geralmente causado por um erro de mdia(HD) ou pelos parmetros do HD no terem sido colocados corretamente. O segundo estgio do carregador de boot foi inicializado em um endereco incorreto. Isto pode ser causado pelos parmetros do HD no terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map. A tabela de descrio est corrompida. Isto pode ser causado pelos parmetros do HD no terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map. Todas as partes do LILO foram carregadas com sucesso.
No exemplo a seguir, vou apresentar uma configurao do LILO para 4 sistemas diferentes! So no total 3 HDs, e tambm duas opes para kernels diferentes, mas no mesmo sistema. Combino aqui tambm o arquivo /boot/mensagem.txt, a opo global single-key e uma senha. /boot/mensagem.txt -------------------------------------------Exemplo de mega-configurao do LILO rodando -------------------------------------------Digite as opes 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 configurao do LILO ### Seo de parmetros globais do LILO ### boot=/dev/hda vga=normal password=boboalegre message=/boot/mensagem.txt prompt timeout=100 single-key ### Seo de parties do LILO ###
# Slackware Linux usando kernel 2.2.16 image=/boot/vmlinuz-2.2.16 root=/dev/hda1 label=Slackware read-only alias=1 # Conectiva Linux 5.1 usando kernel 2.2.17 image=/boot/vmlinuz-2.2.17 root=/dev/hda2 label=Conectiva1 read-only alias=2 # Conectiva Linux 5.1 usando kernel 2.2.16-cl6 image=/boot/vmlinuz-2.2.16-cl6 root=/dev/hda2 label=Conectiva2 read-only alias=3 # Debian 2.2 usando kernel 2.2.17 image=/boot/vmlinuz-2.2.17 root=/dev/hdb1 label=Debian1 read-only alias=4 # Debian 2.2 usando kernel 2.2.18 image=/boot/vmlinuz-2.2.18 root=/dev/hdb1 label=Debian2 read-only alias=5
# Ruindows e Nojenta e Oitxo other=/dev/hdc1 label=Ruindows table=/dev/hdc alias=6 # Fim da configurao do LILO Instalando o LILO T, voc configurou tudinho, mas falta um pequeno detalhe: instalar! Toda vez que voc modifica alguma configurao voc tem de instalar/atualizar o LILO. Para isso, esteja como root e faa o comando: # /sbin/lilo Caso voc queira desinstalar o LILO daonde voc colocou, voc utiliza a opo -U, assim: # /sbin/lilo -U Ou no DOS, voc pode usar o comando "fdisk \mbr" para desinstalar. Nunca se esquea de instalar o LILO depois de fazer suas alteraes, seno nada vai funcionar hein! Manipulao de usurios Como voc j deve saber, o Linux um sistema multiusurio, ento, claro que no s pode existir um usurio usando o sistema. Uma primeira coisa que possamos dizer que o Linux no pode de alguma maneira ser usada sem estar sendo um usurio. O usurio 'root' o administrador do sistema, e ele quem voc vai usar primeiro para criar outros usurios depois (a no ser que voc tenha criado um usurio comum durante a instalao do seu Linux).
Antes de mais nada, fique sabendo que o root um usurio especial, ele pode fazer TUDO em seu sistema, no importa o que acontecer, ele faz. Ao contrrio dos usurios comuns, que tm restries. Se voc j instalou algum Linux, voc ver que a primeira coisa que voc ir fazer antes de usar o sistema se logar como root, ou seja, preencher aquele campo login: com o usurio root. Mas a por alguma razo voc quer mudar de usurio, ou criar outro, ou qualquer coisa do tipo, ento voc se pergunta: "Como?" H um comando especfico para isto. Este comando o "adduser" ou "useradd". Dependendo da distribuio, o comando "adduser" vai ser apenas um comando igual ao "useradd", ou ento um script interativo que ir lhe fazendo perguntas, voc ir preenchendo, e ento o script criar um usurio 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 usurio padro chamado hugo, e depois com o comando "passwd", voc definir uma senha para este usurio. Voc pode especificar outros parmetros para o usurio, como no comando a seguir: adduser xxx -d /var/usuarios/xxx -s /dev/null Com estes parmetros, especifiquei que o usurio hugo ter como diretrio home o "/var/usuarios/hugo" e como shell o "/dev/null" (ou seja, no ter shell). Sem estes parmetros, o diretrio home seria "/home/xxx" e o shell seria "/bin/bash".
Vamos entender agora como este comando funciona, que uma coisa essencial que todos deveriam saber em relao ao sistema Linux. Cada um desses programas escrevem o usurio no arquivo de configurao do Linux referente aos usurios do sistema. Este arquivo o "/etc/passwd". Cada linha deste arquivo um usurio cadastrado no sistema. Com as informaes que vou lhe dar aqui, voc pode muito bem criar uma conta sem usar estes programas/scripts citados acima. O passwd formado por linhas onde cada linha um usurio, como falei acima, ento vamos aprender a montar cada linha desta. Vou pegar um exemplo para vocs: 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 xxx Significado Login do Usurio, aqui voc pode colocar o nome que quiser com at 8 caracteres. Aqui diz que o password est no arquivo /etc/shadow. Se estivesse *, a conta estaria desabilitada, e se estivesse sem nada (::), a conta no teria password. UID (User IDentification), o nmero de identificao do usurio. GID (Group IDentification), o nmero de identificao do grupo do usurio.
1001
100
username
/home/xxx
/bin/bash
Comentrios do usurio, como nome, telefone, etc O diretrio HOME do usurio, ou seja, o diretrio pertencente a ele. Geralmente estes diretorios sempre estao no /home Shell do usurio, ou seja, o programa que ir enterpretar os comandos que o usurio executar.
Obs: O /etc/shadow um arquivo que contm a senha do usurio criptografada, se algum tiver posse dela, esta pessoa pode muito bem comparar as senhas com uma lista de palavras, e pode descobrir as senhas dos usurios. Felizmente este arquivo est muito bem protegido pelo sistema :) Bem, legal, aprendi sobre adicionar um usurio, mas como fao para remov-lo? Simples, voc pode apagar a linha referente a ele no /etc/passwd e os seus arquivos, ou simplesmente digitar userdel usuario. Combine com a opo -r para deletar junto o diretrio HOME do usurio. Ahhhhh? Voc quer mais? O qu? Quer deixar um usurio como se fosse root? Ento vamos l que no temos nada a perder! O root possui o UID e o GID igual 0 (zero), e um usurio comum no. Se ns forssemos a mudana do UID e GID de um usurio para 0, ele ficaria como se fosse o root! Por exemplo, eu tenho a linha do usurio no /etc/passwd e mudo: xxx:x:1001:100:username:/home/xxx:/bin/bash xxx:x:0:0:username:/home/xxx:/bin/bash ^^
Pronto, o usurio xxx vai ser tambm o root do sistema, o administrador do sistema, o deus do sistema, etc. Outra dica: No muito bom ficar usando o usurio root, este usurio somente para a administrao do sistema, ento eu recomendo voc a usar sempre um usurio normal, ser da plebe :) E se for precisar usar o root, logar como ele ou utilizar o comando "su -" para se tornar o prprio root. Outro arquivo que tem muito haver com os usurios no Linux o /etc/group. Que contm as definies de cada grupo, como por exemplo seus nomes, GIDs, e usurios adicionais 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 usurios adicionais pertencentes ele, 'xxx, jim, yyy'. Fcil no? Bem isso, combinando este conhecimento com algo sobre permisses dos arquivos, voc pode controlar muito bem quem usa o seu sistema ou servidor, dizendo quem pertence que grupo, quais seus diretrios, que arquivos podem acessar, entre outros. Bom proveito!
Como Fazer o modem 56k PCI 3COM/USR funcionar no linux:
Produto: 3CP2976-OEM-50 Interface: PCI velocidade: 56K Passos: Determine a IRQ e endereo I/O do modem. Ambos so mostrados no boot do kernel. 1.1. Usando 'lspci': Execute: 'lspci -v' e procure alguma coisa 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 procure alguma coisa como:
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 proxima interface serial disponvel. Se voc tem ttyS0 e ttyS1, o modem deve estar na ttyS3. Tente usar: ttyS0, ttyS1, ttyS2 ou ttyS3. Comandos de configurao do modem: Voc precisa usar o comando "setserial" para configurar o modem. Para maiores informaes, faa "man setserial". Substitua a IRQ, I/O e TTY com suas configuraes: setserial /dev/TTY irq IRQ port I/O ^fourport ^auto_irq skip_test autoconfig spd_vhi Exemplo: setserial /dev/ttyS3 irq 11 port 0xb400 ^fourport ^auto_irq skip_test autoconfig spd_vhi Configure o modem pra iniciar automaticamente no boot, porque necessrio configura-lo toda vez que iniciado o linux.
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 configurao de IRQ e PORTA: setserial /dev/ttyS3 irq 11 port 0xb400 ^fourport ^auto_irq skip_test autoconfig spd_vhi # Mostrando no boot a inicializao do modem: setserial /dev/modem -b 4.1.3. Faa o arquivo ficar executvel: chmod +x /etc/rc.d/rc.serial 4.2.1. Se voc no possui nenhum script de conexo, use o ppp-facil de Augusto C. Campos na seguinte home page: www.linux.trix.net Este script funciona na maioria das vezes com modems 3COM. Configurando o MRTG O MRTG um programa feito em perl muito til para anlisar o trfego utilizado em sua rede/link. Ele gera grficos que te mostram o uso da banda em termos de velocidade. Para configurar no to complicado, dependendo do caso, claro. Voc precisar pegar o MRTG, seja como cdigo-fonte, ou como pacote. No caso dos pacotes, uma compilao no necessria, e os arquivos j estaro instalados no sistema (portanto s configurar). Mas como quero cobrir tudo aqui,
Se voc tem uma distribuio que possui o utilitrio "apt", timo, porque provavelmente voc s ter que digitar o comando "apt-get install mrtg" e o programa ir baixar e instalar automaticamente. Agora se voc quiser baix-lo, visite a pgina oficial do MRTG: MRTG http://people.ee.ethz.ch/~oetiker/webtools/mrtg/. MRTG (Mirror Brasil) - http://mrtg.matrix.com.br/.
Neste endereo voc poder encontrar as verses mais atuais, tanto como cdigo-fonte, quanto prcompilados em pacotes ou em um binrio para Windows (sim! O MRTG tambm funciona no Windows, se tiver o perl! Mas aqui s vou falar da instalao no linux :P) No meu caso, eu peguei a verso "2.9.25". O MRTG requer o seguinte para compilar e funcionar no seu Linux: gcc, perl, gd, libpng, zlib. Provavelmente sua distribuio j veio com esses pacotes, ento no os cobrirei neste tutorial. Vamos agora comear a instalao: # tar zpfx mrtg-2.9.25.tar.gz # cd mrtg-2.9.25 # ./configure --prefix=/usr --sysconfdir=/etc/mrtg [...configurando a compilao...] # make
[...compilando...] # make install E pronto. Se tudo ocorrer bem, o MRTG estar instalado corretamente no seu sistema, e pronto para o uso! Mas antes, teremos que criar um arquivo de configurao para o MRTG usar. Para isso utilizaremos um utilitrio do MRTG chamado "cfgmaker". Tenha em mos o IP do seu roteador e a senha "community" dele... Se voc no souber o que diabos isso, ento est precisando mexer um pouco mais com o roteador :) Execute o comando: cfgmaker --global 'WorkDir: /var/www/html/mrtg' \ --global 'Options[_]: bits,growright' \ --output /etc/mrtg/exemplo.cfg \ community@xxx.xxx.xxx.xxx Onde "xxx.xxx.xxx.xxx" o IP do seu roteador. Este comando ir gerar o arquivo "/etc/mrtg/exemplo.cfg" e servir para alterarmos manualmente, comparando com o resultado. Veja este exemplo de configurao final comentada: # --------------------# Configuraes Globais # --------------------# Diretrio onde vai ficar a pgina com os grficos gerados # pelo MRTG WorkDir: /var/www/html/mrtg # Lngua usada pelo MRTG para as mensagens na pgina
Language: brazilian # Opes: # bits = Mostrar a velocidade em bits (bits/bytes) # growright = O grfico cresce para a direita Options[_]: bits,growright # Rodar como Daemon? Assim no ser preciso colocar # no crontab, s precisar colocar um comando na # inicializao do Linux. RunAsDaemon: yes # -------------------------------# Configurao 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 nmero essencial # para saber a ligao que estamos usando no roteador. Target[EXEMPLO]: 1:community@xxx.xxx.xxx.xxx: # A quantidade de bytes que o link suporta. # 64kbps = 8000 # 256kbps = 32000 MaxBytes[EXEMPLO]: 32000 AbsMax[EXEMPLO]: 32000 # Com essa opo, todos os 4 grficos no sero # redimensionados de acordo com o uso do link. Eles sempre # tero a altura do mximo de trfego que se pode chegar
# (de acordo com os itens acima). Unscaled[EXEMPLO]: dwmy # Configuraes da pgina. Ttulo e frase no Topo. Title[EXEMPLO]: Exemplo de Anlise de Trfego para link de 256kbps PageTop[EXEMPLO]: <h1>Exemplo de Anlise de Trfego para link de 256kbps</h1> Pronto. J temos uma configurao bsica para o MRTG. Agora vamos rod-lo: # mrtg Como colocamos a opo "RunAsDaemon", ele ficar rodando e estar atualizando o grfico de 5 em 5 minutos. Os grficos estaro localizados no diretrio "/var/www/html/mrtg, com o nome de "exemplo.html". Claro que este diretrio teria que estar disponvel no seu servidor Web para verificarmos o grfico. S que quando reiniciarmos o computador, o mrtg no estar rodando mais. Se voc instalou o MRTG a partir de um pacote pr-compilado, ele j deve ter vindo com um scrip de inicializao no diretrio "/etc/init.d", ento coloque este script na inicializao 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 chama o MRTG para rodar como Daemon e gerar os grficos de 5 em 5 minutos. O uso do MRTG bem extenso, e no se limita penas monitorar o trfego de um roteador. Mas por enquanto vamos cobrir apenas este assunto. O arquivo de
configurao que usamos muito simples, e se voc quiser se aprofundar mais no assunto, d uma olhada no manual de referncia do arquivo de configurao: MRTG Configuration Reference http://people.ee.ethz.ch/~oetiker/webtools/mrtg/referen ce.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, quanto mais , fazer o SoundChip (placa de som) tocar alguma coisa. Por isso, a propria cmedia (www.cmedia.com.tw) fez o 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
A parte de ativao do som, dever estar setada como [M]dulo, e dentro dela aparecer para ativao de : Support for C-Media PCI audio chips [*] Enable legacy FM [*] Enable legacy MPU-401
Pronto! Basta agora salvar a configurao, Efetuar um make modules e um make modules_install para rodar o driver, digite a sequencia: depmod -a modprobe cmpci
Primeiros contatos com o Linux O incio A inicializao do Linux muito importante... Primeiro porque voc est iniciando o melhor sistema existente, segundo porque as mensagens que aparecem durante o boot sero muito teis na hora de executar algumas tarefas no Linux: tais como montar dispositivos (parties, cd-roms), ver o que est sendo iniciado automaticamente, o que est sendo reconhecido pelo
kernel, e outras coisas mais que com certeza veremos mais frente. indispensvel que voc observe as mensagens de boot atentamente... Mas tem um probleminha, se tudo passa muito rpido, ou voc quer consultar as mensagens de boot depois (e no quer ter de reiniciar a mquina pra ver...), existe um comando que mostra as mensagens de boot do kernel. Este comando o dmesg, ele vai mostrar o processo de boot do kernel todo sem problemas. Logo aps todas as mensagens de boot, voc ser presenteado com uma tela de login do usurio. Como veremos mais adiante, o Linux multi-usurio, ou seja, suporta vrios usurios. Dependendo da configurao usada na instalao, esta tela de login pode ser em modo grfico ou texto. aqui que comea o nosso uso no sistema! Na instalao voc deve ter escolhido uma senha para o root, e deve tambm ter criado um usurio normal (se no criou, recomendvel que voc criasse, mas isso podemos fazer depois). Logue-se como root ou como usurio normal usando o nome do usurio e a senha escolhida. Voc ou cair na interface grfica, ou na texto (dependendo da distribuio)... Mas antes de usar vamos entender mais conceitos? o que trataremos nas sees seguir. Multi-tarefa e multi-usurio O Linux multi-tarefa e multi-usurio, mas o que isso quer dizer? Multi-tarefa a capacidade que o sistema tem de executar vrias tarefas de uma s vez, dividindo assim o uso da memria. Enquanto multi-usurio a capacidade do sistema lhe dar com vrias pessoas ou
usurios, cada um com suas preferncias, cada um com seus arquivos, suas permisses e assim por diante. Como um exemplo de multi-tarefa, podemos citar que voc pode consultar um arquivo texto que est no diretrio X, enquanto acessa o disquete, e o CD-ROM, tudo ao mesmo tempo. Ou seja, voc faz as coisas, mas no fica preso somente a elas, pode executar outras tarefas enquanto uma j estiver sendo executada. Todos os sistemas atuais so multi-tarefa, ento este conceito no deve ser muito novo para voc. Um exemplo de sistema que no multi-tarefa o DOS (ugh). muito importante destacar o multi-usurio do Linux. Tudo vai ser dividido por usurios, e junto com essas divises haver tambm as restries. H um usurio principal no Linux, chamado root. Este usurio pode acessar, controlar, e fazer tudo no sistema. Enquanto os usurios normais s podero acessar seus documentos, ou os que o sistema (root) permitir. Uma tica importante para o Linux nunca usar o usurio root... Ento recomendvel que voc crie um usurio primeiro e use ele, s utilize o root para tarefas administrativas! Por que isso? O usurio root tem o poder em tudo, inclusive de fazer muita besteira no sistema... Voc no quer fazer besteira, ou quer? :) A interface texto (Console) A interface texto do Linux indispensvel para o uso do sistema. nesta interface que voc vai encontrar uma quantidade enorme de utilitrios e comandos que iro lhe ajudar na administrao do dia a dia. Se a tela de login for no modo texto, voc se logar e logo aps ser presenteado com o interpretador de comando, onde voc poder mexer realmente no sistema. A interface texto no to amigvel como a grfica, mas
certamente tem suas utilidades, e recomendado que todos os usurios no fiquem s presos a interface grfica, e que conheam bem o modo texto. Outro nome que podemos dar interface texto console. Ento vamos ao que interessa, o modo texto dividido inicialmente em 6 telas, em cada tela poder se logar um usurio. Experimente apertar a combinao de teclas ALT+F1, ALT+F2, ..., ALT+F6. Isto o levar para os consoles 1, 2, 3, 4, 5 e 6. A partir do 7, o Linux reserva especialmente para as interfaces grficas funcionarem. Como o Linux um sistema multi-tarefa e multi-usurio, voc pode se logar em todos ao mesmo tempo, com quaisquer usurios. Voc pode por exemplo se logar como root no console 1 para qualquer emergncia, e ficar usando um usurio normal no console 2. Lembre-se sempre que a interface texto o poder do Linux! Voc pode estar se perguntando como pode conviver com o ambiente texto, mas eu posso te garantir que voc convive muito bem. Existem vrios programas para o modo texto que voc provavelmente vai 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 um monte de coisas mais. A interface texto do Linux, ao contrrio da do DOS, bem poderosa :) V se acostumando com a idia de querer usar ela. A interface grfica (X-Window) A interface grfica vem crescendo cada vez mais no Linux. O que permite que o Linux tenha estes recursos grficos todos o servidor X (X-Window). Em todas as distribuies Linux includo o Xfree86, um servidor X totalmente gratuito para Linux/Unix. Mas o servidor X
apenas quem vai fornecer o recurso de gerar a interface grfica. Para que haja um desktop, necessrio tambm a existncia de um gerenciador de janelas (ou Window Managers) que so programas que usam a biblioteca do X-Window para gerar as aplicaes, as janelas, a aparncia do modo grfico 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, intil se usar um servidor X, pois ele rodar, mas o usurio no poder fazer nada nele. Quer ver? Experimente executar o comando X. Ir se abrir uma interface grfica, com o mouse, mas o usurio no vai ter controle nenhum. Para finalizar esta seo aperte CTRL+ALT+BACKSPACE (combinao de teclas que encerra foradamente o servidor X). Iremos falar muito das interfaces grficas mais adiante, por enquanto ficaremos aprendendo como mexer no console, que a parte mais emocionante e a que mais se aprende. Estrutura de diretrios no Linux A raiz do Linux fica no diretrio "/", e dentro deste diretrio existem vrios outros, cada um significando uma coisa. Vamos aqui aprender o significado de cada um para sabermos onde usar as coisas, e onde colocar os arquivos adequadamente e organizadamente. A estrutura de diretrios no Linux basicamente dividida assim: Diretrio /bin Significado Arquivos executveis que so usados pelo sistema
/boot
/dev
/etc
/home
/lib /proc
freqentemente. Aqui encontramos por exemplo os interpretadores de comandos (bash, ash, etc), o df, chmod, date, kill, dmesg, pwd, ls, e muito mais. So os comandos essenciais :) Neste diretrio ficam os arquivos de boot, como os mapas de boot e as imagens do kernel. Este um diretrio que carrega consigo todos os arquivosdispositivos. Arquivos de configurao do Linux. Este o diretrio que carrega todas as configuraes dos principais (seno todos) os programas do Linux. Ele contm por exemplo os arquivos de usurios e senhas, arquivos de inicializao, configuraes de rede, e mais uma bolada de configurao pra deixar qualquer um doido. Diretrio dos usurios. Cada usurio tem um diretrio dentro deste diretrio :) Algumas bibliotecas essenciais para o funcionamento do Linux, e tambm os mdulos do kernel. Este um diretrio especial, ele contm informaes que o
/root
/sbin
/tmp
/usr
/var
kernel gera. um diretrio HOME. S que aqui o do usurio administrador (root). Executveis poderosos, que s podem ser executados pelo root. Aqui se encontram programas para checkar e criar sistemas de arquivos, optimizar o uso do HD, configurar dispositivos, gerenciar mdulos do kernel, etc. Diretrio temporrio. Neste diretrio, vrios utlitrios criam arquivos que s sero usados por um tempinho, e depois descartados. No h nenhuma informao importante aqui, pois pode ser acessado por qualquer usurio. Um dos maiores diretrios, este contm as bibliotecas e arquivos gerais dos vrios programas instalados no sistema. Informaes variveis que esto sempre em constante mudana, como arquivos de logs, travamentos, informaes, etc.
Cada diretrio tem seus subdiretrios com muita coisa para explorar. Voc pode ir j dando uma olhada para ver como tudo organizado. O interpretador de comandos
Pronto. Voc acaba de se logar no sistema, o que fazer agora? A primeira coisa que voc tem de saber o com o que voc est usando: um interpretador de comandos. 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 usurio e a mquina. Voc digita algum comando, e o interpretador l o que voc digitou e executa a tarefa correspondente. Sem um interpretador de comandos, no haveria possibilidade de o usurio interagir com o sistema. Os interepretadores mais comuns so: sh, bash, ash, csh e tcsh. Na maioria dos casos, voc estar usando o bash (que na minha opinio realmente o melhor!). S uma nota... Nos prompts do Linux, quando se acaba com o smbolo "$", isto quer dizer que voc est logado com um usurio normal. Se voc estiver logado com o root, ao invs do smbolo "$", no final do prompt existir o smbolo "#". Voc pode ir testando seu interpretador de comandos executando comandos simples, ou fazendo scripts shell, ou o que seja. Caso voc queira usar outro interpretador de comandos, voc pode mudar a entrada no arquivo /etc/passwd para o usurio, 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 o comando exit (ou logout, ou tambm apertando
CTRL+D). Experimente testando todas os interpretadores que citamos aqui. Documentao As pginas de manual O que voc faz quando est confuso com algum comando? No sabe como ele funciona, quais so seus parmetros, o que ele faz, e essas coisas... No Linux h uma maneira bem fcil de entender melhor e detalhadamente os comandos. Este mtodo so as pginas de manual (manpages). Cada comando tem sua pgina de manual, e dentro desta h a descrio do comando, para que ele serve, quais so seus autores, quais so seus parmetros, bugs conhecidos, arquivos e outros comandos relacionados, etc. Para acessar uma pgina de manual, voc utiliza o seguinte comando: $ man comando Por exemplo, se voc est com dvida sobre o comando ls, simplesmente digite man ls, e aparecer um manual falando apenas deste comando, com seus parmetros e tudo mais. Este recurso muito bom porque o usurio consegue uma ajuda bem rpida. Documentos disponveis Um recurso muito bom de ser utilizado so as vrias documentaes do Linux. Se voc tiver instalado toda a documentao, voc poder encontr-los no diretrio /usr/doc. As distribuies mais atuais esto comeando a colocar estes documentos no /usr/share/doc. Dentre estes vrios documentos, podemos citar os HOWTOs, que so documentos que ensinam a fazer alguma coisa em especfico. Tambm h os FAQs que respondem a dvidas freqntemente perguntadas pelos usurios, e alguns histricos de listas de discusses.
Ler a documentao indispensvel para o aprendizado de novas coisas, e na especializao de certos recursos que o Linux pode oferecer. A maioria dos documentos esto em ingls, mas tambm h varios traduzidos para a lngua portuguesa atravs do projeto LDP-BR (Linux Documentation Project Brasil), localizado no endereo http://ldp-br.conectiva.com.br. RTFM! Err.. o que isso? Bem, Read The Fine Manual :) Comandos de ajuda Alm do comando man podemos contar com uma srie de outros comandos que ajudam no dia a dia. Temos o info, que semelhante ao man, traz informaes sobre um certo comando. O comando locate procura por arquivos que esto includos no banco de dados do updatedb (Se voc executar o comando updatedb, ele vai varrer seu disco e vai colocar todos os nomes dos arquivos no banco de dados, para o locate consultar depois). H tambm o whatis que procura no banco de dados algum comando relacionado a uma certa palavra (para criar o banco de dados de comandos, digite makewhatis). Estes comandos vo certamente ser companheiros nas horas de aperto. Listas de discusso Lista de discusso um recurso muito usado no mundo todo. Aqui no Brasil temos vrias listas de discusses relacionadas com o Linux. Podemos citar dentre elas a lista de discusso linux-br. A lista linux-br a mais movimentada do Brasil, e pode ser acessada no endereo http://linux-br.conectiva.com.br. Se voc tem alguma dvida que no conseguiu resolver lendo as pginas de manual, ou lendo os HOWTOs, os FAQs e ou at mesmo procurando em sites pela
Internet, o recomendado voc ir para as listas de discusso ver se algum sabe a resoluo do seu problema. Mas lembre-se sempre de ser educado e perguntar com jeito! Lembre-se que so pessoas de boa vontade que iro te ajudar :) Permisses de arquivos no Linux No Linux, como em outros sitemas Unix, cada arquivo tem uma permisso. As permisses so atributos dos arquivos que especificaro se ele pode ser lido, executado ou escrito. Estas permisses que vo definir o que um usurio pode fazer. Para saber se um programa executvel ou no, execute um 'ls -l' e veja no lado esquerdo se o arquivo tem X nos seus argumentos, como no exemplo abaixo: drwxr-xr-x 2 root drwxr-xr-x 2 root boot drwxr-xr-x 2 root cdrom drwxr-xr-x 3 root drwxrwxr-x 2 root dosa dr-xr-xr-x 11 root drwxr-xr-x 11 root home drwxr-xr-x 3 root drwxr-xr-x 2 root lost+found -rwxr--r-- 1 root backup -rw-rw-r-- 1 killer teste.txt -rw-rw-rw- 1xxx root root root root root root root root root root users visits 1024 Dec 23 15:22 bin 1024 Dec 31 05:48 1024 Dec 6 15:51 8192 Mar 11 10:17 dev 1024 Feb 27 13:52 2048 Mar 11 10:19 etc 2048 Feb 23 19:08 1024 Feb 23 19:13 lib 12288 Nov 2 11:25 57 Mar 10 03:44 make2342 Mar 10 03:12 23412 Mar 09 22:22
teste2.doc No exemplo acima todos os arquivos tem como dono root e como grupo tambm root, com exceo do 'teste.txt' que o dono 'killer' e o grupo 'users', e tambm 'teste2.doc', no qual 'xxx' o dono e o grupo 'visits' tambm dono. Como voc pode ver do lado esquerdo de cada arquivo/diretrio existe um srie de letras r, w, x ou d! Vamos ver o que representa cada uma delas: drwxrwxrwx 0111222333 No caso acima, a primeira coluna significa (numero 0) se o nome listado um diretrio ou no, caso no seja um diretrio ele ser exibido da seguinte maneira: -rwxr--r-- 1 root root 57 Mar 10 03:44 makebackup \--------> No contm a letra 'd', no diretrio, e sim arquivo O exemplo abaixo mostra o que seria um diretrio: drwxr--r-- 1 root root 1 Mar 10 01:12 bin \----------> Contm a letra 'd' na primeira coluna, um diretrio Tambm h casos em que no lugar do 'd', aparecem outras letras que indicam outros tipos de arquivos. A letra 'l' significa que um link simblico, as letras 'c' e 'b' correspondem dispositivos (/dev). Veja alguns exemplos abaixo: crw-rw---- 1 xxx audio 14, 4 Dec 2 1999 audio brw-rw---- 2 xxx cdrom 22, 64 May 5 1998 hdd lrwxrwxrwx 1 root root 8 Oct 17 22:53 cdrom -> /dev/hdd
Continuando, na segunda coluna (nmeros 1 de acordo com o exemplo mais acima) temos as definies para o dono do arquivo, como mostra o exemplo: -rwxr--r-- 1 killer users 1231 Mar 09 12:12 teste.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 (nmeros 2 de acordo com o exemplo l em cima) temos as definies para o grupo que dono do arquivo, como mostra o exemplo: -r--rwxr-- 1 fernando visits 212 Mar 01 12:42 exemplo.doc ||\-----> O grupo dono do arquivo (visits) pode executar o arquivo! |\------> O grupo dono do arquivo (visits) pode gravar no arquivo! \-------> O grupo dono do arquivo (visits) pode ler o arquivo! Finalmente, temos a quarta coluna (composto pelos nmeros 3), essa coluna se refere as permisses para todos os outros usurios do sistema, sem ser os donos e grupos-donos dos mesmos, exemplo: -r--r--rwx 1 fernando visits 1231 Mar 03 12:42 exemplo2.doc ||\--> Todos os usurios (exceto fernando e usurios do grupo visits) || tem permisso para acessar o arquivo! |\---> Todos os usurios (exceto fernando e
usurios do grupo visits) | tem permisso para gravar no arquivo! \----> Todos os usurios (exceto fernando e usurios do grupo visits) tem permisso para ler o arquivo! Quando nos referimos a diretrio invs de arquivos, o FLAG x (executvel) diz se o diretrio ou no acessvel, j que no podemos "EXECUTAR" diretrios... Exemplo: drwxr--r-- 1 root root 2134 Mar 01 12:54 exemplo3 ||||| \----> Todos os usurios podem ler o interior do diretrio, mas no ||||| podem usar o comando 'cd' para entrar nele, pois no existe ||||| o FLAG 'x' para a quarta coluna! ||||\-------> Usurios do grupo 'root' podem ler o interior do diretrio, |||| mas tambm no podem usar 'cd' para entrar no diretrio! |||\--------> O usurio 'root' pode usar 'cd' para entrar no diretrio! ||\---------> O usurio 'root' pode gravar arquivos nesse diretrio! |\----------> O usurio 'root' pode ler o interior desse diretrio! \-----------> Indica que o nome listado um diretrio! O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos arquivos e/ou diretrios, a sintaxe bsica do comando : chmod [ugoa]{-+}[rwx] nome_do_arquivo_ou_diretrio
Ento vamos um exemplo. Se eu quero mudar a permisso para o dono do arquivo (u=user) poder ler e gravar (rw) no 'arquivo1.txt', fao 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 sero ativados ou desativados! Outros exemplos: $ chmod a+r arquivo2.txt (Todos usurios (a=all) podem ler o 'arquivo2.txt')> $ chmod o+w arquivo3.txt (Outros usurios (o=others) sem ser o dono e o grupo dono do arquivo, podem gravar no 'arquivo3.txt') $ chmod g+x netscape (O grupo-dono do arquivo (g=group) pode executar o arquivo 'netscape') O comando chmod pode tambm ser usado com nmeros, em vez dos flags. Este mtodo chamado de octal, veja o exemplo abaixo: $ chmod 664 arquivo.txt O que quer dizer cada um desses nmeros? Veja abaixo: Nmero 0 1 2 3 Significado Nenhuma permisso Permisso para executar Permisso para gravar Permisso para gravar e executar
4 5 6 7
Permisso para ler Permisso para ler e executar Permisso para ler e gravar Permisso 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 tambm ser lido e gravado pelos usurios que compem o grupo-dono (numero 6 na segunda coluna), e informou que pode ser lido por todos os outros usurios do sistema (numero 4 na ultima coluna). O comando chown simples e pode ser usado para mudar o dono e o grupo dono de um arquivo/diretrio. 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
Programao em BASH A programao da shell (neste caso a BASH) permite que o computador execute uma sequncia de comandos de um modo automtico (sem ser o utilizador a efetuar este processo). A script contm os nomes dos comandos que vo ser executados (a shell executa esses comandos).
Criao de uma script Para criar uma script, necessrio utilizar um editor de texto onde vamos escrever a sequncia de comandos que se pretende executar. Considere que o ficheiro fich1 contm o seguinte: #!/bin/bash # Esta script procura em todos os ficheiros do directrio actual a # string Sistemas e mostra o contedo de # cada ficheiro que contenha essa string. for ficheiro in * do if grep l Sistemas $ficheiro then more $ficheiro fi done Os comentrios comeam com # e continuam at ao fim da linha. Normalmente este smbolo colocado na primeira coluna de cada linha. O comentrio #!/bin/bash um comentrio especial, onde #! informa o sistema que o argumento que se segue o programa que vai ser utilizado para executar este ficheiro (neste caso /bin/bash). Para executar uma script, podemos utilizar duas formas diferentes. A primeira invocar a shell com o nome da script como parmetro.
Exemplo: $ /bin/bash fich1 A outra maneira de executar scripts escrever apenas o nome da script que queremos executar. Para isso o ficheiro deve ter permisso de execuo.
Exemplo: $ chmod +x fich1 $ fich1 Nota: Tambm possvel obter o mesmo resultado que a script anterior em apenas uma linha de comandos. Para isso, pode-se utilizar: $ more `grep l Sistemas *` ou $ more $(grep l Sistemas *) Primeiro feito o grep l Sistemas *, e s depois a shell executa o comando more sobre o resultado obtido.
Variveis Para utilizar variveis no necessrio declar-las primeiro. As variveis so criadas quando se utilizam, isto , quando lhes atribumos um valor inicial. Por defeito, todas as variveis so consideradas do tipo string, mesmo aquelas que tm valores numricos. A shell converte a string numrica em valores numricos de modo a fazer o que necessrio. Um fator a ter em conta que os nomes das variveis so case-sensitive. Para se ter acesso ao contedo de uma varivel temos de utilizar o smbolo $ antes do nome da varivel e utilizar o comando echo para mostrar esse contedo no monitor. Em todas as situaes que se utilizam as variveis necessrio utilizar o smbolo $, excepto quando se trata de atribuir um valor a essa varivel.
Exemplo:
$ valor=Sistemas $ echo $valor Sistemas $ valor=Sistemas Operativos I $ echo $valor Sistemas Operativos I $ valor=4+5 $ echo $valor 4+5 $ Quando se utilizam espaos, necessrio utilizar aspas como delimitador da string. A funcionalidade das variveis como $valor depende do tipo de aspas que estamos a utilizar. Se a varivel est entre aspas () (ex:$valor), ento substituda pelo valor da varivel quando a linha for executada. Se a varivel est entre aspas () ento no efetuada nenhuma substituio. Para remover o significado especial de $ necessrio utilizar antes desse smbolo a barra invertida (\\). Tambm se pode atribuir um valor a uma varivel atravs do comando read. Exemplo: A script: #!/bin/bash valor = Sistemas Operativos I echo $valor echo $valor echo \'$valor\' echo \\$valor echo Introduza 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 para Exame de SO1
Variveis Ambiente Quando uma shell script executada, algumas variveis so inicializadas com os valores do seu ambiente. Os nomes das variveis ambiente so em maisculas para se destinguirem das variveis definidas nas scripts (que normalmente so em minsculas).
$HOME Diretrio home do utilizador $PATH Lista de diretrios separados por: $PS1 Prompt (normalmente $) $PS2 Prompt secundrio (normalmente >) $IFS Input Field Separator. Lista de caracteres utilizada para separar palavras. $0 Nome da shell script $# Nmero de parmetros da shell script $$ PID (Process IDentification) da shell script
Parmetros Se a script invocada com parmetros, so criadas algumas variveis adicionais. Mesmo que no se passem parmetros, a varivel $# continua a existir, mas obviamente com o valor 0. As variveis que permitem trabalhar os parmetros so: Varivel Descrio $1, $2, $3, Os parmetros da script $* Lista com todos os parmetros, numa nica varivel, separados pelo primeiro caracter da varivel ambiente IFS $@ Semelhante ao $*, s que no utiliza a varivel ambiente IFS
#!/bin/bash valor=Sistemas echo $valor echo O programa $0 est a ser executado echo O segundo parmetro $2 echo O primeiro parmetro $1 echo O terceiro parmetro $3 echo A lista de parmetros $* Se executar a script, obtm o seguinte: $ script_variaveis exame sistemas operativos Sistemas O programa script_variaveis est a ser executado O segundo parmetro sistemas O primeiro parmetro exame O terceiro parmetro operativos A lista de parmetros exame sistemas operativos
Execuo de Comandos Para executar comandos utiliza-se $(comando) ou `comando`. O resultado a sada do respectivo comando (no o estado do comando).
Considere a script: #!/bin/bash echo A varivel PATH $PATH echo Os utilizadores que esto no sistema so $(who) Esta script mostra o contedo da varivel PATH, bem como os utilizadores que esto actualmente no sistema. Tenha em ateno que foi necessrio executar o comando who. O conceito de colocar o resultado da execuo de um comando numa varivel muito poderoso. Condies Um dos factores essenciais em todas as linguagens de programao a possibilidade de testar condies e fazer determinadas aces em funo dessas condies. O comando test e o comando [ ] Estes dois comandos servem para testar condies e so equivalentes. Para perceber a funcionalidade do comando test, vamos verificar se o ficheiro fich.c existe, e se existe apresentar o seu contedo. O comando para verificar essa condio test f , portanto na script teremos: #!/bin/bash if test f fich.c then more fich.c fi Tambm podemos utilizar o comando [ ] para obter a mesma funcionalidade: #!/bin/bash if [ f fich.c ] then
more fich.c fi
Comparao de strings Comparao Resultado String Verdade, se a string no vazia String1 = string2 Verdade, se as strings so iguais String1 != string2 Verdade, se as strings so diferentes -n string Verdade, se a string no nula -z string Verdade, se a string nula
Comparaes Aritmticas: Comparao Resultado Expresso1 eq expresso2 Verdade, se forem iguais Expresso1 ne expresso2 Verdade, se as expresses so diferentes Expresso1 gt expresso2 Verdade, se expresso1 > expresso2 Expresso1 ge expresso2 Verdade, se expresso1 expresso2 Expresso1 lt expresso2 Verdade, se expresso1 < expresso2 Expresso1 le expresso2 Verdade, se expresso1 expresso2
Condies em ficheiros: Comparao Resultado -d ficheiro Verdade, se o directrio existe -f ficheiro Verdade, se o ficheiro existe -r ficheiro Verdade, se possvel ler o ficheiro -s ficheiro Verdade, se o ficheiro tem um tamanho > 0 -w ficheiro Verdade, se possvel escrever no ficheiro -x ficheiro Verdade, se possvel executar o ficheiro
comandon fi Nota: Para utilizar o then na mesma linha do if necessrio acrescentar ; depois da condio. Considere o seguinte exemplo, que faz uma deciso baseado numa resposta: #!/bin/bash echo Passou no exame? read resposta if [ $resposta = sim ]; then echo Parabens! else echo No estudou !!! fi ELIF - A script anterior tem um problema aceita qualquer resposta, excepto a resposta sim para escrever No estudou. Para resolver esta situao podemos utilizar o comando elif, que permite testar uma segunda condio quando o else executado. #!/bin/bash echo Passou no exame? read resposta if [ $resposta = sim ]; then echo Parabns! elif [ $resposta = no ]; then
echo No estudou !!! else echo No conheo a resposta $resposta. Introduza sim ou no! fi FOR executa um ciclo um determinado nmero de vezes (em funo de um conjunto de valores). Esses valores podem ser especificados na script, ou serem o resultado da expanso de comandos. for varivel 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
Considere o seguinte exemplo; #!/bin/bash for valor in $(ls so[123].txt) do more $valor done Este exemplo mostra o contedo dos ficheiros que so o resultado de executar ls so[123].txt, isto , mostra o contedo dos ficheiros so1.txt, so2.txt so3.txt se existirem. O ciclo for funciona bem quando se trata de situaes em que temos um conjunto de strings. Quando necessrio executar um grupo de comandos um nmero varivel de vezes, este comando no 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\". Tambm obteramos o mesmo resultado se depois de in tivssemos qualquer valor dez vezes seguidas (ex: a a a a a a a a a a ).
WHILE - o ciclo while til nas situaes em que no existe um nmero fixo de vezes para executar um determinado grupo de comandos. Estrutura do comando while: while condio do comando 1
comando n done Considere a script: #!/bin/bash echo \"Introduza um nome: \" read nome while [ \"$nome\" != \"Sistemas\" ]; do echo No acertou no nome - tente de novo ! read nome done Esta script s termina quando o utilizador introduzir o nome correcto. Enquanto introduzir o nome errado, vai ter que introduzir um novo nome. Nota: A utilizao de aspas (\") em [ \"$nome\" != \"Sistemas\" ] permite salvaguardar a situao em que o utilizador utiliza o Enter sem introduzir mais nada (nesta situao a condio de teste ficaria [ != \"Sistemas\"], que no uma condio vlida). Com a utilizao de aspas o problema resolvido, pois a condio de teste ser [ \"\" != \"Sistemas ]. Considere a script: #!/bin/bash valor=1 while [ $valor -le 10 ] do echo Sistemas Operativos valor=$(($valor + 1))
done Esta script escreve \"Sistemas Operativos\" dez vezes. Para isso utiliza a varivel valor que vai sendo incrementada.
UNTIL - semelhante ao ciclo while. A nica diferena que o teste da condio feito no fim, isto , o ciclo continua at que a condio seja verdade. Estrutura do comando until: until condio 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 no sistema, isto , de 10 em 10 segundos verifica se o utilizador est no sistema. Quando o utilizador entrar no sistema a script termina.
CASE - permite verificar o contedo de uma varivel em relao a vrios padres, executando depois os respectivos comandos.
Estrutura do comando case: case varivel in padro [| padro ]) comandos;; padro [| padro ]) comandos;; esac Considere a script: #!/bin/bash echo Passou no exame? read resposta case \"$resposta\" in \"sim\") echo \"Parabns!\" ;; \"no\") echo \"No estudou !!!\" ;; \"s\" ) echo \"Parabns!\" ;; \"n\" ) echo \"No estudou !!!\" ;; * ) echo No conheo a resposta $resposta! ;; esac A script compara o contedo de resposta com todos os padres (quando se verifica um dos padres o comando case termina a procura). O asterisco (*) pode ser utilizado para expandir strings. Neste exemplo, o asterisco faz concordncia (matching) de todas as strings, permitindo assim executar uma aco por defeito (quando nenhum dos outros padres se verificou). Obtemos a mesma funcionalidade com a script: #!/bin/bash
echo Passou no exame? read resposta case \"$resposta\" in \"sim\" | \"s\" ) echo \"Parabns!\" ;; \"no\" | \"n\" ) echo \"No estudou !!!\" ;; * ) echo No conheo a resposta $resposta! ;; esac
Listas de Comandos Para executar uma lista de comandos em que s necessrio executar 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; o comando3 s executado se o comando2 teve sucesso, etc. Para executar-mos uma srie de comandos at que um tenha sucesso, faz-se o seguinte: comando1 || comando2 || comando3 || Se o comando1 tem sucesso, j no executado mais nenhum comando da lista. Se o comando1 falhou, ento executado o comando2; Se o comando2 tem sucesso ento termina; Se o comando2 falhou ento executado o comando3, etc. Nota: Para se utilizar um grupo de comandos em situaes em que 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 necessrio executar 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; o comando3 s executado se o comando2 teve sucesso, etc. Para executar-mos uma srie de comandos at que um tenha sucesso, faz-se o seguinte: comando1 || comando2 || comando3 || Se o comando1 tem sucesso, j no executado mais nenhum comando da lista. Se o comando1 falhou, ento executado o comando2; Se o comando2 tem sucesso ento termina; Se o comando2 falhou ento executado o comando3, etc. Nota: Para se utilizar um grupo de comandos em situaes em que 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 necessrio executar 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; o comando3 s executado se o comando2 teve sucesso, etc.
Para executar-mos uma srie de comandos at que um tenha sucesso, faz-se o seguinte: comando1 || comando2 || comando3 || Se o comando1 tem sucesso, j no executado mais nenhum comando da lista. Se o comando1 falhou, ento executado o comando2; Se o comando2 tem sucesso ento termina; Se o comando2 falhou ento executado o comando3, etc. Nota: Para se utilizar um grupo de comandos em situaes em que s um comando permitido (como o caso das listas de comandos), temos de agrupar esses comandos entre { }.
Funes As funes tm a seguinte estrutura: nome_da_funo () { comando1 comandon } Considere a script: #!/bin/bash escreve () { echo \"A funo est a ser executada \" } echo \"Incio da script\"
escreve echo \"Fim da script\" Embora a definio da funo esteja no princpio da script, a script s comea a executar os comandos que esto depois da definio da funo. Quando se chama uma funo, a shell executa-a e depois retorna para a linha seguinte da funo. necessrio ter em ateno que necessrio definir a funo antes de utiliz-la, isto , o cdigo das funes deve ser colocado no princpio da script. Quando uma funo invocada, os parmetros da script $*, $@, $#, $1, $2, etc. so substitudos pelos parmetros da funo. Quando a funo termina a sua execuo, os parmetros so restaurados. Para que a funo retorne um valor numrico, necessrio utilizar o comando return. A nica maneira de retornar strings utilizar uma varivel global, de modo a ser possvel utiliz-la quando a funo terminar a sua execuo. Para declarar variveis locais funo, utiliza-se a palavra local antes da varivel. Considere a script: #!/bin/bash texto=\"Varivel global\" escreve () { local texto=\"Varivel local\" echo \"A funo est a ser executada\" echo $texto } echo \"Incio da script\" echo $texto escreve echo $texto
echo \"Fim da script\" A script d o seguinte resultado: Incio da script Varivel global A funo est a ser executada Varivel local Varivel global Fim da script Quando no se utiliza o comando return na funo, a funo retorna o estado do ltimo comando que foi executado. Considere a script teste: #!/bin/bash pergunta() { echo \"Os parmetros da funo so $*\" while true echo -n \"sim ou no\" read resposta case \"$resposta\" in s | sim ) return 0;; n | no ) return 1;; * ) echo \"Responda sim ou no\" esac done } echo \"Os parmetros da script so $*\" if pergunta \"O nome $1 ?\" then echo \"Ol $1\" else
echo \"Engano\" fi Esta script passa parmetros para a funo. A funo retorna valores numricos. Exemplo de utilizao da script anterior: $ teste Orlando Sousa Os parmetros da script so Orlando Sousa Os parmetros da funo so O nome Orlando Sousa ? sim ou no no Engano
Comandos: BREAK - utilizado para sar 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 directrio com iniciais so $ficheiro
CONTINUE - Avana para a prxima iterao do ciclo for, while ou 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 tenham como iniciais so (no mostra os directrios).
ECHO - mostra o contedo de uma string (seguido de newline). Para evitar o newline necessrio utilizar a opo -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 d como resultado 5, isto , d o valor do valor da varivel. EXPORT - faz que uma varivel fique visvel, isto , cria uma varivel ambiente. Considere as seguintes scripts: teste2: #!/bin/bash echo $valor echo $resposta teste1: #!/bin/bash valor=\"Varivel que no utiliza export\" export resposta=\"Varivel que utiliza export\" teste2 se executarmos a script teste1, d: Varivel que utiliza export Como a script teste1 chama a script teste2, apenas visvel a varivel resposta na script teste2.
EXPR - avalia argumentos de uma expresso. normalmente utilizado para clculos aritmticos. Exemplo: valor = `expr $valor + 1` Este exemplo coloca em valor o resultado de executar o comando expr $valor + 1.
Expresso --- Descrio Expresso1 | expresso2 Expresso1, se diferente de zero; seno expresso2 Expresso1 & expresso2 Zero, se uma ou ambas as expresses so zero Expresso1 = expresso2 Igualdade Expresso1 != expresso2 Diferentes Expresso1 > expresso2 Expresso1 expresso2 Expresso1 < expresso2 Expresso1 expresso1 Expresso1 + expresso2 Adio Expresso1 - expresso2 Subtraco Expresso1 * expresso2 Multiplicao Expresso1 / expresso2 Diviso inteira Expresso1 % expresso2 Resto da diviso Nota: Em substituio do comando expr normalmente utiliza-se $(()) , que mais eficiente (tambm se pode utilizar $[]).
PRINTF - utilizado para formatar a sada. A sintaxe para este comando : printf \"formato da string\" parmetro1 parmetro2 O formato da string semelhante ao formato utilizado na linguagem C, com algumas restries (S suporta valores inteiros, pois a shell faz todas as suas operaes sobre valores inteiros).
SET - permite configurar as variveis da shell. til como meio de usar campos nos comandos que do como resultado valores separados por espao. Considere a script: #!/bin/bash echo A data $(date) set $(date) echo O ms 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 contm o ms) apresentado no segundo echo.
SHIFT - o comando shift retira um parmetro aos parmetros da script (ex: $2 torna-se o $1, o $3 torna-se o $2, etc). O shift utilizado para pesquisar os parmetros. #!/bin/bash while [ \"$1\" != \"\"]; do echo $1 shift
Comandos: BREAK - utilizado para sar 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 directrio com iniciais so $ficheiro Esta script mostra o nome do primeiro directrio com iniciais so.
CONTINUE - Avana para a prxima iterao do ciclo for, while ou 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 tenham como iniciais so (no mostra os directrios).
ECHO - mostra o contedo de uma string (seguido de newline). Para evitar o newline necessrio utilizar a opo -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
d como resultado 5, isto , d o valor do valor da varivel. EXPORT - faz que uma varivel fique visvel, isto , cria uma varivel ambiente. Considere as seguintes scripts: teste2: #!/bin/bash echo $valor echo $resposta teste1: #!/bin/bash valor=\"Varivel que no utiliza export\" export resposta=\"Varivel que utiliza export\" teste2 se executarmos a script teste1, d: Varivel que utiliza export Como a script teste1 chama a script teste2, apenas visvel a varivel resposta na script teste2.
EXPR - avalia argumentos de uma expresso. normalmente utilizado para clculos aritmticos. Exemplo: valor = `expr $valor + 1` Este exemplo coloca em valor o resultado de executar o comando expr $valor + 1.
Expresso --- Descrio Expresso1 | expresso2 Expresso1, se diferente de zero; seno expresso2 Expresso1 & expresso2 Zero, se uma ou ambas as expresses so zero Expresso1 = expresso2 Igualdade Expresso1 != expresso2 Diferentes Expresso1 > expresso2 Expresso1 expresso2 Expresso1 < expresso2 Expresso1 expresso1 Expresso1 + expresso2 Adio Expresso1 - expresso2 Subtraco Expresso1 * expresso2 Multiplicao Expresso1 / expresso2 Diviso inteira Expresso1 % expresso2 Resto da diviso Nota: Em substituio do comando expr normalmente utiliza-se $(()) , que mais eficiente (tambm se pode utilizar $[]).
PRINTF - utilizado para formatar a sada. A sintaxe para este comando : printf \"formato da string\" parmetro1 parmetro2 O formato da string semelhante ao formato utilizado na linguagem C, com algumas restries (S suporta valores inteiros, pois a shell faz todas as suas operaes sobre valores inteiros).
SET - permite configurar as variveis da shell. til como meio de usar campos nos comandos que do como resultado valores separados por espao. Considere a script: #!/bin/bash echo A data $(date) set $(date) echo O ms 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 contm o ms) apresentado no segundo echo.
SHIFT - o comando shift retira um parmetro aos parmetros da script (ex: $2 torna-se o $1, o $3 torna-se o $2, etc). O shift utilizado para pesquisar os parmetros. #!/bin/bash while [ \"$1\" != \"\"]; do echo $1 shift done Esta script mostra todos os parmetros introduzidos.
Expanso de Parmetros
A expanso de parmetros muito til no manuseio de partes desses parmetros. Suponha que precisa de uma script que processe o ficheiro 1.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 no funciona, pois o que a shell est a tentar fazer substituir o valor da varivel $i.tmp, que no existe. Para proteger a expanso da varivel necessrio que o i entre { }. A script correta : #!/bin/bash for i in 1 2 do processa ${i}.tmp done Em cada iterao o valor de i substitudo por ${i}.
Expanso de Parmetros --- Descrio ${parmetro:-valor} Se parmetro nulo ento d como resultado valor ${#parmetro} Tamanho do parmetro ${parmetro%palavra} Do fim, remove a parte mais pequena que contenha palavra e retorna o resto.
${parmetro%%palavra} Do fim, remove a parte mais longa que contenha palavra e retorna o resto. ${parmetro#palavra} Do inicio, remove a parte mais pequena que contenha palavra e retorna o resto. ${parmetro##palavra} Do inicio, remove a parte mais longa que 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/
A script seguinte muda todos os ficheiros com extenso .txt para .doc: #!/bin/bash for ficheiro in *.txt do mv $ficheiro ${ficheiro%txt}doc done
Montando um servidor de E-Mail com o qmail Uma Introduo O qmail um poderoso servidor de e-mail, leve e muito rpido, que foi desenvolvido com o intuito de ser totalmente seguro. Desde sua ltima verso estvel (1.03), o qmail nunca teve nenhum bug comprometedor conhecido. Isso nos faz pensar que ele muito bom para o uso em produo, inclusive porque alm de ele ser muito estvel, flexvel o bastante para aguentar um trfego de e-mails muito grande. O site do qmail : http://www.qmail.org Vamos aprender aqui como montar um servidor de email usando o qmail junto com o vpopmail. O qmail vai trabalhar com o manuseio dos e-mails, enquanto o vpopmail ir cuidar das contas dos usurios, senhas, informaes, quotas, entre outros. Neste tutorial irei explicar tambm como utilizar o vpopmail para armazenar as informaes 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 seu cdigo-fonte. Existem pacotes j prontos em RPM,
DEB, etc, mas para um completo entendimento e compatibilidade entre todos os sistemas, usaremos mesmo o cdigo-fonte. A verso que estamos usando a 1.03, e pode ser obtida no endereo: http://www.qmail.org/qmail-1.03.tar.gz 1.1. Patches Precisaremos tambm aplicar alguns patches para o QMail antes de instal-lo no sistema. Voc pode instalar o QMail puro, mas eu recomendo estes patches para um aumento de desempenho e recursos. A seguir temos os patchs recomendados junto com suas descries: big-concurrency (http://www.qmail.org/bigconcurrency.patch): Este patch faz com que o qmail possa processar mais de 255 mensagens de uma vez no queue. Assim se a mquina for boa e com grande volume de mensagens simultneas, o servidor poder process-las mais rapidamente.
qmailqueue (http://www.qmail.org/qmailqueuepatch): Com este patch, o qmail antes de processar qualquer mensagem em seu queue, verifica a varivel de ambiente QMAILQUEUE em busca do programa de queue. Com isso pode-se encaminhar as mensagens para um script (qmail-scanner por exemplo) que filtrar estas mensagens. Isso pode ser usado para repassar a mensagem para filtros de extenses, palavras e anti-virus.
tarpit (http://www.palomine.net/qmail/tarpit.patch): O Tarpit uma tcnica anti-spam que adiciona um pequeno tempo de espera (sleep) quando o envio de emails passa de um certo limite. Por exemplo, se um spammer resolver mandar 1000 mensagens em uma
conexo s, o qmail com este patch verificar esta ao e a cada mensagem que o spammer mandar, voc pode configurar quanto tempo ele ter que esperar. Ento se configurado pra 50 mensagens, quando o spammer for mandar a mensagem 51, esperara por exemplo, 5 minutos. E depois pra mensagem 52, mais 5 minutos, e por a vai. Tudo isso configurvel. Existem outros patches interessantes, que voc pode querer usar em seu servidor de e-mail. Abaixo esto as descries de alguns que na minha opinio so interessantes. Como estou descrevendo-os apenas para o leitor conhecer mais recursos, no os cobrirei neste tutorial. Cobrirei apenas o trs patches anteriores. mfcheck (http://www.qmail.org/qmail-1.03mfcheck.3.patch): Com este patch, o servidor verifica no DNS se o domnio do destinatrio existe.
Agora vamos primeiro descompactar o qmail e instalar estes patches. Usaremos neste tutorial diretrios 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.patch cd qmail-1.03 patch -p0 < /root/download/tarpit.patch Pronto. Agora o qmail j est descompactado e aplicamos os trs patches como queramos. Se voc quiser aplicar algum outro patch, esta a hora. Se no quiser, seguimos em frente. 1.2. Compilando e instalando o qmail
Hora de se preparar para compilar o qmail e installo. Por padro, o qmail instalado no diretrio "/var/qmail". Voc pode especificar em que diretrio ele ser instalado editando o arquivo "conf-qmail" dentro do diretrio em que voc descompactou o cdigo-fonte do qmail. E em falar nisso, temos aqui alguns arquivos para configurar antes de compilar o programa. Aqui vai uma descrio deles: conf-users e conf-groups: Aqui esto os arquivos que indicam que usurios sero usados para rodar o qmail. bom deixar o padro mesmo, criaremos estes usurios e grupos logo a seguir.
conf-qmail: Como dito anteriormente, o diretrio onde o qmail ir ser instalado e estar funcional. Recomendo deixar este valor como "/var/qmail" mesmo, a no ser que voc queira instalar em outro lugar (outra partio de disco por exemplo). Este tutorial ir usar o valor "/var/qmail", se por acaso voc mudou esta configurao, substitua o "/var/qmail" pelo diretrio que voc configurou durante os passos deste tutorial. Uma outra boa idia mudar este valor para algo como /var/qmail-algumacoisa para indetificar esta instalao, e depois fazer um link simblico como /var/qmail para manter a compatibilidade. Assim voc pode compilar vrios qmails diferentes, e apenas mudar o link simblico para alterar a instalao do qmail que voc fez.
conf-spawn: Quantas mensagens podero ser processadas de uma vez pelo qmail. Com o patch que aplicamos, o "big-concurrency", pode-se colocar o valor maior que 255. O prprio patch modificou este valor para 1000, e at que um nmero bom. Mas como no queremos ter que recompilar o kernel para
suportar mais de 509 "file descriptors", colocaremos 500. Se seu servidor no tiver tantas mensagens assim, pode diminuir (deixar 240). Se tiver mensagem at demais (e o computador for bom tambm), pode aumentar. conf-split: Quantos subdiretrios o diretrio de queue do qmail ter. 23 um bom nmero, mas se quiser pode aumentar um pouquinho.
Depois de ajustados os arquivos ao seu gosto, hora de criar os usurios do qmail. Como criar estes usurios est descrito no arquivo "INSTALL.ids", mas colocarei aqui tambm para fins didticos: mkdir /var/qmail groupadd nofiles useradd -g nofiles -d /var/qmail/alias alias useradd -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 qmailq useradd -g qmail -d /var/qmail qmailr useradd -g qmail -d /var/qmail qmails Agora crie um link simblico para refletir as configuraes do qmail no diretrio /etc/qmail (fica mais 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
sua distribuio. Ento voc ter que ter eles instalados no sistema, ou a compilao nunca ser feita. Em algumas distribuies mais novas (como por exemplo, o Red Hat 9.0), durante a compilao ocorre um erro com o "errno" indefinido, se isso estiver ocorrendo com voc, pegue os patches para os programas usados neste tutorial no seguinte endereo: ftp://moni.csi.hu/pub/glibc-2.3.1/ E aplique os patches como os anteriores antes de compilar. Os arquivos que voc precisar so os que tem "programa.errno.patch" como nome de arquivo. Depois de compilado e instalado no diretrio /var/qmail, hora de configurar. O qmail contm um script que faz uma configurao rpida. Certifique-se que sua mquina tenha um nome vlido no DNS, e digite: ./config Caso voc no tenha um DNS ainda, voc pode ir configurando o qmail para ser usado. Tenha em mos o hostname e domnio de sua mquina e digite: ./config-fast nomedamaquina.dominio Substitua o nomedamaquina e dominio pelo hostname da sua mquina. Lembre-se que se isso no for vlido no DNS, voc precisar ter acesso ao DNS e configurar este hostname para que o qmail funcione corretamente. 1.3. Instalando programas adicionais Agora hora de instalar alguns programas adicionais que trabalharo junto ao qmail. Estes so: ucspi e daemontools.
ucspi-tcp (http://cr.yp.to/ucspi-tcp/ucspi-tcp0.88.tar.gz): O ucspi-tcp um programa feito pelo criador 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 srie de scripts para lidar com servidores (daemons). Ele usado para o controle dos programas do qmail.
Vamos instalar os dois programas: cd /root/build tar zpvfx /root/download/ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 make make setup check mkdir /package chmod 1755 /package cd /package tar zpvfx /root/download/daemontools-0.76.tar.gz cd admin/daemontools-0.76 package/install Pronto. Os dois programas foram instalados com xito. 1.4. Configurando a inicializao do qmail Agora vamos ter que criar uma srie de scripts e procedimentos para a inicializao do qmail. Crie o arquivo /var/qmail/rc com o seguinte contedo: #!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to
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/rc mkdir /var/log/qmail Agora precisaremos configurar qual o tipo de caixa de mensagem 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 diretrios, diferentemente do mbox, que o formato padro do UNIX. No mbox todas as mensagens ficam em um arquivo s, e quando este arquivo est muito grande, pode-se perder um pouco de desempenho. Para configurar o tipo de caixa de mensagem, s colocar o tipo no arquivo "/var/qmail/control/defaultdelivery". Com o comando abaixo, iremos configurar com Maildir: echo "./Maildir/" > /var/qmail/control/defaultdelivery Crie ento o arquivo /var/qmail/bin/qmailctl com o seguinte contedo: #!/bin/sh # description: the qmail MTA PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin export PATH QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild`
case "$1" in start) echo "Starting qmail" if svok /service/qmail-send ; then svc -u /service/qmail-send /service/qmail-send/log else echo "qmail-send supervise not running" fi if svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd /service/qmail-smtpd/log else echo "qmail-smtpd supervise not running" fi if [ -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 ;;
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 ;;
cdb) tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp.cdb echo "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 service cdb -- 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 delivery reload -- sends qmail-send HUP, rereading locals and virtualdomains queue -- shows status of queue alrm -- same as doqueue flush -- same as doqueue hup -- same as reload HELP ;; *) echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|que ue|help}" exit 1 ;; esac
exit 0 Este script o script de controle de inicializao do qmail. Com ele voc poder iniciar o qmail, parar, reiniciar, entre outros. Depois de criado esse arquivo com o contedo 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 na inicializao do Linux, faa os ajustes necessrios em sua distribuio 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 contedos dos arquivos: /var/qmail/supervise/qmail-send/run #!/bin/sh exec /var/qmail/rc /var/qmail/supervise/qmail-send/log/run #!/bin/sh exec /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`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "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/sh exec /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/run chmod 755 /var/qmail/supervise/qmail-send/log/run chmod 755 /var/qmail/supervise/qmail-smtpd/run chmod 755 /var/qmail/supervise/qmail-smtpd/log/run mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service Logo aps feito isso, o qmail ser iniciado pelo sistema e j estar funcionando. 1.5. Configuraes adicionais para o qmail 1.5.1. Relay Como configuraes adicionais, veremos primeiro quem 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 temos a seguinte linha: 127.:allow,RELAYCLIENT="" Essa linha diz que o IP 127.x.x.x pode utilizar o relay no seu servidor SMTP. Adicione aqui os IPs e/ou faixas de IPs que podero utilizar o seu servidor SMTP para enviar 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 seguinte comando para recarregar essa configurao: 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 descrio do patch para uma melhor explicao). Agora a hora de
configurar esses valores. Existem dois arquivos aos quais teremos que criar para essa configurao: /var/qmail/control/tarpitcount: Quantidade de mensagens aceitas. Depois que o numero de mensagens exceder o valor configurado neste arquivo, o qmail ir esperar X segundos entre cada mensagem adicional. O X segundos est configurado no outro arquivo.
Ento vamos usar como exemplo no nosso servidor 30 mensagens de limite, e 1 minutos entre cada mensagem adicional: 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 configurao do qmail V no diretrio /var/qmail/control (ou /etc/qmail) e verifique os arquivos deste diretrio. Eles contm os arquivos de configurao criados pelo comando ./config (ou ./config-fast) que foi executado durante a instalao 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
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 usurios do vpopmail no sistema: groupadd vchkpw useradd vpopmail -g vchkpw -d /mailhome Repare que o /mailhome ir ser o diretrio HOME do usurio vpopmail. Neste diretrio estaro armazenados todos os e-mails dos usurios, ento substitua esse diretrio por um diretrio que esteja numa partio grande. sempre bom voc criar uma partio (ou quem sabe colocar outro HD) grande para os e-mails e montar em um diretrio. E foi isso que foi usado neste tutorial, uma partio montada no diretrio /mailhome. No nosso tutorial iremos usar o servidor MySQL para armazenar os dados das contas. A configurao inicial do MySQL no explicada neste tutorial. Primeiro crie um banco de dados para o vpopmail no seu servidor MySQL. Certifique-se que o servidor esteja rodando e execute o comando: mysqladmin -u root -p create vpopmail Depois logue-se como root no seu servidor MySQL e crie um usurio vpopmail com as permisses necessrias para o banco de dados vpopmail: mysql -u root -p mysql mysql> GRANT ALL PRIVILEGES ON vpopmail.* TO vpopmail@localhost -> IDENTIFIED BY 'senhasecreta' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES; Substitua "senhasecreta" pela senha do usurio vpopmail que voc desejar. Veja tambm se voc tem instalado os pacotes de desenvolvimento do MySQL, pois eles sero necessrios na hora de compilar o vpopmail. 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 usurio "vpopmail" e a senha que voc escolheu. Depois disso o vpopmail j estar pronto para utilizar o MySQL como banco de informaes sobre as contas de e-mail. O vpopmail inclui vrias configuraes na hora da compilao. Todas estas configuraes so passadas ao cdigo-fonte do programa atravs do script ./configure. Vou incluir aqui as descries de algumas opes interessantes, voc poder escolher quais opes escolher, ou pode seguir o comando exato que utilizei neste tutorial (que bom tambm). --enable-learn-passwords: Se a senha do usurio estiver vazia, da prxima vez que o usurio logar no sistema e autenticar, a senha ser configurada automaticamente com o que ele tentou autenticar.
--enable-auth-logging: Faz um log das tentativas de autenticao no servidor de banco de dados MySQL.
--enable-clear-passwd: Alm das senhas criptografadas, coloca-se tambm elas em texto puro. til para quando o usurio esquece a senha e o administrador do sistema precisa dela. Mas no recomendado.
--enable-many-domains: Se sim, o vpopmail otimizado para suportar vrios dominios. Se no, otimizado para poucos domnios com muitos e-mails.
--enable-defaultquota: Qual o limite de espao que cada usurio pode ter por padro. Sem essa opo, fica sem limite. Voc pode configurar isso para cada usurio separadamente depois, mas se quiser estabelecer um padro, utilize o valor "XS" ou "XC" onde o X substituido pela quantidade de bytes e numero de mensagens respectivamente. Por exemplo, o parmetro "--enable-defaultquota=30000000S,2000C" significa que o limite padro dos usurios ser 30MB ou 2000 mensagens. Leia o README.quotas dentro do diretrio do cdigo-fonte do vpopmail para mais informaes.
Ento neste tutorial usaremos o comando: ./configure --enable-learn-passwords=y --enable-authlogging=y \ --enable-clear-passwd=n --enable-valias=y \ --enable-mysql-logging=y --enable-mysql=y \ --enable-qmail-ext=y --enabledefaultquota=30000000S,2000C Caso o configurador no ache as bibliotecas do MySQL, instale o pacote de desenvolvimento do MySQL (como dito acima) e aponte com o parmetro "--enable-libdir". Por exemplo: "--enablelibdir=/usr/include/mysql". Agora hora de compilar e instalar o vpopmail atravs dos comandos: make make install-strip Pronto! O vpopmail j est configurado e funcionando no diretrio /mailhome (ou o que voc escolheu). Agora hora de criarmoso o seu primeiro domnio. Fazemos isso com o comando: /mailhome/bin/vadddomain dominio.com.br Digite a senha do postmaster, repita e o domnio est criado. Agora s ir adicionando usurios neste domnio: /mailhome/bin/vadduser sss@dominio.com.br (Senha) /mailhome/bin/vadduser xxx@dominio.com.br (Senha) /mailhome/bin/vadduser zzz@dominio.com.br (Senha) E por a vai.
3. Instalando o Courier-IMAP Por enquanto ns configuramos o servidor de e-mail (SMTP) e suas contas. J d pra mandar e-mail e tudo mais. Mas e pra pegar os e-mails no servidor? Precisaremos de um servidor POP e/ou IMAP. Neste tutorial 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 no tenha usado o formato "Maildir" na caixa de mensagem, utilize outro servidor como o prprio qmail-pop3d. O Courier-IMAP pode ser obtido na seguinte URL: http://prdownloads.sourceforge.net/courier/courierimap-2.1.1.tar.bz2 Baixe este arquivo para o diretrio /tmp. Voc ter que virar um usurio comum, pois o Courier-IMAP no 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.bz2 cd 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/courierimap make su root -c "make install-strip; make install-configure" Agora voc ter que decidir quais os servios que voc rodar com o Courier-IMAP. Esto disponveis: IMAP, POP3, IMAP sob SSL e POP3 sob SSL. No caso deste tutorial, usaremos o IMAP e o POP3. Primeiro logue-
se como root e copie o arquivo de inicializao para o diretrio /etc/init.d: cd /tmp/courier-imap-2.1.1 cp courier-imap.sysvinit /etc/init.d chmod 755 /etc/init.d/courier-imap Depois coloque este script na inicializao do Linux, de acordo com sua distribuio. O comando para iniciar : /etc/init.d/courier-imap start Mas primeiro devemos configurar primeiro. V no diretrio "/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 o comando anterior, que os servidores de IMAP e POP3 estaro funcionando. 4. Instalando programas adicionais Certo, temos os servios bsicos para um servidor de e-mail rodar: um servidor SMTP, POP3, um banco de dados com as contas dos usurios. Temos agora que instalar novos programas e acopl-los nossa instalao para melhorar o nosso servidor de e-mail. Isso inclui um gerenciador de listas de discusso, filtro de e-mails, anti-virus, e por ltimo uma interface de administrao de contas do vpopmail. 4.1. Gerenciador de listas de discusso: ezmlm-idx O ezmlm-idx uma verso extendida do ezmlm, que por sua vez um gerenciador de listas de discusso criado pelo prprio criador do qmail para funcionar
em conjunto com o qmail. O ezmlm um gerenciador muito bom, e muito usado. Outras alternativas ao ezmlm 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 verso 0.40 do ezmlm-idx e a verso 0.53 do ezmlm (voc vai precisar dos dois), nas seguintes URLs: http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlmpatches/ezmlm-idx-0.40.tar.gz http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlmpatches/ezmlm-0.53.tar.gz Baixe e depois descompacte estes dois arquivos: cd /root/build tar zpvfx /root/download/ezmlm-0.53.tar.gz tar zpvfx /root/download/ezmlm-idx-0.40.tar.gz cd ezmlm-0.53 Agora voc vai precisar editar 3 arquivos, que so: conf-bin: Diretrio onde vo ficar os binrios do ezmlm. Utilize o /usr/bin
conf-qmail: Caso voc tenha instalado o qmail em algum lugar quie no seja o /var/qmail, modifique este arquivo, colocando nele o diretrio onde voc instalou o qmail. No nosso caso vai ficar como /var/qmail mesmo.
Depois de editado os arquivos, vamos aplicar o patch do ezmlm-idx antes de compilar e instalar. Para fazer isso execute os seguintes comandos:
cp -R /root/build/ezmlm-idx-0.40/* /root/build/ezmlm0.53 (Sobrescreva todos os arquivos se precisar) patch < idx.patch echo `which crontab` > conf-cron (Isso vai colocar o executavel do crontab no arquivo conf-cron) E antes de compilar, vamos habilitar o suporte ao MySQL j que na instalao deste tutorial estamos usando o MySQL como banco de dados para a gerencia de contas. Edite o arquivo "sub_mysql/confsqlcc" e o "sub_mysql/conf-sqlld". O conf-sqlcc aponta para o diretrio onde esto os cabealhos de desenvolvimento 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 o diretrio onde esto as bibliotecas, que geralmente ficam em /usr/lib/mysql (ou /usr/lib). Tente essas opes caso uma ou outra no funcione. Depois compile o mdulo do MySQL: make mysql Pronto, vamos agora compilar o programa, as pginas de manual, o suporte lngua Portuguesa do Brasil: make clean make make man make pt_BR E assim o programa estar totalmente compilado. Como passo final, iremos configurar o servidor MySQL para o ezmlm-idx utilizar. Teremos primeiro
que criar o nosso banco de dados, o usurio ezmlm e dar as permisses: mysqladmin -u root -p create ezmlm mysql -u root -p mysql mysql> GRANT ALL PRIVILEGES ON ezmlm.* TO ezmlm@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 tabelas no 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 atravs 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 um anti-virus. Nossa instalao ir suportar uma variedade de anti-virus para sistemas Linux disponveis no mercado, tanto comerciais como livres. O Anti-virus ser usado em conjunto com o qmailscanner (Ver prxima seo). Como neste tutorial estamos usando uma soluo livre, usaremos o ClamAV, que tem sua URL oficial sendo: http://clamav.elektrapro.com/
Baixe a verso mais nova. Neste tutorial, usaremos o seguinte arquivo: http://unc.dl.sourceforge.net/sourceforge/clamav/clama v-0.60.tar.gz Baixe este arquivo, descompacte e instale: cd /root/build tar zpvfx /root/download/clamav-0.60.tar.gz cd clamav-0.60 groupadd clamav useradd clamav -g clamav -s /dev/null ./configure --prefix=/usr --sysconfdir=/etc make make install ldconfig Agora edite o arquivo /etc/clamav.conf e vamos configurar. A seguir vai um arquivo de configurao exemplo, com as opes comentadas no prprio arquivo: # Exemplo de configurao do ClamAV # # Arquivo de log para o clamd, muito til para se avaliar depois o que o # clamav est fazendo. LogFile /var/log/clamav.log # Tamanho mximo do arquivo de log. Se voce estiver preocupado com seu # espao em disco, uns 5MB est bom. Especifique o valor 0 para deixar # sem limite de tamanho mximo. LogFileMaxSize 5M
# 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 # Diretrio onde esto os arquivos .db (banco de dados de virus, entre outros) DataDirectory /usr/share/clamav # Diretrio onde vai ficar o socket local de conexo com o clamd LocalSocket /var/lib/clamav/clamd # Profundidade mxima de diretrios para ser scanneado (segurana) MaxDirectoryRecursion 15 # Suporte adicional para scannear e-mails ScanMail # Scannear arquivos compactados ScanArchive # Tamanho mximo limite para scannear arquivos compactados. ArchiveMaxFileSize 30M # Limite mximo de recursividade de arquivos compactados dentro de
# arquivos compactados ArchiveMaxRecursion 5 # Nmero mximo de arquivos scanneados dentro de um arquivo compactado ArchiveMaxFiles 1000 # Habilitar o suporte ao Clamuko (Scanneamento em tempo real) ClamukoScanOnLine # Set access mask for Clamuko. ClamukoScanOnOpen ClamukoScanOnClose ClamukoScanOnExec # Qual o diretrio que ser scanneado os arquivos. Como estamos usando # num servidor de e-mail, coloque aonde os seus emails ficam. No nosso # caso fica em /mailhome ClamukoIncludePath /mailhome # Limite do tamanho do arquivo para ser scanneado com o Clamuko ClamukoMaxFileSize 5M # Habilitar suporte a arquivos compactados no Clamuko ClamukoScanArchive Depois execute os comandos: mkdir /var/run/clamav chown clamav.clamav /var/run/clamav -R freshclam
(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 de dados com novos virus. Para incluir no crontab, adicione a seguinte linha ao arquivo /etc/crontab: 0 1 * * /usr/bin/freshclam * root
Agora todo dia 1 da manh ele vai chegar se existem atualizaes no banco de dados de Virus. Caso exista, ele baixa as atualizaes automaticamente para voc. Em seguida crie o script /etc/init.d/clamav (ou o equivalente em sua distribuio) com o seguinte contedo: #!/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 ;;
esac exit 0 Em seguinda coloque-o na inicializao do sistema (como o script do qmail). No esquea de tornar o script executvel 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 como intermediador dos e-mails do servidor qmail. Com ele voc pode especificar que mensagens podem passar ou no, a depender de certos critrios. Estes critrios podem ser por exemplo: barramento de extenses, 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 segurana adicional. A URl oficial do programa : http://qmail-scanner.sourceforge.net/ Baixe a verso mais nova. Neste tutorial, usaremos o arquivo: http://unc.dl.sourceforge.net/sourceforge/qmailscanner/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 invs do qmail-queue, assim o qmail-scanner pode
fazer o filtro dos e-mails e repassar para o verdadeiro qmail-queue, que faz a entrega dos e-mails nas caixas locais. O qmail-scanner vai precisar de alguns outros programinhas e cdigos para satisfazer suas dependncias. Estes so: Perl 5.005_03+ e mdulos: Time::HiRes, DB_File, Sys::Syslog: http://www.cpan.org
Instale os mdulos do Perl com o CPAN (O perl vem em praticamente todas as distribuies): perl -MCPAN -e shell (Configure o CPAN de acordo com as instrues) install Time::HiRes install DB_File install Date::Parse Para quem no sabe, o CPAN um repositrio de cdigos em perl. Com ele voc pode instalar "mdulo" Perl com a facilidade de um comando. Em termos de facilidade, bem parecido com o famoso apt :) Os comandos acima instalam os 3 mdulos do Perl requeridos pelo qmail-scanner. Alm disso, ele instala tambm outros mdulos associados esses trs e que no estejam no seu sistema. Agora vamos instalar o Maildrop:
cd /root/build tar jpvfx /root/download/maildrop-1.6.0.tar.bz2 cd maildrop-1.6.0 ./configure --prefix=/usr make make install-strip make install-man Pronto! Maildrop instalado, agora a vez do TNEF: cd /root/build tar zpvfx /root/download/tnef-1.2.1.tar.gz cd tnef-1.2.1 ./configure --prefix=/usr make make install Pronto! TNEF instalado. Agora vamos voltar ao qmailscanner... Mas antes! O qmail-scanner rodar como root pelo perl, ou seja, ele precisar do perl com suid. Voc precisar ter uma instalao do Perl-suid para o qmail-scanner funcionar. Procure pelo pacote do perlsuid em sua distribuio. (Por exemplo, no Debian voc pode digitar apt-get install perl-suid). cd /root/build tar zpvfx /root/download/qmail-scanner-1.20rc3.tgz cd 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 disponveis. Se voc fez tudo certo, o resultado que aparecer na tela ser parecido com esse: Building Qmail-Scanner 1.20rc3...
This script will search your system for the virus scanners it knows about, and will ensure that all external programs qmail-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/reformime uudecode=/usr/bin/uudecode unzip=/usr/bin/unzip tnef=/usr/bin/tnef Content/Virus Scanners installed on your System clamuko=/usr/bin/clamdscan (which means clamscan won't be used as clamdscan is better) Qmail-Scanner details. log-details=0 fix-mime=1 debug=1 notify=sender,admin redundant-scanning=no
virus-admin=root@hayama local-domains='hayama' silentviruses='klez','bugbear','hybris','yaha','braid','nimda','tanatos','sobig','winevar','paly 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/quarantineattachments.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 virus definitions 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 configurao esto
disponveis no diretrio /var/spool/qmailscan. Agora aproveite para editar o arquivo "/var/spool/qmailscan/quarantine-attachments.txt" e configure o filtro de arquivos anexados. Por exemplo, adicione as seguintes linhas no final do arquivo (Nota: os espaos nas linhas no so espaos, so 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
.mde 0 .bas 0 .msp 0 .mst 0 .pcd 0 .crt 0 .hlp 0 .url 0 Locator) .ins 0 .isp 0 .vb 0 .wsc 0 .shb 0 .mp3 0 .mp2 0
Access MDE Database Visual Basic Class Module Windows Installer Patch Visual Test Source File Photo CD Image Security Certificate Windows Help File Internet Shortcut (Uniform Resource Internet Communication Settings Internet Communication Settings Script Script File Windows Script Componen Shell Scrap object MPEG Layer 3 Sound MPEG Layer 2 Sound
Todas as extenses a listadas sero 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 modificao: falar ao qmail para usar o qmail-scanner nos seus e-mails. Para isso usaremos o recurso do patch qmailqueue, aplicado na instalao do qmail. Para quem no lembra, este patch faz com que o qmail procure pela varivel de ambiente QMAILQUEUE, e use o programa contido nessa varivel para mandar os e-mails recebidos. Para configurar essa varivel 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 seo do qmail, ento o mesmo exemplo ser usado aqui abaixo, com as modificaes para o qmail-scanner: 127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-
queue.pl" 192.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmailscanner-queue.pl" 200.165.123.223:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmailscanner-queue.pl" Assim todo e-mail ser passado pro qmail-scanner. Digite o seguinte para recarregar este arquivo: qmailctl cdb Referncias:
Life With QMail: http://www.lifewithqmail.org Pgina do QMail: http://www.qmail.org Documentaes de cada programa :)
Bom proveito! Recompilando o kernel do Linux A recompilao do kernel tem de ser extremamente observada... nela que voc poder colocar suporte a muitos hardwares, habilitar recursos do kernel (como firwall e compartilhamento NAT), entre outras coisas. Muitas distribuies incluem kernels j compilados e prontos para usar, mas sempre recomendado que voc compile o seu kernel para otimiz-lo conforme suas necessidades, e para aprender tambm! Vou explicar aqui, passo-a-passo, como se d o processo de recompilao do kernel. Lembrando que toda operao dever ser feita com o root. Passo 1 # cd /usr/src # rm -rf linux # tar zpvfx /diretorio/linux-2.x.x.tar.gz
# ln -s linux-2.x.x linux # cd linux O que fizemos aqui foi somente apagar o cdigo do kernel velho, para instalar um novo. Isso voc s faz se estiver compilando um kernel novo que pegou na internet. Os cdigos-fontes do kernel em suas vrias verses podem ser todos encontrados atravs do endereo ftp://ftp.kernel.org ( prefervel que voc utilize o mirror deste FTP localizado aqui no Brasil, que ftp://ftp.br.kernel.org). Veja tambm que eu apaguei o kernel antigo (rm -rf linux), se voc quiser pode apenas renomear o diretrio para outro nome, assim no perde o cdigo velho. Pode acontecer de voc pegar kernels compactados com .bz2, veja a seo de "Outros comandos" para obter uma ajuda mais ampla para descompactar isto. Alguns arquivos quando descompactados, j criam o diretrio 'linux', ento no preciso voc ter de fazer o link simblico (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 opes de suporte. Esta parte com voc, pois voc que vai escolher o que quer. Tem muitas e muitas opes que voc poder no saber... Voc pode ler o help destas opes, ou simplesmente deix-las como esto. Configurao do kernel uma coisa que voc se acostuma com o tempo, praticando :) O 'make
menuconfig' gera um menu grfico no console, voc pode substituir este comando por outros, que so: 'make config' (modo terminal, sem grficos, vai perguntando opo por opo e no recomendado) e 'make xconfig' (modo grfico com janelas, s roda no X-Window). O 'make dep' cria as dependncias que a compilao do kernel vai usar. O 'make clean' apaga arquivos que j esto 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 recomendvel voc usar o bzImage, mas voc tambm pode usar o 'make zImage', que cria uma imagem 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 diretrio /boot, com o nome de vmlinuz-2.x.x. Substitua o .x.x pela verso do seu kernel. Esta informao ser til quando voc for configurar o LILO para bootar com essa nova imagem. Veja a configurao do LILO ou do GRUB tambm. Passo 3 # make modules # make modules_install # lilo # reboot O 'make modules' cria os mdulos que voc configurou no 'make menuconfig', e o 'make modules_install' instala estes mdulos compilados no diretrio /lib/modules. O 'lilo' reinstala o LILO, para obter mais
detalhes, veja sobre a configurao do LILO, e s utilize este comando se voc estive rodando o lilo e no o GRUB (geralmente quando se est usando o GRUB, o arquivo "/etc/lilo.conf" no existe ou est vazio. E por ltimo, o 'reboot', que reseta a mquina para que seu kernel novo funcione. Se voc usa GRUB, no se esquea de alterar o arquivo "/boot/grub/menu.lst" e adicione na opo 'kernel' o caminho da sua imagem do kernel recmcriada. No caso do GRUB, no preciso executar nenhum comando, s salvar o arquivo que as configuraes estaro feitas. A recompilao do kernel a nica coisa no Linux que necessita reiniciar a mquina! Passo alternativo As instrues acima foram para a compilao de um upgrade do kernel. Se voc quiser recompilar o kernel somente para adicionar e/ou retirar coisas, voc vai ao diretrio '/usr/src/linux' e executa o passo 2. Reparticionamento livre 1. Particionamento Esta uma das mais difceis tarefas, que impedem e confudem vrios iniciantes do Linux! Sem dvida, esta a etapa mais difcil de qualquer instalao, todo mundo diz que o Linux dificil de instalar justamente por causa disto. Mas pense bem, imagine que um computador venha pronto para instalar o Linux, ser difcil? No, ser que nem o Windows, e do jeito que os tipos de instalao esto ficando cada vez mais fceis... 2. Reparticionamento com o fdisk
Legal, mas vamos aprender a mecher ento no fdisk do Linux, que onde criaremos nossas parties :) Antes de mais nada, fique sabendo que voc tem que ter o HD com espaco livre (no espao livre numa partio, e sim espao livre para criar uma partio). Tem gente que opta em formatar o HD, mas como no todo mundo que gosta disso, tentem usar o FIPS, que deixar espao livre para voc criar outras parties, sem ter de formatar o HD. Funciona, eu j vi funcionar. Se voc no tiver um sistema DOS/Windows, ento voc pode usar o programa GNU Parted para fazer o particionamento do disco sem ter que perder os dados dele. Tambm funciona porque eu j tentei aqui na minha prpria mquina. Algumas distribuies atuais j incluem na sua instalao uma interface automtica para reparticionar o disco com esse programa... Ento se for o caso de voc usar uma distribuio que tenha este recurso, no ser necessrio voc ter que particionar seu disco como descrito aqui nesta seo. Aqui esto os endereos para os programas de reparticionamento:
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 dvidas em relao a particionamento, e quer ter a certeza que no vai perder nenhum dado, o ideal seria voc fazer um backup dos seus arquivos. Ento vamos, mos obra. Voc deve estar no simples prompt do Linux... Nas instalaes voc pode ser presenteado com uma shell, onde voc poder rodar o fdisk. Se voc
tiver numa interface grfica ou coisa assim, experimente apertar CTRL+ALT+F2, provavelmente voc ir para o prompt. Primeiro entenda o seguinte: /dev/hda - IDE Primria Master /dev/hdb - IDE Primria Slave /dev/hdc - IDE Secundria Master /dev/hdd - IDE Secundria Slave Fazemos de conta que aqui eu no tenho o Linux instalado, e pretendo instalar ele no segundo HD da minha mquina. Tenho 2 HDs, um para o sistema Windows (/dev/hda) e outro para o Linux (/dev/hdb). O que eu vou particionar com o fdisk apenas o segundo HD, que o /dev/hdb, ento eu executo o fdisk assim: fdisk /dev/hdb Voc ir ser presentiado com um prompt. Neste prompt voc poder digitar algumas letras que vo corresponder a comandos... Como primeiro comando, vamos ver a mensagem de ajuda. Digite "m", e uma mensagem com informaes de uso vai aparecer. Os seguintes outros comandos esto disponveis: Comando a b c d l m n Ao Muda a partio ativa (bootvel) Edita o disklabel do bsd Muda o sinal de compatibilidade do DOS Deleta uma partio Lista os tipos de parties conhecidas Mostra a mensagem de ajuda Adiciona uma nova partio
p q t u v w x
Mostra a tabela de parties atuais Sai sem salvar as mudanas Muda o tipo de partio Muda as unidades de entrada/sada Verifica a tabela de parties Aplica as alteraes e sai do programa Outras opes
Vamos comear a mexer com as opes do fdisk. Como vamos mexer com o o HD, temos que saber primeiro se ele est vazio... Para fazer isso voc usa o comando "p" para ver a tabela de parties atual: Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes Device Boot System Begin Start End Blocks Id
Aqui no caso no apareceu nenhuma listagem de partio, ento isto quer dizer que o HD est vazio e pronto para se criar parties! Mas se por exemplo, existisse uma partio j criada neste HD, como ficaria? Vejamos: Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes
Begin 1
Start 1
End
Blocks Id b
526 1060384+
A ento apareceu uma partio FAT32, e como eu no quero essa coisa, vou delet-la para deixar o HD sem parties! :) Repare que a partio 1, porque vem o nmero 1 depois de /dev/hdb, ficando /dev/hdb1. Ento iremos agora deletar a partio 1: Command (m for help): d Partition number (1-4): 1 Pronto, a partio foi deletada. Como eu vou querer instalar o Linux sozinho, crio as parties Linux Native e Linux Swap. Eu tenho um HD de 1gb, e vou colocar 950MB para o Linux Native e 50MB para Swap: Command (m for help): n Command 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 cylinders Units = cylinders of 4032 * 512 bytes Device Boot System /dev/hdb1 Begin 1 Start 1 End Blocks Id
483 973696+ 83
Linux native Command (m for help): n Command 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): 82 Changed 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 System /dev/hdb1 Linux native /dev/hdb2 Linux swap Begin 1 484 Start 1 484 End Blocks Id
Command (m for help): Viu como no to difcil? Como ltimo comando acima, eu primeiro criei duas parties com tamanhos variados. Uma dessas parties vai ser a swap, ento tenho que mudar o tipo (id) dela... Para isso executei o
"t" e coloquei o valor 82 para a partio 2 (/dev/hdb2). Como resultado deste processo todo... podemos ver a ultima mostragem do comando "p"... Perfeito! Agora s precisamos salvar a configurao, 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 uma distribuio Linux. Saindo um pouco do fdisk, vamos ver agora como funciona o GNU Parted e o FIPS. Estes dois programas sero teis para voc no perder os seus queridos dados, como seus vdeos de Anime e suas musiquinhas em mp3 :D 3. Reparticionamento com o GNU Parted O GNU Parted um programa muito bom para reparticionar 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. Ento voc pergunta... Se eu quero particionar o meu HD para instalar 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 mquina. Para fazer isso voc precisar de um disquete, e alguns utilitrios. Com isso iremos criar um bootdisk que vai conter o GNU Parted para voc usar vontade! Se voc j tiver Linux, no 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
O Rawrite um programa que cria bootdisks a partir de imagens. Ento para criar a bootdisk, a imagem (segundo arquivo) o necessrio. Essa imagem contm um Linux bem compacto, com o GNU Parted contido nele. No DOS, descompacta o Rawrite em um diretrio e coloca a imagem neste mesmo diretrio e executa o comando: rawrite partboot.img a: Ou voc pode digitar rawrite apenas, e ele vai te pedir a imagem e depois aonde escrever a imagem. Ento voc coloca os dois parmetros (partboot.img que a origem, e a: que o destino). Espere um pouco e o bootdisk est pronto para ser criado e utilizado. Para criar este bootdisk no Linux, voc s precisar da imagem, ento s utilizar o comando: dd if=partboot.img of=/dev/fd0 bs=1440k Para utilizar o bootdisk, reinicie a mquina, coloque o disquete no driver e espere o boot (o boot por disquete tem 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), estvamos usando o /dev/hdb, ento aqui vai ser a mesma coisa: parted /dev/hdb Voc ser presenteado com um prompt. Digite print para obter a tabela de parties atual do seu HD. Vamos usar aqui um exemplo que bate com a maioria dos casos: (parted) print Disk geometry for /dev/hdb: 0.000-2457.984 megabytes
Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 2457.000 primary FAT boot Aqui eu tenho uma partio de 2.5GB. Os dados fornecidos pelo comando print esto todos em MB... O que voc ter de fazer aqui redimensionar esta partio, para deixar um espao livre para Linux. Antes de redimensionar certifique-se de que sabe o que est fazendo, e de que o espao livre tenha o tamanho da partio que voc quer criar ( meio impossvel voc criar uma partio sem espao em disco disponvel n? :)). Vamos supor que eu quero criar uma partio de 1.5GB, fao assim: (parted) resize 1 0.031 1000 O programa ir mecher com seu HD como se estivesse esbagaando ele todinho, mas o que ele est fazendo redimensionando a partio, mexendo nos dados e checkando tudo para que se houver algum crash, possa se recuperar alguma coisa depois. O comando "resize" j diz tudo, redimensiona a partio. O primeiro parmetro, o "1" corresponde ao nmero da partio (Minor), que foi mostrado com o comando "print". O segundo e terceiro parmetro so respectivamente o incio e o fim em Megabytes da partio que vai ser redimensionada, no exemplo, a partio ia de 0 at 2500, ento diminumos ela para de 0 at 1000, deixando 1500 Megabytes livres para criar outras parties. Feito com sucesso essa modificao da tabela de parties do HD, saia com o comando "quit", e manuseie normalmente o seu HD com o programa fdisk (criao de parties Linux, definies como Linux Native e Swap, etc). Por que usar o fdisk? Questo de gosto :)
4. Reparticionamento com o FIPS Se voc no pode usar o fdisk, e no quer usar o GNU Parted para reparticionar sem perder dados, o FIPS uma boa alternativa para fazer isso. O FIPS um programa para DOS, ento o oposto ao GNU Parted: s roda em DOS, e no em Linux. O FIPS foi e ainda bem usado para fazer a tarefa de repartio do HD. Mostrarei a seguir os passos bsicos para voc redimensionar uma partio Windows, seguindo o mesmo escopo dos exemplos anteriores. Antes de mais nada, voc ter que desfragmentar o seu disco todo. No Windows e no DOS isto feito com o programa defrag, que move os arquivos para o comeo do HD, organizando e deixando o final livre. O FIPS requer que o final do HD fique livre, assim ele pode dividir a partio sem mexer com nenhum dado. Outra coisa muito importante: crie um disco de boot do Windows e coloque dentro dele tambm o fips.exe. Ento boote com este bootdisk que voc criou e execute o fips: a:\fips.exe Depois disso, algumas informaes iro ser mostradas, como por exemplo a tabela de parties e os informaes 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 -----+--------+----------------+------+----------------+-------+---------+----
0 0 0 0
63| 0| 0| 0|
63|
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: F8h Sectors per FAT: 6176 Sectors per track: 63 Drive heads: 128 Hidden sectors: 63 Number of sectors (long): 6330177 Physical drive number: 80h Signature: 29h Checking boot sector ... OK Checking FAT ... Na mensagem "Checking FAT...", o programa est checkando o seu sistema de arquivos DOS para ver se ele vai poder fazer o redimensionamento da partio. Se por exemplo voc no tiver o ltimo cilindro da partio livre (isso porque voc no deve ter executado o defrag para colocar tudo no comeo), ento o
programa diz que no pode criar partio e sai. Se tudo ocorrer bem, voc j poder especificar qual o tamanho para ser redimensionado. Escolha o tamanho da sua nova partio movendo as dimenses dos cilindros com os cursores (setas do teclado). Depois de tudo ajeitado conforme as suas necessidades, aperte enter para continuar. O programa ir checkar novamente por cilindros livres e depois vai recalcular os dados da tabela de parties do HD, mostrando as novas configuraes. Apertando C agora, ele vai fazer mais verificaes e finalmente ir perguntar se voc deseja continuar. Apertando Y voc confirma, ele cria a nova partio, salva, e sai do programa. Esta nova partio criada uma partio primria DOS, ento voc ter de ir ao fdisk do Linux (atravs de um bootdisk por exemplo), excluir essa nova partio criada e criar novas para o Linux, como descrito anteriormente. o mesmo esquema de depois da redimensionamento da partio com o GNU Parted, e no deve apresentar muitas dificuldades. 5. Ufa! Finalmente tudo est criado e pronto para se instalar Linux. S para finalizar o assunto de parties, vamos falar sobre os sistemas de arquivos suportados pelos redimensionadores (GNU Parted e FIPS). O FIPS apenas suporta redimensionamento de parties do tipo DOS (fat), sendo impossvel dividir uma partio Linux (ext2). J o GNU Parted suporta parties DOS (fat) e Linux (swap e ext2). No Linux tambm possvel usar o sistema de arquivos ReiserFS, e para redimensionar este tipo de partio, h um utilitrio prprio chamado reiserfs resizer, que vem junto com o pacote ReiserFS. Se voc tiver uma partio ReiserFS
o pacote pode ser obtido atravs do endereo: http://devlinux.com/projects/reiserfs. E qualquer dvida sobre o parties, e o uso de destes programas, voc deve recorrer algumas documentaes disponveis: 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 Documentao do FIPS (vem incluso com o fips20.zip)
Gerando relatrios do Squid com o SARG O SARG (Squid Analysis Report Generator) uma ferramenta muito boa desenvolvida por um brasileiro que permite voc ver para "onde" seus usurios esto indo na Internet atravs da anlise do arquivo de log "access.log" do famoso proxy Squid. O poder da ferramenta incrvel, ele pode dizer para voc quais usurios acessaram quais sites, em que horas, quantos bytes foram baixados, quantas conexes foram feitas, relatrios de sites mais acessados, usurios que mais acessam, relatrio de sites negados, falha de autenticao, entre outros. A gerncia que voc pode obter com isso muito boa, principalmente para as empresas que querem economizar o uso da Internet. Vamos aqui instalar e configurar o SARG para ele gerar relatrios dirios de acesso do Squid. Para isso precisaremos de um Squid j configurado e rodando (o que no vou cobrir neste tutorial em si), que gere os logs de acesso no arquivo access.log. Se voc
desconhece isso, v ao arquivo de configurao do Squid e veja se existe a linha abaixo. Se no existir, adicione: cache_access_log /var/log/squid/access.log Geralmente o arquivo de configurao do Squid est em "/etc/squid/squid.conf". A linha acima especifica que o arquivo de log dever estar em "/var/log/squid/access.log", lembre-se disso para posteriormente informarmos ao SARG. Se voc teve que adicionar essa linha no Squid, reinicie-o (ou de um 'reload' no servio) para que as mudanas sejam efetivadas. Agora vamos ao que interessa. Voc precisar baixar o SARG atravs do endereo:
SARG - http://web.onda.com.br/orso/
No caso deste tutorial, peguei o codigo-fonte da verso 1.2.2. Voc poder notar tambm que h links para pacotes pr-compilados, e caso voc tenha uma distribuio suportada, voc pode pegar os pacotes e instalar atravs do gerenciador de pacotes. Mas como peguei o cdigo-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 compilao...] # make [...compilando...] # make install
Fiz o procedimento como root porque quis, na verdade o root s requerido no passo "make install", porque ele instala o programa "sarg" no /usr/bin e o diretrio de configurao em "/etc/sarg". Isso tudo pode ser escolhido atravs do comando "./configure", e para voc saber de suas opes, digite "./configure --help". Agora que o programa foi compilado e instalado, precisaremos configurar para ele rodar. Escolhemos na compilao o diretrio /etc/sarg para armazenar os arquivos de configurao, ento vamos agora trabalhar nele. # pwd /etc/sarg # ls exclude_codes languages/ sarg.conf Veja quais os arquivos padres que ele cria. Como nossa instalao 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 # ls default.conf exclude.hosts exclude.users exclude_codes exclude.strings languages/ Uma breve explicao sobre os arquivos que criamos: exclude.hosts - Aqui cada linha ter um domnio/URL que no ser mostrada no relatrio. til para voc colocar, por exemplos, endereos de download da Intranet que passam pelo Squid, mas no gastam banda de Internet nenhuma.
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 relatrio. Com isso voc pode filtrar qualquer coisa do relatrio. exclude.users - Os usurios que estiverem neste arquivo (separados por linha) no sero includos no relatrio.
Agora vamos ter que criar um arquivo de configurao para o SARG. Como eu disse anteriormente, este arquivo de configurao ser para um relatrio dirio. Colocaremos essa configurao no arquivo "/etc/sarg/sarg-dia.conf". Abaixo segue um arquivo de configurao comentado, para posterior anlise: # Relatrio Squid por: Dia # Lngua Utilizada, coloquei em ingls aqui, mas ser tudo em portugus # do Brasil, veja o porqu depois. language English # Arquivo de LOG do Squid, lembra? Na sua configurao do Squid tem # falando onde se encontra este arquivo. access_log /var/log/squid/access.log # Ttulo da pgina HTML title "Relatrio Dirio do Proxy" # --- Visual --# Aqui tem vrias variveis que voc pode mudar para deixar o # visual do relatrio (cores, fontes, etc) de acordo com o que
# voc quiser. Aqui estou usando os valores padres. font_face Arial header_color darkblue header_bgcolor blanchedalmond header_font_size -1 background_color white text_color black text_bgcolor beige title_color green #--- Fim do Visual --# Diretrio Temporrio temporary_dir /tmp # Diretrio de Sada para as pgina de relatrio, ou seja, # onde o relatrio vai ficar para consulta via um navegador. # "Geralmente" esse diretrio tem que estar dentro do root do seu # servidor Web :D output_dir /var/www/html/squid-report/dia # Qual critrio de ordem para a seo "TopUser?" USER/CONNECT/BYTES/TIME # Isso ir organizar o relatrio na seo de TopUsers, colocando os usurios # que mais baixaram bytes primeiro. topuser_sort_field BYTES reverse # Qual critrio de ordem para a seo "User"? SITE/CONNECT/BYTES/TIME # Isso ir organizar a seo de usurios da mesma forma que o item anterior. user_sort_field BYTES reverse
# Arquivo com usurios que no devem estar nos relatrios exclude_users /etc/sarg/exclude.users # Arquivo com hosts que no devem estar nos relatrios exclude_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 relatrios, o mais antigo automaticamente removido. Aqui # estamos indicando para nunca apagar nada. lastlog 0 # Remover arquivos temporrios aps o uso? remove_temp_files yes # Gerar o index.html? (only = gera s o index.html principal) index yes # Sobrescrever o relatrio se j existe? overwrite_report yes # O que fazer com registros sem usurio? (ignore/ip/everybody) records_without_userid ignore # Usar vrgula ao invs de ponto?
use_comma no # Qual a quantidade de sites mais visitados listar? topsites_num 100 # Qual critrio de ordem para o topsites? CONNECT/BYTES A/D # Aqui diz para ordenar os sites mais acessados por utilizao de banda, # em forma decrescente. topsites_sort_order BYTES D # Arquivo de cdigos HTTP para serem ignorados no relatrio exclude_codes /etc/sarg/exclude_codes # Tempo de checkagem max_elapsed 28800000 # -- Tipo de Relatorio a ser gerado -# + topsites - Mostra o site, conexo e bytes # + sites_users - Mostra que usurios estavam acessando um site # + users_sites - Mostra sites acessados pelo usurio # + date_time - Mostra quantidade de bytes usados por dia e hora # + denied - Mostra todos os sites negados com URL completa # + auth_failures - Mostra falhas de autentificao report_typie topsites users_sites sites_users date_time denied auth_failures site_user_time_date # Exibir URLs completas? (No recomendado) long_url no
# Se alguma linha do access.log conter uma das strings, ser ignorada exclude_string /etc/sarg/exclude.strings # Mostrar mensagem de sucesso na gerao do relatrio no fim? show_successful_message no # Campos para a seao topusers topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Quantidade de usurios para listar no relatrio topsites topuser_num 0 O arquivo de configurao em si j explica as configuraes para voc alterar. Mas tambm h mais opes disponveis no programa, voc pode ver explicaes sobre estas novas configuraes no arquivo padro de configurao, que deixamos como "/etc/sarg/default.conf". Sobre a lngua utilizada, eu verifiquei um erro que aconteceu comigo, ento fiz uma soluo simples e rpida pra isso. O que acontece que mesmo mudando a varivel language, o programa fica gerando relatrios em Ingls. Se acontecer isso com voc, faa o seguinte: # cd /etc/sarg/languages # mv English English.old # ln -s Portuguese English
O que fiz aqui foi fazer um link simblico do English para o Portuguese, para que o programa pegue o contedo do arquivo Portuguese e no do English original. Repare que eu tambm fiz um backup do arquivo English, e lembre-se sempre disso: faa sempre backups! Tente nunca apagar algo. Existe tambm outro erro em relao isto, s que este mais srio. O arquivo de traduo "Portuguese" est incompleto, e por isso ele no gera os links para os relatrios de falhas de autenticao e de sites mais acessados. Para consertar isso, edite o arquivo "/etc/sarg/languages/Portuguese" e adicione as seguintes linhas no final do arquivo: "Negado" "Topsites" Assim a traduo no ir faltar, e os links estaro bonitinhos no lugar :) Mas agora falta rodar o programa para gerar o nosso relatrio! Vamos supor que hoje seja o dia 05/02/2003 (epa, essa a data em que estou escrevendo isso :P) e voc queira gerar o que 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 diretrio que voc configurou o "output" no seu servidor Web para ver o relatrio na ntegra. Mas e agora, teremos que ficar rodando este comando todo dia pra ficar gerando? No! :P Para isso que serve o crontab, vamos configur-lo para rodar este comando todo dia s 01:01 da manh.
Nota: Vrias distribuies j vem com um crontab dirio configurado. Ou seja, todos os arquivos executveis que estiverem dentro do diretrio "/etc/cron.daily" sero executados em um certo horrio (geralmente 4 da manh de todo dia). Se sua distribuio tiver este diretrio, crie o arquivo "/etc/cron.daily/sarg-dia". Caso ela no tenha, crie um arquivo chamado "/usr/local/bin/sarg-dia". Coloque o seguinte contedo 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", ento voc ter que configurar tambm o crontab para rodar este programa s 01:01 da manh como dissemos. Adicione a seguinte linha no arquivo "/etc/crontab": 01 1 * * * root /usr/local/bin/sarg-dia E no se esquea de dar permisso de executvel para o 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 no entendeu o script, ele primeiro pega a data de 1 dia antes e coloca no formato DIA/MES/ANO, como queramos para
passar pro SARG, ento ele chama e gera o relatrio do dia anterior... Legal no? Para cada dia, o SARG gera um diretrio diferente, especificado por data. Experimente gerar os relatrios e verificar no diretrio de sada (output), vai aparecer algo como: # ls 01Feb2003-01Feb2003 03Feb2003-03Feb2003 index.html 02Feb2003-02Feb2003 04Feb2003-04Feb2003 Pronto! Voc j pode ser um usurio feliz deste excelente gerador de relatrios :) Se voc entendeu direitinho este tutorial, ver que fcil fazer tambm relatrios semanais e mensais atravs dos scripts e crontab. Mas a vai de exerccio pra voc. Aviso: Os relatrios geram muitas pginas, e dependendo do relatrio, pode gastar muito e muito espao em disco, ento tome cuidado. Por exemplo, aqui o dia 03 de Fevereiro deu 103MB de relatrio. Mas ao compactar este diretrio para .tar.bz2, consegui reduzir para 1.2MB :) Faa os relatrios, compacte-os, v juntando e gravando em um CD, assim voc poder ter um histrico completo de quem acessou o que durante uma certa poca. Boa sorte! Montando estatsticas com o Webalizer 1. Introduo O Webalizer uma poderosa ferramenta escrita em C que analisa os logs do seu servidor de pginas Apache e gera pginas de estatsticas completa, incluindo os correspondetes grficos. Por ser escrita em C, possui uma velocidade fantstica, analisando milhares de
linhas de log em segundos. Retirado do seu site: "Em uma mquina Pentium 200, mais de 10 mil linhas podem ser processadas em 1 segundo, e um arquivo de 40MB sendo alisado em 15 segundos (mais de 150.000 linhas)." Ento d para perceber que ele bem rpido n? Alm disso, ele suporta diferentes tipos de arquivos de log, incluindo o formato Comum do Apache, o Formato Combinado, e suporte aos formatos de log do wu-ftpd (xferlog) e do squid. Est disponveis em diversas lnguas, incluindo o Portugus do Brasil. Alm de ser Software Livre, claro. S vemos vantagens neste programa, e para isso que criei este tutorial, para ajudar a quem precisar us-lo para montar estatsticas de seu servidor. 2. Download e Instalao O Download do cdigo-fonte do programa pode ser feito atravs do endereo: http://www.mrunix.net/webalizer/download.html (Cdigo-fonte e alguns binrios) http://www.megaloman.com/~hany/RPM/webalizer.htm l (Pacotes RPM) Ou se voc preferir, e sua distribuio suportar, utilize um "apt-get install webalizer" para instalar o pacote. Se voc pegou o cdigo-fonte e no um pacote j pronto (eu recomendo para organizao pegar um pacote RPM/DEB j pronto, ou utilizar o apt-get), ento execute os seguintes comandos para compilar o cdigo-fonte: ./configure make make install
Assim o programa ser instalado no seu sistema. Por padro, se voc no especificar as opes atravs do ./configure, ele vai instalar os arquivos dentro do diretrio /usr/local (os binrios no /usr/local/bin, configurao em /usr/local/etc, entre outros), ento eu recomendo voc especificar as opes de diretrio de instalao (--prefix) no ./configure. Para saber as opes disponveis para compilao, utilize o comando "./configure --help". 3. Configurao Agora teremos que configurar o webalizer, criando um arquivo de configurao. Para cada estatstica de site, necessrio um arquivo de configurao. Ento primeiro crie um diretrio chamado /etc/webalizer, onde voc colocar todos os arquivos de configurao necessrios. Colocarei aqui um exemplo de um arquivo de configurao comentado, para posterior anlise, chamado de principal.conf: # Arquivo exemplo de configurao do Webalizer # nome do usuario(xxx xxxxxx...),xxx@itotal.com.br # # Arquivo de Log do Apache, ou seja, onde fica o access_log do dominio LogFile /var/www/dominios/www.dominio.com.br/logs/access_l og # Tipo de arquivo de log, no nosso caso estamos usando o formato combinado # do Apache LogType clf
# Diretrio ser gerado as estatsticas, ou seja, onde vai se encontrar # a pgina onde ficaro todas as estatsticas para a visualizao atravs # de um navegador. OutputDir /var/www/dominios/stats.dominio.com.br/html/principa l # Modo incremental? Isso significa que ao invs de estar gerando apenas # as estatsticas do log atual do Apache, incrementar novas informaes # do log na pgina. Essa opo serve para aqueles que querem manter todas # as estatsticas e estar sempre resetando os logs para no deixar eles # absurdamente grandes. Bom para sites com muitos acessos. Incremental yes # Ttulo da pgina ReportTitle Estatsticas de acesso para: # Nome do host HostName www.dominio.com.br # Tipos a ser considerados como pginas pelo analizer; os que no tiverem # esta extenso, no sero consideradas pginas visualizadas pelos # navegadores. PageType htm*
PageType PageType
cgi php
# Psit! No faa 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 pgina principal. Aqui # mostra a quantidade de informaes para serem mostradas na pgina. TopSites 30 TopKSites 30 TopURLs 30 TopKURLs 30 TopReferrers 30 TopAgents 15 TopCountries 30 TopEntry 10 TopExit 10 TopSearch 20 TopUsers 20 # Gerar pgina com todas as entrys (contrario dos "Top"), ou seja, alm # da pgina principal, o webalizer tambm gera uma pgina separada para # cada tipo de acesso, com *todas* as informaes, e no apenas com as # "mais acessadas", ou coisas do tipo. AllSites yes AllURLs yes AllReferrers yes
AllAgents yes AllSearchStr yes AllUsers yes # Esconde imagens dos relatrios, ou seja, dispensa as imagens para que # elas no apaream no relatrio e no atrapalhem. Assim o relatrio no # gera "a pgina 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 identificao dos navegadores, para ser mostrado na # pgina de relatrios dos navegadores usados pelos visitantes. GroupAgent MSIE Microsoft Internet Explorer HideAgent MSIE GroupAgent Mozilla Netscape/Mozilla HideAgent Mozilla GroupAgent Lynx* Lynx HideAgent Lynx* # Tipos de mecanismos de busca, para saber que fora os mecanismos # de buscas que referenciaram a pgina. SearchEngine yahoo.com p= SearchEngine altavista.com q=
SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine SearchEngine
google.com q= eureka.com q= lycos.com query= hotbot.com MT= msn.com MT= infoseek.com qt= webcrawler searchText= excite search= netscape.com search= mamma.com query= alltheweb.com query= northernlight.com qr=
H tambm as tags HTMLBody e HTMLEnd, que atravs delas, voc pode criar "templates" para suas pginas de estatsticas. Este exemplo acima foi um exemplo bem prtico, completo e ao mesmo tempo simples. Ele no faz o uso de todas as opes disponveis no Webalizer, mas atende as necessidades bsicas da maioria dos administradores de pginas. Se voc quiser todas as opes, experimente ver o arquivo de exemplo que vem junto com o pacote do webalizer, no caso o arquivo webalizer.conf, localizado no diretrio de configurao do webalizer. 4. Rodando o webalizer Agora vamos gerar os relatrios a partir de nossa configurao anterior. Lembrando que o arquivo de configurao que criamos anteriormente /etc/webalizer/principal.conf: /usr/local/bin/webalizer -c /etc/webalizer/principal.conf (supondo que o executvel foi instalado no /usr/local/bin, pois pode ser /usr/bin tambm) O parmetro -c diz para usar um certo arquivo de configurao, e o que fizemos. Voc notar que o
programa extremamente rpido, e s assim que voc vai acreditar o quo ele rpido :) Ento verifique no diretrio /var/www/dominios/stats.dominio.com.br/html/principa l que os arquivos de estatsticas esto l, e que se voc acessar com um navegador, ver todas as estatsticas do seu site, com bons grficos e tima qualidade de informao. 5. Programando a gerao das estatsticas Convm lembrar que o webalizer s gera as estatsticas quando voc mandar, ou seja, ele tem que ficar rodando de tempos em tempos para gerar estatsticas atualizadas dos logs do Apache. Geralmente se gera as estatsticas uma ou duas vezes por dia, e para esse tipo de necessidade, usaremos o nosso 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 pelo usurio root s 12:01 e 00:01. 6. Finalizao E isso! Para provedores, seria bom criar arquivos de log separados para cada domnio virtual, ou diretrio, assim o webalizer poderia gerar estatsticas para cada um destes arquivos de log. Instalando o Webmin
O Webmin um gerenciador de sistema baseado numa interface web. Com este utilitrio voc pode administrar suas mquinas pela rede atravs de um navegador comum. Ele bem completo e tem mdulos para configurao de vrias e vrias coisas. uma mo e tanta para os administradores de sistema. Algumas das tarefas que voc pode fazer com o Webmin atualmente: Mudar senhas, configurar o crontab, configurar scripts de inicializao, backup, configurao do pam, quotas, gerncia de processos, pacotes, usurios 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, exportaes NFS, NIS, PPP, tneis SSL. Adminstrao de impressoras, gerenciadores de boot, cd-roms, raid, parties, lvm, clustering. Alm de outras coisas como shell via web, gerenciador de arquivos, mdulos perl, etc.
Ento d pra ver que o sistema bem completo n? E ele tambm amplamente usado. Vamos atravs deste tutorial saber como instalar e configurar de um modo bem prtico e direto. Download e Instalao O download do Webmin pode ser feito a partir do endereo:
Webmin - http://www.webmin.com.
A verso que utilizei neste tutorial foi a verso 1.060, em formato .tar.gz. Se voc usa uma distribuio que suporte o formato .rpm, seria melhor voc utilizar este tipo de formato j que compatvel com o resto do sistema. Mas aqui neste tutorial iremos a partir do cdigo-fonte: # tar zpfx webmin-1.060.tar.gz # mv webmin-1.060 /usr # cd /usr # ln -s webmin-1.060 webmin Como voc pde ver nos comandos acima, eu descompactei num diretrio qualquer o arquivo .tar.gz e depois movi o contedo para o diretrio "/usr". Voc escolhe este diretrio, e eu escolhei o "/usr". Depois eu apenas fiz um link simblico chamado "webmin" para o diretrio "webmin-1.060", para que quando eu atualizar, eu possa manter a verso sem ter que mudar os diretrios (apenas mudo os links para a verso que eu quero que esteja funcionando). Agora vamos executar o script de instalao do Webmin. Abaixo irei mostrar passo a passo cada uma das perguntas que voc6e dever responder, explicando elas. Os meus comentrios vo estar entre parnteses. 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 ...
*********************************************************************** 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 diretrio com todas as configuraes do Webmin. Estas configuraes vo estar sempre disponveis para todas as verses. Config file directory [/etc/webmin]: (enter) (Aqui vai estar o arquivo de log do Webmin, ou seja, o que os usurios do programa esto 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, ento ele vai necessitar do Perl. Aqui voc indica onde o Perl est. Geralmente ele est no /usr/bin/perl mesmo, ento no 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 Linux Operating system version: 7.3 *********************************************************************** Webmin uses its own password protected web server to provide access to the administration programs. The setup script needs to know : - What port to run the web server on. There must not be another
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 assim voc acesse http://maquina:porta e entre no Webmin. A porta 10000 um valor saudvel, ento vamos usar esse valor mesmo. Web server port (default 10000): No Login Name voc indica o nome do usurio administrador. Coloque um usurio 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 no possui a biblioteca do Perl para usar SSL. Neste tutorial no vamos usar SSL, ento isso no importa muito. Se voc tem essa biblioteca, escolha se voc deseja instalar o Webmin num servidor SSL (encriptado) ou no. Aqui no usaremos isso, apesar de ser bom :) The Perl SSLeay library is not installed. SSL not available. Iniciar o Webmin na hora do boot? Selecione no, vamos colocar uma linha de comando na inicializao para ficar menos complicado. Start Webmin at boot time (y/n): *********************************************************************** Creating web server config files.. ..done
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 web browser 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 o endereo que o Webmin disse
(http://seuhost.de.maquina:10000/) e colocando o usurio e senha de administrador que voc criou. Se voc quiser por acaso desinstalar o Webmin, utilize o comando: /etc/webmin/uninstall.sh Agora voc poder usufruir das facilidades que o Webmin traz para a administrao do seu sistema. No futuro estarei colocando aqui algumas dicas sobre o uso do Webmin. Bom proveito ;) Instalando o ZipSlack O Zipslack uma mini-distribuio gerada a partir do Slackware. Esta distribuio na verdade um minislackware, com 100MB de tamanho. ideal para quem quer testar o bsico do Linux, pois no requer nenhum reparticionamento no seu HD, e tem suporte a tudo como se fosse um Linux normal (e no ?). Para fazer essa faanha, o Zipslack se instala na sua partio DOS e usa um sistema de arquivos especial, chamado UMSDOS. Todos os principais programas que voc precisa esto inclusos nesta distribuio. Uma outra distribuio gerada a partir da idia do Zipslack o Bigslack. As instrues de instalao servem para estas duas distribuies, j que elas so quase a mesma coisa. A diferena entre estas duas distribuies que o Bigslack uma verso maior do Zipslack, ou seja, no tem apenas 100MB. Na verdade o Bigslack a distribuio Slackware, para se instalar numa partio DOS (justamente como o Zipslack, usando sistema de arquivos UMSDOS). A instalao bem simples e voc provavelmente no vai encontrar nenhum problema com ela. Primeiramente voc ter de obter os arquivos
compactados (em .zip) do Zipslack ou Bigslack. Estes arquivos contm exatamente todos os arquivos que estaro na sua distribuio. Voc pode pegar nos seguintes endereos: Zipslack: http://public.ftp.planetmirror.com/pub/slackware/slack ware-8.1/zipslack/zipslack.zip Bigslack: (no mais disponvel)
Os requerimentos mnimos para a instalao so bem poucos... Voc precisar de no mnimo um 386 com 16MB de RAM. Caso voc queira instalar numa mquina que tenha apenas 4MB de RAM, voc pode pegar um patch que cria um arquivo swap (de memria) e ajuda com a memria RAM. O patch est disponvel no endereo: http://public.ftp.planetmirror.com/pub/slackware/slack ware/zipslack/fourmeg.zip. Todos estes arquivos citados para download esto no FTP ibiblio.org, voc pode tambm (e recomendado) usar mirrors para este FTP. A pgina de mirrors est localizado no seguinte endereo: http://www.slackware.com/getslack/, que inclusive contm alguns mirrors aqui no Brasil. Para instalar o Zipslack voc precisar de no mnimo 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 descompactao ir criar um diretrio linux/ dentro desta sua raiz com todos os arquivos da distribuio. extremamente necessrio que voc coloque na raiz, para ficar C:\linux (por exemplo), seno no funciona direito.
O prximo passo para voc comear a usar bootar o seu sistema. A instalao j foi feita, ento 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. Bootando com o loadlin pode ser legal, mas voc ter de ir para o DOS toda vez que quer entrar no Linux. Com o bootdisk, voc coloca o disquete na inicializao e ele j boota. Vamos aprender aqui os dois mtodos... Para usar o loadlin (bem prtico), voc ter de editar o arquivo linux.bat que vai ser descompactado no diretrio 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 Linux est instalado, ento coloque a partio. Na maioria dos casos /dev/hda1 (quando instalado no C:). As linhas que contiverem um "rem" no comeo, so linhas comentadas e ignoradas pelo loadlin, ento seguindo o exemplo, ficaria assim: rem root=/dev/sda1 rem root=/dev/sda2 rem root=/dev/sdb1 root=/dev/hda1 rem root=/dev/hda2 rem 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, o linux.bat apenas um script que vai rodar o programa loadlin. Se voc quiser rodar manualmente o programa, voc deve apenas executar o comando:
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 esto 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 aps pegar estes dois arquivos, voc s tem de escrever a imagem com o rawrite. O comando para isto :
Inicie o computador e coloque o bootdisk para ele bootar. No prompt de boot voc ter de executar o comando "mount root=/dev/hda1 rw, e com isso j poder usar o seu sistema! Se voc instalou o Zipslack e est insatisfeito porque no vem muita coisa nele (no vem nem o ambiente grfico), voc pode instalar estes ambientes atravs do comando "installpkg pacote.tgz". Este pacote.tgz o formato dos pacotes do Slackware, ento voc pode peg-los da distribuio 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 exemplos de pacotes bons para pegar esto disponveis no endereo:
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 distribuio nativamente mesmo, pois o UMSDOS um pouco mais lento que o sistema de arquivos do Linux (ext2, ou ReiserFS). No perca a oportunidade de instalar vrios tipos de distribuies! ___________________________________________________________
Adobe create pdf De - Alexandre Zanca Bacich software Arco-Debian - Linux Email:alxbach@ibest.com.br