08/2009
SL E ESCOLHAS p.26 “Liberdade não é liberdade de escolha”, afirma Stallman O p.30
CÓDIG ÇÃO DE REUTILIZAexplica por que Maddog entar a roda não reinv
Linux Magazine
LHAS p.26 ade de SL E ESCO não é liberd an “Liberdadeafirma Stallm escolha”,
AMEAÇA
REUTILIZAÇÃO DE CÓDIGO p.30 Maddog explica por que não reinventar a roda
CRISE E O SL p.32 A crise econômica abre mais espaço para o SL
O SL p.32 CRISE E econômica abre SL A crise o para o mais espaç
# 57 Agosto 2009
NA
NUVEM EL, MAS DISPONÍV R SEMPRE E. DEFENDA-SE ISA ESTA TANT IÇO PREC AMEAÇA CONS p.33 SEU SERV UADAS IFICA UMA MAIS ADEQ ISSO SIGN TÉCNICAS rável? p.34 COM AS ra ou vulne k p.40 ão: segu kernel: Smac p.44 » Virtualizaç dentro do Jailkit » Proteção s com o em jaula » Usuários
DADESidentidades de IDENTIgere nciar ca. PA para mais práti Use o FreeI alizada e mutio forma centr p.61
REDES:
DRIVE NÇA: PEN SEGURA FADO p.66 er. Mantenha CRIPTOGRAfáceis de perd ma. s são Pen drive sob proteção máxi s seus dado
# 57
: TA EDIÇÃO BÉM NES p.46 VEJA TAMivos velhos: Ageduo PelicanHPC p.48 arqu » Adeus o fácil com HPC muit p.54 » Cluster Solaris no Open » Pacotes bugs p.68 o fim dos C# p.72 » Strace, aberto em » Padrão
A REVISTA DO PROFISSIONAL DE TI M.BR
AZINE.CO
Assinante
exemplar de
LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008
CEZAR TAURION p.34 O Código Aberto como incentivo à inovação
#44 07/08 R$ 13,90 € 7,50
00044
VIRTUALIZAÇÃO
NUVEM CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco
A REVISTA DO PROFISSIONAL DE TI
9 771806 942009
AMEAÇA NA NUVEM
AMEAÇA NA GOVERNANÇA COM
SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36
» O que dizem os profissionais certificados p.24
SMACK
» Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39
» Novidades do ITIL v3. p.44
SEGURANÇA: DNSSEC p.69
VEJA TAMBÉM NESTA EDIÇÃO:
Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?
» Relatórios do Squid com o SARG p.60
» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58
» Becape de bancos de dados com a Libferris p.46
SEU SERVIÇO PRECISA ESTAR SEMPRE DISPONÍVEL, MAS ISSO SIGNIFICA UMA AMEAÇA CONSTANTE. DEFENDA-SE COM AS TÉCNICAS MAIS ADEQUADAS p.33 REDES: IPV6 p.64
Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la
» LPI nível 2: Servidores NIS e DHCP p.52
WWW.LINUXMAGAZINE.COM.BR
JAIL SSH FREEIPA
» Virtualização: segura ou vulnerável? p.34 » Proteção dentro do kernel: Smack p.40 » Usuários em jaulas com o Jailkit p.44
CRIPTOGRAFIA
REDES: IDENTIDADES p.61
OPEN SOLARIS
SEGURANÇA: PEN DRIVE CRIPTOGRAFADO p.66
Use o FreeIPA para gerenciar identidades de forma centralizada e muito mais prática.
PELICANHPC
Pen drives são fáceis de perder. Mantenha seus dados sob proteção máxima.
VEJA TAMBÉM NESTA EDIÇÃO:
STRACE
» Adeus arquivos velhos: Agedu p.46 » Cluster HPC muito fácil com o PelicanHPC p.48 » Pacotes no OpenSolaris p.54 » Strace, o fim dos bugs p.68 » Padrão aberto em C# p.72
DOTGNU
WWW.LINUXMAGAZINE.COM.BR
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
venda proibida
NUXMAG
WWW.LI
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br Editor Pablo Hess phess@linuxmagazine.com.br Revisora Aileen Otomi Nakamura anakamura@linuxmagazine.com.br Editora de Arte Paola Viveiros pviveiros@linuxmagazine.com.br Coordenador de Comunicação Igor Daurício idauricio@linuxmagazine.com.br Centros de Competência Centro de Competência em Software: Oliver Frommel: ofrommel@linuxnewmedia.de Kristian Kißling: kkissling@linuxnewmedia.de Peter Kreussel: pkreussel@linuxnewmedia.de Marcel Hilzinger: hilzinger@linuxnewmedia.de Centro de Competência em Redes e Segurança: Achim Leitner: aleitner@linuxnewmedia.de Jens-Christoph B.: jbrendel@linuxnewmedia.de Hans-Georg Eßer: hgesser@linuxnewmedia.de Thomas Leichtenstern: tleichtenstern@linuxnewmedia.de Max Werner: mwerner@linuxnewmedia.de Markus Feilner: mfeilner@linuxnewmedia.de Nils Magnus: nmagnus@linuxnewmedia.de Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 4082 1300 Fax: +55 (0)11 4082 1302 Petra Jaser (Alemanha, Áustria e Suíça) anzeigen@linuxnewmedia.de Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (Estados Unidos) aphalen@linuxmagazine.com Hubert Wiest (Outros países) hwiest@linuxnewmedia.de Gerente de Circulação Claudio Bazzoli cbazzoli@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linux-magazin.ro – Romênia Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por consequências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, sejam fornecidos para publicação ou licenciamento a terceiros de forma mundial não-exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Av. Fagundes Filho, 134 Conj. 53 – Saúde 04304-000 – São Paulo – SP – Brasil Tel.: +55 (0)11 4082 1300 – Fax: +55 (0)11 4082 1302
EDITORIAL
O sistema da Web é livre
Expediente editorial
Prezados leitores, Imagine-se como executivo-chefe de uma empresa cuja receita, na maior parte, provém de anúncios dirigidos ao público que utiliza seus serviços de busca e email, ambos oferecidos sem custo aos usuários. Como fazer sua empresa continuar crescendo? Após roubar a cena em diversas áreas da Web em aproximadamente dez anos de existência, o Google fez muito. De tudo. Alterou fortemente as fontes de receita de diversas empresas, possibilitou a existência de várias outras, concorreu com quem não parecia concorrente a princípio e sobrepujou alguns gigantes de outrora. Em vários desses momentos, parecia que o rolo compressor do Google não tinha muitas direções novas a seguir. Mercados já tomados por monopólios e oligopólios não impediram a empresa de adentrá-los, concorrer e na maioria das vezes vencer. De posse de aproximadamente 80% do mercado de buscas na Internet e uma fatia considerável dos mercados de email e aplicativos web de colaboração, a empresa fundada por Larry Page e Sergey Brin se baseia, na maioria das vezes, em Software Livre e padrões abertos para criar seus produtos e serviços inovadores. Não podia ser diferente nessa nova empreitada: sistemas operacionais. Depois de entrar no espaço dos telefones celulares com o Android baseado no Linux, o prometido Google Chrome OS tem muito a acrescentar ao mercado de sistemas operacionais – ainda que isso signifique retirar funcionalidades do sistema. Há tempos prenuncia-se o “grande sistema operacional da Web”, numa época em que o sistema local será commoditizado e o navegador web fará a ponte entre o usuário e seus aplicativos. Próximo ou não, esse futuro torna-se apenas mais provável com o Chrome OS, baseado no kernel Linux e nas ferramentas GNU e otimizado para os aplicativos Web. Se a empresa que tem como mote “don’t be evil” segue ou não esse princípio, não nos cabe decidir. Porém, desde que ela continue promovendo e fazendo amplo uso de padrões abertos e Software Livre, ela não poderá tornar-se dona da Web – e isso interessa a todos nós. O futuro é, de fato, livre. n
Direitos Autorais e Marcas Registradas © 2004 - 2009: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: Parma Distribuída em todo o país pela Dinap S.A., Distribuidora Nacional de Publicações, São Paulo. Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3512 9460 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428
Impresso no Brasil
.
Pablo Hess Editor
3
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
ÍNDICE
CAPA Exposto, mas não escancarado
33
Se o seu servidor precisa ser acessado pela nuvem, é importante deixar bem estabelecido até onde os processos e usuários podem ir. Um dentro do outro
34
Atualmente, virtualização é a palavra da vez. Porém, do ponto de vista da segurança, existem alguns aspectos importantes a considerar. Pequeno por fora, seguro por dentro
40
Quando se trata de sistemas para controle obrigatório de acesso, o SELinux é muito complexo e o App Armor é limitado. Conheça o Smack, fácil e seguro. Enjaulado
44
Limitar o acesso ao SSH e ao SFTP com Chroot é bastante difícil. O Jailkit ajuda a regular melhor os direitos dos usuários.
4
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux Magazine 57 | ÍNDICE
COLUNAS Klaus Knopper
08
Charly Kühnast
10
Zack Brown
12
Augusto Campos
14
Alexandre Borges
16
Kurt Seifried
18
OpenSolaris, parte 4 O gerenciamento de pacotes no OpenSolaris é diferente daquele do Linux, mas isso não significa que seja difícil.
54
NOTÍCIAS Geral ➧ VirtualBox 3.0 com OpenGL 2.0
20
➧ Concurso de jogos ecológicos
REDES
➧ Concurso da IBM para soluções inovadoras
Identidades centralizadas O FreeIPA oferece gerenciamento integrado de identidade e grandes ideias para o futuro.
➧ OpenSUSE pode adotar KDE
CORPORATE Notícias ➧ Google Chrome OS, Microsoft e Yahoo
24
Entrevista Richard Stallman
26
Coluna: Jon “maddog” Hall
30
Coluna: Cezar Taurion
32
ANÁLISE Pente fino 46 O Agedu ajuda a limpar seu disco rígido identificando arquivos antigos. Libere espaço desperdiçado em vez de desperdiçar tempo.
61
SEGURANÇA Pen drive seguro Perder um pen drive é fácil demais. Proteja seus dados para evitar que caiam em mãos erradas.
66
PROGRAMAÇÃO Um olhar sobre as chamadas 68 Neste primeiro artigo, veja como começar a usar o Strace com dois programas “Hello World”. Mês que vem vamos analisar mais a fundo.
O padrão aberto do C# O DotGNU permite a escrita de programas no GNU/Linux sem depender de um fornecedor específico.
TUTORIAL Cluster facílimo Com o PelicanHPC, todo mundo pode ter um cluster de baixo custo para triturar números à vontade.
72
48
SERVIÇOS Editorial Emails Linux.local Eventos Preview
03 06 78 80 82
5
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
c.h ww .s x –w ro ne gje nja sa
CARTAS
Permissão de Escrita
u
Emails para o editor
Socorro com netbook ✉
Eu gostaria de instalar o Ubuntu Netbook Remix no meu novíssimo netbook Acer Aspire one D250 com XP e deixar de ser tão dependente do Windows. Segui as recomendações que circulam na web, que são: Baixar os arquivos: ubuntu-9.04-netbook-remix-i386.img e win32diskimager-RELEASE-0.2-r23-win32.zip; executar o arquivo Win32DiskImager.exe já com o pen drive conectado (eu uso outro computador para isso); gravar o arquivo img no pen drive. Neste ponto, aparece o seguinte erro: “Writing to a physical device can corrupt the device. Are you sure you want to continue?”. Meu pen drive funciona perfeitamente e também testei outros pen drives e outros computadores. Por favor resolvam esse mistério e parabéns pela revista, muito boa. Carlos Eduardo
Resposta
Carlos, obrigado pelos elogios. Aparentemente você está executando esse procedimento num sistema Windows, utilizando um software específico para gravação de discos USB (e pen drives). Portanto, não temos como afirmar com certeza o que está ocorrendo. Porém, interpretando a mensagem de erro enviada, ela simplesmente alerta o usuário para o fato de que gravar a imagem no dispositivo pode corromper o que já estiver gravado nele. Nesse caso, a gravidade é até menor do que deveria, pois gravar a imagem no dispositivo certamente vai corromper o que já estiver gravado no dispositivo. Como a mensagem pergunta se você deseja continuar, fique à vontade para responder “sim” caso você já tenha uma cópia de segurança dos dados contidos no pen drive, pois eles certamente serão perdidos. Suponho que após responder “sim” e o processo de gravação da imagem for completado, bastaria iniciar o netbook com o pen drive conectado para entrar no sistema agora instalado no pen drive. Uma outra possibilidade seria você iniciar seu desktop com um sistema Linux (um Live CD do Ubuntu ou qualquer outra distribuição, por exemplo) e utilizar o comando dd para gravar a imagem no pen drive da seguinte forma: dd if=/arquivo/com/a/imagem.img of=/dev/sdz``
Nesse caso, não se esqueça de substituir /dev/sdz pelo dispositivo com o qual o sistema identificou seu pen drive, e lembre-se de realizar esse procedimento com o pen drive desmontado. n 6 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Escreva para nós!
✉
Sempre queremos sua opinião sobre a Linux Magazine e nossos artigos. Envie seus emails para cartas@linuxmagazine.com.br e compartilhe suas dúvidas, opiniões, sugestões e críticas. Infelizmente, devido ao volume de emails, não podemos garantir que seu email seja publicado, mas é certo que ele será lido e analisado.
O servidor ideal para seu sistema open source. O servidor ideal para o futuro de sua empresa. VISÃO ALTERNATIVA SOBRE OPEN SOURCE Os sistemas open source são a alternativa de muitas empresas que buscam administrar o ambiente de TI com menor investimento, além da consolidação e virtualização para otimizar o uso dos recursos. Para atender a essas demandas de seu negócio, agora você tem o servidor HP ProLiant DL785 G5. Ele proporciona infraestrutura confiável para consolidar e virtualizar aplicações executadas em Linux RedHat® ou Suse® e Solaris10®. Atinge até 32 núcleos, fornece até 114 máquinas virtuais e é compatível com as tecnologias Xen® e VMware®, onde alcançou o mais alto desempenho em virtualização segundo o benchmark da VMark*. HP ProLiant DL785 G5. Entre alto desempenho e baixo custo para sua empresa, fique com os dois. Tecnologia para melhores resultados de negócios.
HP ProLiant DL785 • Até 8 processadores Quad-Core AMD Opteron®. • Até 512 GB de memória. • 11 slots de I/O PCI-e. • Até 16 drivers SAS hot plug.
Opteron 64
Para saber mais sobre o servidor ProLiant DL785, acesse www.hp.com.br/dl785 ou ligue para (11) 4689-2540 e mencione DL785. © 2009 Hewlett-Packard Development Company, L.P. AMD, the AMD Arrow logo, AMD Opteron, and combinations thereof, are trademarks of AMD. *Resultados do teste de 19/12/2008. Para mais detalhes, acesse: http://www.vmware.com/products/vmmark/results.html. © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Klaus
COLUNA
Pergunte ao Klaus! O professor Klaus responde as mais diversas dúvidas dos leitores.
RAID na placa-mãe
Tenho uma placa-mãe Asus com uma controladora JMicron e dois discos rígidos em RAID 0. Sempre que tento instalar o Debian, ele enxerga os discos separadamente. Já procurei nos fóruns – várias pessoas têm esse problema –, mas não consegui encontrar nenhuma resposta. Eu gostaria de saber se é possível instalar o Debian em placas-mãe com essa controladora ao usar RAID.
Resposta
Até onde consegui ver, sua controladora JMicron é uma controladora “SoftRAID”, que precisa de auxílio do sistema operacional na forma de um driver para unir múltiplos discos como se fossem um único, como no RAID 0. Portanto, você precisaria de um driver especializado para essa controladora (isto é, um módulo para o Linux) ou então deveria evitar usar a função de SoftRAID da controladora e adotar o modo de RAID por software embutido no kernel – e com suporte muito melhor. Uma controladora RAID verdadeira lidaria automaticamente com discos que fossem definidos como arranjo RAID pela configuração do firmware e da BIOS (independentemente do sistema operacional em uso), e os discos configurados desta forma sempre se comportariam como um único disco. Isso significa que você não pode instalar um sistema que use SoftRAID em paralelo (dual boot) com outro sistema que não seja compatível com esse recurso. Há grande risco de perda de dados caso você ignore este aviso. Se você quiser usar somente o GNU/Linux com essa controladora, pode usar o RAID por software do kernel Linux. Para isso, primeiro particione os dois discos de forma idêntica e em seguida una-os por meio do RAID
por software fornecido pelo programa de instalação da sua distribuição.
Domínio no Linux
Gostaria de saber se você pode me ajudar a configurar um domínio no Linux. Uso o Fedora Core 6 no servidor, com todos os pacotes de servidor instalados, e queria configurar um deles, mas estou com dificuldades.
Resposta
Não tenho certeza se você se refere a um domínio DNS (Domain Name System) ou a um domínio Windows. No caso do DNS, é preciso executar um servidor de nomes que agrupe os endereços IP dos computadores em um nome de domínio privado (como host1. meudominio.local, host2.meudominio.local etc.). Explicar como o DNS funciona definitivamente está além do escopo desta simples resposta. Essa explicação está disponível na Wikipédia, em http://pt.wikipedia.org/ wiki/Domain_Name_System. No caso de um domínio Windows, você precisará executar um servidor Samba (incluindo o componente de serviço de nomes NetBIOS), que define os mapeamentos entre endereços IP e um “nome de domínio” do Windows. O Samba é configurado por meio do arquivo de configuração /etc/samba/smb.conf. O serviço de rede Samba, tradicionalmente usado para compartilhar discos e impressoras, assim como dados de autenticação de usuários entre sistemas Linux e Windows, tem todos os links para informações relevantes em sua página, http://www.samba.org/. n Klaus Knopper é o criador do Knoppix e co-fundador do evento Linux Tag. Atualmente trabalha como professor, programador e consultor.
8
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Charly
COLUNA
Twitter para sysadmins O Twitter é moderno, divertido e de certa forma inútil. Até Charly o utiliza – mas no terminal, por questão de estilo.
E
u gosto de aplicações gráficas – na verdade, eu estaria perdido sem o Thunderbird –, mas por passar horas em máquinas sem o X11, ainda uso os bons e velhos aplicativos da linha de comando. Por exemplo, eu amo o cliente de email Mutt. O slrn para Usenet e o Irssi para o IRC são executados num pequeno servidor numa sessão do screen. Recentemente, adicionei mais um espécime ao meu zoológico: o TTYtter [1]. Como você pode adivinhar pelo nome, trata-se de um cliente do Twitter em modo texto. Esse script em Perl usa o curl ou o Lynx para se conectar à API do Twitter. O autor do TTYtter, Cameron Kaiser, evitou deliberadamente alguns módulos especiais do Perl como Net::Twitter, pois assim poderia usar o programa em sistemas que não oferecessem autorização para baixar módulos do CPAN. Eu normalmente inicio meu TTYtter com o seguinte comando:
em que este artigo foi escrito). A opção -ansi permite o uso de caracteres de controle extras – para suportar cores, por exemplo. A opção -wrap quebra a linha na marca dos 79 caracteres.
Estilo sysadmin
Depois de iniciado, o TTYtter exibe os últimos dez “tweets” e as duas últimas mensagens diretas. No prompt, posso escrever outro “tweet” e enviá-lo. Para usar qualquer uma das outras funções da API do Twitter, preciso executar comandos precedidos por uma barra (/), ao estilo do IRC. O comando /trends, por exemplo, exibe a lista dos tópicos atualmente mais discutidos. Para uma maior conveniência, o TTYtter também oferece uma lista de comandos [1]. Não é difícil controlar a API do Twitter diretamente com o curl. A linha curl ‐‐basic ‐‐user “Usuário:Senha” ‐‐data‐ascii “Blafasel” “http://twitter.com/statuses/update.json”
$ ttytter -vcheck -ansi -wrap -user=Username:Password
O primeiro parâmetro verifica se minha versão do TTYtter está atualizada (Kaiser ainda está aperfeiçoando o cliente; a versão 0.9.5 era a última no momento
envia o texto Blafasel para o meu Twitter. Na verdade, esse exemplo tem um uso bem importante. Por exemplo, posso atualizar meu twitter com mensagens enviadas pelo meu servidor, como mostra a figura 1. n
Mais informações [1] TTYtter: http://www.floodgap.com/software/ttytter/ [2] curl: http://curl.linux-mirror.org/ [3] Lynx: http://lynx.isc.org/
Figura 1 O VDR e o Asterisk atualizam moderadamente o Twitter com mensagens de status.
Charly Kühnast é administrador de sistemas Unix no datacenter Moers, perto do famoso rio Reno, na Alemanha. Lá ele cuida principalmente dos firewalls.
10
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Zack
COLUNA
Crônicas do kernel As novidades diversas vão desde um depurador interno no kernel até uma nova forma para escrita de drivers.
Status do depurador do kernel
Jason Wessel propôs unificar o KDB e o KGDB, essencialmente tornando o KDB uma interface para o KGDB. Ele tentou propor sua ideia da forma mais delicada possível, perguntando se os desenvolvedores do KDB ainda enxergariam algum valor num projeto como esse. Além disso, postou alguns patches para ilustrar o que tinha em mente. Por um lado, Maxim Levitsky e Louis Rilling se manifestaram afirmando que gostaram do KDB e que adorariam vê-lo no kernel. Christoph Hellwig também mostrou interesse pela ideia e acrescentou que tornar o KDB uma interface para o KGDB seria bom para ele. Martin Hicks também se empolgou com essa possibilidade. Ao menos nesse tópico, parece que o consenso foi de que ter um depurador nativo no kernel seria excelente, e incluir o KDB e o KGDB da forma sugerida por Jason também seria ótimo. Por outro lado, Linus Torvalds resistiu a incluir um depurador nativo no kernel, e certamente não vai gostar de uma nova interface antes de solucionar todas as suas objeções. Aproximadamente uma semana depois, Jason postou mais patches e Ingo Molnár ofereceu críticas relativamente invasivas, afirmando: “eu apoiei e ajudei na criação de um back-end de depuração e não considero uma interface completamente impossível. Mas ela precisaria atender a vários padrões exigentes, pois a abrangência de uma boa interface de depuração do kernel é ainda maior que a de um back-end. É um trabalho difícil”. Jason respondeu com uma tentativa de resolver algumas das objeções de Ingo, mas será necessário um grande esforço nesse sentido para incluir o código no kernel.
Armadilhas de drivers
Atul Mukker, da LSI Corp., anunciou sua intenção de dar a partida numa nova abordagem para criar drivers para controladoras RAID da LSI. A empresa deseja man-
ter o código genérico para vários sistemas operacionais, mantendo somente uma pequena porção específica para o Linux, outra para Mac e assim por diante, para acessar o núcleo do driver. Ele pediu quaisquer conselhos que a comunidade do kernel Linux pudesse fornecer. Jeff Garzik concordou que esse poderia ser um grande benefício para todos, se feito da forma correta. Mas disse que já foram cometidos alguns erros no passado, e que não deveriam ser repetidos: “no passado, quando os fornecedores de hardware criaram uma camada multi-SO para seus drivers, essa camada acabou prejudicando o desempenho, aumentando o tamanho do código, introduzindo falhas e reduzindo a portabilidade em geral”. Ele mostrou os drivers de rede da Intel como um exemplo semelhante que conseguiu evitar as maiores armadilhas. Atul ficou feliz com essa resposta, pois ela indicou ser possível fazer o que ele havia vislumbrado. Ele pediu outras sugestões, ao que Jeff sugeriu tornar o código modular, para manter o código de suporte ao hardware específico separado dos outros e separado do código específico do sistema operacional. “Isso pode não ser fácil”, afirmou Jeff; na verdade, ele considerou essa uma tarefa de engenharia de primeira ordem. E, como recomendação geral, sugeriu evitar o excesso de wrappers do pré-processador C e fazer bom uso dos tipos e enums nativos de C. Jeff também recomendou excluir do driver todo o código que puder ser generalizado e escrito de forma não específica aos drivers da LSI, para facilitar seu compartilhamento com outros projetos. Atul agradeceu a todos pela ajuda para iniciar esse projeto. n A lista de discussão Linux-kernel é o núcleo das atividades de desenvolvimento do kernel. Zack Brown consegue se perder nesse oceano de mensagens e extrair significado! Sua newsletter Kernel Traffic esteve em atividade de 1999 a 2005.
12
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
caixa.gov.br
A Solução Minuano é mais que uma alternativa para as reuniões da CAIXA. É inovação livre.
A Solução Minuano permite a transmissão de áudio e vídeo utilizando o software livre CAIXA, em qualidade 100% digital. Assim, foi possível reduzir as despesas com viagens dos empregados e aumentar a eficiência de reuniões e palestras. Outro benefício é a criação de um acervo de áudio e vídeo, onde o conteúdo gravado fica à disposição das unidades CAIXA de todo o Brasil. Na CAIXA, o software livre é uma realidade. E a excelência em tecnologia da informação, também.
SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios) 0800 726 2492 (para pessoas com deficiência auditiva) Ouvidoria: 0800 725 7474 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
O banco que acredita nas pessoas.
Coluna do Augusto
COLUNA
Definindo – a tempo – a regra do jogo Em projetos comunitários, é importante haver regras, mesmo que não sejam totalmente democráticas.
P
rojetos de software livre desenvolvidos de forma aberta por uma comunidade muitas vezes che gam a ser bem sucedidos em seus nichos sem jamais atingir um volume ou uma complexidade que justifique, sob o ponto de vista de seus criadores, assu mir uma personalidade jurídica própria. Baseados no trabalho voluntário e em recursos do ados ou cedidos pela comunidade, estes projetos nas cem, evoluem e atingem sua velocidade de cruzeiro em virtude do esforço de todos os envolvidos, cada um com seus próprios interesses e capacidades, como é comum em muitas outras atividades organizadas de forma espontânea. Mas como se tratam de empreendimentos coletivos cuja organização é difusa e cujos produtos são gerados e distribuídos virtualmente, muitas vezes os próprios participantes não percebem com clareza a quantidade de recursos de que a coletividade faz uso, e cuja dispo nibilidade é fator crítico para a sua continuidade, ou mesmo para sua imagem. E quando percebem, muitas vezes é porque a dis ponibilidade cessou bruscamente, ou foi ameaçada. A situação é comum e já ocorreu em muitos projetos, mas o exemplo mais recente é o da distribuição CentOS, popular recompilação fornecida sem custo a partir dos pacotes do Red Hat Enterprise Linux. Ocorre que no final de julho os participantes do Cent OS tiveram que recorrer a uma carta aberta, publicada em seu próprio site e reproduzida em muitas fontes, ao custo de bastante preocupação e possível incerteza em boa parte de seus usuários (reais e potenciais), porque todas as demais tentativas de entrar em contato com um de seus fundadores haviam falhado. A razão do interesse em entrar em contato com esse fundador não era nada singela: ele detinha sozinho o acesso administrativo ao domínio centos.org, ao recebi
mento das receitas de banners no site oficial, ao rece bimento das doações voluntárias efetuadas via Paypal pelos usuários, aos canais de IRC usados como suporte, entre outros recursos. Seu sumiço prolongado do con vívio com a equipe do projeto (bem como a ausência de repasse e prestação de contas sobre as receitas rece bidas) naturalmente causaram bastante preocupação, a ponto de levar a essa custosa medida. No momento em que escrevo esta coluna, o con tato já se concretizou. Consta que eles já chegaram a uma solução sobre várias das pendências, e acerta ram um cronograma para resolver as demais – feliz mente. Mas nem sempre a história termina assim e não são poucos os projetos que precisaram abandonar um nome, uma marca, logotipos, domínio, serviços de hospedagem e outros recursos em razão de pro blemas similares. Nem sempre faz sentido definir uma personalidade jurídica e todo o aparato formal necessário para que haja maior segurança quanto à propriedade e controle dos recursos de um projeto voluntário. Mas medidas míni mas para evitar a concentração excessiva de controle, que levem a potenciais pontos singulares de extrema vulnerabilidade, usualmente podem ser adotadas, in cluindo a distribuição dos recursos entre várias pessoas, a eleição ou seleção de um corpo diretivo, ou mesmo a definição objetiva de que os recursos do projeto têm um dono único. Afinal, mesmo regras pouco democráticas ou rela tivamente desequilibradas quanto a eleição e sucessão de lideranças são melhores (ou bem menos piores) do que a inexistência de regras, que tende a conduzir a situações desastrosas – e evitáveis. n Augusto César Campos é administrador de TI e desde 1996 mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.
14
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Alexandre
COLUNA
Processadores multiprocessados Após o fim da corrida dos gigahertz, como os processadores podem se tornar mais rápidos?
N
os últimos dois anos tem-se visto uma corrida por novas tecnologias que possibilitem maior performance das máquinas e dos sistemas operacionais. No caso dos processadores, esta busca por desempenho tem sido intensa. É fato que um dos principais fatores limitantes para o desenvolvimento de processadores é a dissipação térmica, que tem sido objeto de estudos e testes em busca de evoluções. Contudo, recentemente a indústria de processadores (Intel, AMD, Sun, IBM e Fujitsu) tem focado não mais apenas na velocidade (o que aumenta o efeito térmico) da CPU, mas no número de tarefas que esta pode realizar simultaneamente. Sim, estamos falando de algo conhecido: processadores multi-core e multi-thread. Não se engane: processadores multi-core multi-thread (diversas thread por núcleo) são melhores que processadores apenas multi-core (com apenas uma thread por núcleo), pois é possível fazer um escalonamento mais efi-
Figura 1 Ao executar múltiplas threads ao mesmo tempo, cada núcleo pode operar sobre uma delas enquanto a(s) outra(s) aguarda(m) a chegada dos dados.
ciente das tarefas nas threads, reduzindo assim os efeitos de latência no acesso à memória, como mostra a figura 1. Outro ponto importante a ressaltar é que cada núcleo individualmente não é tão poderoso quanto um processador inteiro. Entretanto, ao se executar aplicações que empregam programação multi-threaded (usando C e Java, por exemplo), os núcleos oferecem maior desempenho, superando em muito a geração anterior de processadores e, ainda, com uma vantagem adicional: são vitais para o uso de técnicas de virtualização em produtos como VMware, Xen, KVM, VirtualBox e xVM, entre outros. A nova tendência (irreversível, na minha opinião) de chips que seguem este conceito são os processadores Intel Xeon, que executa duas threads em cada núcleo, Fujitsu Sparc64 VII, com duas threads em cada um dos quatro núcleos, e UltraSparc T2+, com oito núcleos que comportam oito threads cada. Já existem até alguns modelos ainda mais rápidos, com 16, 12 ou 6 núcleos multi-thread. Um dos projetos mais espetaculares nessa área é o OpenSparc, um projeto de código aberto que permite a participação de qualquer profissional para a evolução dos processadores UltraSparc T1 (até oito núcleos com quatro threads cada) e UltraSparc T2 (até oito núcleos, com oito threads cada). Não apenas o código-fonte dos processadores pode ser baixado, como também as ferramentas de simulação, extensa documentação e várias outras aplicações. Faço votos de que, de uma forma ou de outra, o leitor possa contribuir e aprender muito com este projeto de hardware open source. Vale muito a pena estudar sempre, e mesmo que você não possa realizar qualquer contribuição, que seja útil para ampliar seus conhecimentos. n Alexandre Borges é Especialista Sênior em Solaris, OpenSolaris e Linux. Trabalha com desenvolvimento, segurança, administração e performance desses sistemas operacionais, atuando como instrutor e consultor. É pesquisador de novas tecnologias e assuntos relacionados ao kernel.
16
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Kurt
COLUNA
Como perder seu becape Quem precisa de invasores quando você tem administradores de sistemas? Aprenda por que copiar seus dados não significa que eles estão seguros.
N
o momento em que eu escrevo esta coluna, não posso deixar de refletir sobre a ironia de ter acabado de perder um mês inteiro de dados. Entrando no espírito deste artigo, eu estava lidando com alguns becapes no meu servidor web quando acidentalmente apaguei boa parte do diretório /var/ e todo o diretório /home/. Não teria sido tão mau se eu não tivesse feito becapes diários em /home/becape/. Ops.
Fazer é diferente de ter
Se os seus dados não estão disponíveis, assim como os sistemas que os processam e os disponibilizam, você tem um problema. No caso do meu servidor web, a perda do /var/ e do /home/ o deixou um tanto quanto inútil. Ele exibia erros 404 e nada mais. Para ter certeza de que os dados estão disponíveis, é preciso fazer becape. Parece simples? Na realidade, a maioria de nós (eu, inclusive) não entende o conceito corretamente, e embora tenhamos a intenção de fazer um becape, o que nós estamos de fato fazendo é apenas copiando os dados para algum outro lugar igualmente vulnerável a perdas. No meu caso, cometi o clássico erro de guardar meus becapes no mesmo sistema onde estavam os dados – e, para piorar a situação, eu os mantinha num diretório frequentemente acessado. Mas isso era o de menos. O servidor tinha apenas um disco rígido. Bastaria uma falha de disco para perder meus dados completamente, não importa quantos becapes eu tivesse feito. Mesmo que eu instalasse um segundo disco rígido na máquina, ainda seria fácil um evento qualquer (erro na controladora do disco, ataques, incêndios, inundações, curto-circuitos, furtos etc.) ocasionar a perda de mais de um disco.
Becapes legítimos?
Há três elementos principais que devem ser considerados ao fazer becapes legítimos. Número um: tenha certeza de que você fez becape dos dados. Tenho visto muitos
sistemas que salvam os dados em CDs, DVDs ou fitas de forma inadequada, o que resulta em dados irrecuperáveis. É preciso testar cada becape que se faz, mas se isso não for possível, faça no mínimo checagens ocasionais para ter certeza de que os dados podem ser recuperados. Número dois: mantenha becapes externos em regime somente-leitura (ou o mais próximo possível disso). Isto não significa necessariamente que eles têm de estar em um local físico diferente (embora esta seja sempre uma boa ideia), mas eles têm de estar separados, pelo menos o suficiente para que uma simples falha ou evento, como a formatação de um disco ou a perda de um servidor, não venha a acabar tanto com os dados quanto com os becapes. Um exemplo perfeito disso (além, naturalmente, da minha recente gafe) foi o site AVSIM Online, que perdeu 13 anos de dados em decorrência de um simples ataque. De acordo com relatos, o AVSIM Online tinha dois servidores que copiavam e faziam becape de seus dados mutuamente. Como já disse antes, muitos de nós estamos apenas copiando dados quando fazemos becapes, e não fazendo becapes reais. Neste caso, um invasor acessou os dois servidores, uma vez que eram basicamente idênticos, e eliminou todos os dados e as cópias realizadas em ambos os servidores. O AVSIM Online perdeu seu site, emails, arquivos, fóruns e muito mais, e muito provavelmente nunca obterá os dados de volta. No meu caso, tive sorte. Perdi apenas um mês de arquivos de log e dados coletados, então tudo o que tive de fazer foi esperar um mês para recolher novos dados – que bom que não eram os registros financeiros de alguém. Número três: tenha certeza de que você não vai apagar os arquivos de becape ou zerar o conteúdo do arquivo a menos que tenha 100% de certeza de que nunca precisará do arquivo novamente. Por este motivo, RAID não é uma solução de becape. Mesmo se você tiver vários discos rígidos em uma configuração RAID de modo que a perda de uma ou mesmo de várias unidades não cause
18
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Hospedagem IlImItada Uol Host. O UOL HOST acaba de lançar seus novos planos, sem limites de transferência de dados e sem limite de domínios, com preços a partir de R$ 7,90*. Além disso, suporte técnico, construtor de sites, e-mails e o mais moderno Painel de Controle para administração da sua hospedagem. Agora o céu é o limite para a audiência de seu site.
0800 723 6000 www.uol.com.br/host © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
*Nos primeiros 3 meses, depois R$14,90. Promoção válida até 30/08/2009.
Gabarito
apresentamos o novo lImIte dos planos de Hospedagem Uol Host.
COLUNA | Insegurança
a perda de dados, você ainda pode perdê-los por apagar (rm, mkfs etc.) ou alterar os arquivos (cat foo > bar).
As opções
Felizmente, quase todos os programas de becape maduros trabalham recebendo dados e armazenando-os em outro lugar – muitas vezes em um servidor dedicado, RAID, fita, DVD, e assim por diante. Existem algumas excelentes opções para Linux: o Amanda, que vem em quase todas as distribuições, bem como o backupPC e o Bacula, ambos abordados recentemente na Linux Magazine. Embora eu não cite seus detalhes aqui, basta dizer que são muito poderosos, têm várias opções de configuração e definitivamente fazem becape de seus dados se configurados corretamente. Uma opção rápida e “sujinha” é o Rsync.
Problemas do Rsync
O Rsync foi concebido para manter grandes quantidades de arquivos sincronizados entre diferentes sistemas ou diretórios. Por isso, ele faz um bom trabalho como ferramenta auxiliar de becape. Normalmente, eu faço becapes locais no sistema com tar e mysqldump, colocando os arquivos em um diretório com data (você verá por que mais adiante). Para usar o Rsync, basta criar o arquivo /etc/rsyncd.conf com o seguinte conteúdo: uid = becapes gid = becapes use chroot = yes [becapes] path = /becapes/ read only = yes
Em seguida, habilite-o no inetd ou xinetd. No cliente, basta uar um comando como rsync -a 10.1.2.3::becapes/* /meusbecapes/ para copiar o conteúdo do diretório /becapes/ do servidor 10.1.2.3 para o seu diretório /meusbecapes/ local. A fim de ter certeza de que nada de ruim aconteça, veja que eu não usei a opção --delete, que permitiria ao Rsync apagar os arquivos locais que não estão mais presentes no diretório remoto. O que poderia dar errado? Se um arquivo for removido no servidor, eu ainda terei uma cópia local, certo? Sim, mas se um arquivo for apagado por um invasor ou por um erro de script (por exemplo, cat 0 > arquivo), a cópia local também será apagada. Em outras palavras, diga adeus aos seus dados. Como a solução é fazer becapes incrementais, eu salvo meus becapes diários em um diretório que tem a data como nome e sincronizo somente esse diretório: rsync -a 10.1.2.3::becapes/`date +%Y-%m-%d` /meusbecapes/
Tudo que estiver entre acentos graves é executado pelo shell e o resultado é utilizado no comando. Isso significa que, na pior das hipóteses, eu posso perder o becape de hoje, mas não perderei os becapes antigos porque eles estarão em diretórios separados no meu servidor.
Onde estão seus becapes?
Então, agora você tem becapes diários, copiados do servidor para outra máquina mais segura. Ou não? Muitas vezes os programas automatizados falham, os endereços IP e os nomes das máquinas mudam, a configuração do Rsync é alterada, a partição de becapes do disco se enche, ou o que mais puder acontecer. A última peça do quebracabeça são as notificações automáticas para alertar sobre o sucesso ou a falha do becape. Os programas mencionados acima (Amanda, Bacula etc.) suportam o recurso de notificação, mas como implementar o recurso de notificação com o Rsync? A solução para isso é simples e elegante: basta adicionar a seguinte linha ao script de becape: ls ‐la /meusbecapes/`date +%Y-%m-%d` | mail -s “Relatório diário de becape” seu@email.com
Esse comando fará uma listagem do novo diretório de becape e redirecionará a saída para o comando mail, enviando um email com uma listagem de todos os arquivos e seus tamanhos. Na verdade, você pode ir ainda mais longe e listar arquivos dentro de arquivos com o comando tar -t, se achar melhor. Na maioria dos casos, o comando rsync com a opção -v (verbose) gera a seguinte saída: enviando lista de arquivos....OK 2009-05-27/ 2009-05-27/home.tar.bz2 2009-05-27/etc.tar.bz2
Note que se você executar comandos pelo crontab, a saída será automaticamente enviada por email para o usuário.
Teste dos becapes
Alguns diriam que esse passo final é o mais importante ao fazer becapes. Primeiro, é preciso descompactar seus becapes, inserir a fita no leitor ou fazer o que for preciso para restaurar os dados; caso contrário, como você poderia ter certeza de que eles funcionarão? Depois disso, você poderá dormir tranquilamente sabendo que as catástrofes naturais (ou administradores de sistema) não estragarão seu dia. n Kurt Seifried é consultor de segurança da informação especializado em redes e Linux desde 1996. Ele frequentemente se pergunta como a tecnologia funciona em grande escala mas costuma falhar em pequena escala.
20
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
➧ VirtualBox 3.0 NOTÍCIAS
com OpenGL 2.0
Na versão 3.0 do software de virtualização VirtualBox, a Sun demonstrou grandes avanços. Usuários finais provavelmente serão os maiores beneficiados pelo suporte a gráficos 3D: por exemplo, agora já é possível usar um ambiente gráfico 3D com o gerenciador de composição Compiz numa máquina virtual. A nova versão traz várias melhorias no suporte ao OpenGL 2.0. Quase mais interessante é um recurso para Windows: o software de virtualização agora suporta Direct3D
8 e 9. Com OpenGL e Direct3D, teoricamente é possível usar o Windows numa máquina virtual com qualquer jogo sofisticado. Isso livra da reinicialização os usuários GNU/Linux que precisavam entrar no Windows para jogar seus jogos – embora comentários de leitores na Linux Magazine Online afirmem que esse suporte ainda não se reflete em melhor usabilidade. Por último, o VirtualBox 3.0 corrige algumas falhas no suporte a 3D que envolvem renderização e vazamentos de memória. Usuários GNU/Linux também apreciarão o melhor suporte a USB que, segundo o changelog, permite o uso de webcams e outros dispositivos USB na máquina virtual. A inicialização por PXE também se tornou significativamente mais rápida e foram eliminados alguns erros de permissões de arquivos e hora de criação nos diretórios compartilhados. A versão mais recente do VirtualBox 3.0, no fechamento desta edição, é a 3.0.4. n
➧C oncurso de jogos ecológicos
Durante a sexta edição da Latinoware, Conferência Latino-Americana de Software Livre em Foz do Iguaçu, Paraná, será realizado um concurso de jogos ecológicos. Os biomas selecionados para o concurso e que deverão ser abordados nos jogos são Andes, Charco (Pantanal Matogrossense, no Brasil), Floresta Amazônica e Foz do Iguaçu. O concurso tem como principal propósito aumentar o acervo de jogos desenvolvidos em Software Livre. Esses jogos serão apresentados e compartilhados entre todos os participantes da Latinoware. Para participar do concurso, os interessados devem enviar seus trabalhos para o email jogoecologico@latinoware.org. Todos os trabalhos submetidos serão avaliados por um comitê, que selecionará os dez melhores jogos para ser apresentados durante a Latinoware e publicados nos anais do concurso. Os três melhores trabalhos também serão premiados. Caso a linguagem de desenvolvimento utilizada para o jogo seja Lua, desenvolvida originalmente no Brasil e atualmente uma das mais usadas no mercado de jogos, haverá um acréscimo de 10% na pontuação final. A participação é gratuita. n
➧C oncurso da IBM para soluções inovadoras A IBM abriu, com apoio da Linux Magazine, as inscrições para seu concurso cultural “Soluções Inovadoras para um Planeta Mais Inteligente”. Com o objetivo de “[criar] soluções tecnológicas que contribuam para um mundo mais eficiente e inteligente”, a equipe vencedora exporá a solução durante três meses no IBM Innovation Center em São Paulo, SP, terá acesso a servidores xSeries e ajuda da Big Blue nos planos de negócios e estratégia de entrada no mercado, além de assinaturas impressas de um ano da Linux Magazine. O prazo de inscrição vai de 1º a 30 de agosto. n
➧O penSUSE pode adotar KDE
O ambiente desktop Gnome atualmente é o padrão nas três distribuições GNU/Linux mais populares: Ubuntu, Fedora e openSUSE. Esse foi um dos motivos expostos pela equipe do openSUSE para propor, no openFATE (openSUSE feature tracking), que a distribuição adote como padrão o “concorrente” KDE. Entre os comentários feitos na página da proposta havia muitos elogios à ideia. Os demais motivos para a sugestão incluem a diferenciação da distribuição frente a seus principais concorrentes (Fedora e Ubuntu) e a eliminação de um ponto de dúvida para usuários iniciantes – quem instala o openSUSE pela primeira vez se defronta com a escolha entre os ambientes KDE e Gnome durante a instalação, mesmo que jamais tenha visto qualquer um deles. n 22
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE
➧ Google Chrome OS,
Microsoft e Yahoo
Finalmente os rumores se confirmaram: conforme especulado amplamente durante a primeira semana de julho, o Google finalmente anunciou o lançamento de seu sistema operacional, o Chrome OS – baseado em Linux e, claro, Software Livre. A surpresa não parou por aí: a gigante das buscas também lançou sua própria versão do NX, o Neatx, sistema de código aberto para serviços de terminal. Com isso, a empresa entra de vez em curso de colisão frontal com a Microsoft. “Suponho que veremos laptops baseados em Linux utilizando como fundamento a plataforma Android, não apenas celulares. Vamos enfrentar uma concorrência sem precedentes do Google no segmento de sistemas operacionais para desktop”, declarara Steve Ballmer, CEO da Microsoft, certo tempo antes. No blog oficial do Google, Sundar Pichar, vice-presidente de Gerenciamento de Produtos, e Linus Upson, Diretor de Engenharia, anunciaram o desenvolvimento de um sistema operacional próprio. Segundo a empresa, o Chrome OS deverá considerar as necessidades de um ambiente muticonectado, em que a Internet faz parte do dia a dia do usuário e deverá consumir o mínimo de recursos de hardware, além de ser extremamente amigável, rápido, seguro e de fácil operação. O objetivo da empresa é que sua inicialização ocorra em poucos segundos. O sistema deverá debutar no mercado em meados de 2010, equipando em um primeiro momento netbooks com processadores x86 e ARM – desktops comuns deverão vir mais tarde – e seu código-fonte deverá ser liberado já em 2009. Da mesma forma que o Android, o Google OS terá como base um kernel Linux. A interface gráfica do sistema não
deverá usar o X11: a empresa utilizará um novo gerenciador de janelas com menos funcionalidades e menor consumo de recursos. A Internet deverá ser a plataforma de desenvolvimento primária do Chrome OS, no qual aplicativos web funcionarão de modo transparente.
Neatx
O que provavelmente foi uma surpresa para a concorrente Microsoft foi a entrada do Google também no terreno dos serviços de terminal. O Neatx, uma customização escrita em Python do código-fonte do FreeNX, desenvolvido pela italiana NoMachine, já está disponível para download. Licenciado sob a GPL, o Neatx foi desenvolvido para uso interno pelo Google, e finalmente liberado em julho. A médio prazo, o Neatx deverá exibir – “sem engasgos” – interfaces gráficas de sistemas virtualizados por meio de conexões de alta latência, como é o caso de conexões via celular. Existem vários projetos de servidores de terminal que usam como base a poderosa tecnologia NX, cujas bibliotecas foram liberadas sob a GPL em 2003. Ela permite, por exemplo, abrir sessões de ambientes gráficos remotos por meio de conexões com largura de banda entre 5 e 10 kbps.
Mercado
Os dois anúncios do Google apontam para um futuro superconectado, em que a Internet possa estar cada vez mais onipresente, independentemente da qualidade da conexão disponível. O uso de Software Livre é, em resumo, o motor de todas essas inovações. Fica claro que está cada vez mais difícil para a Microsoft permanecer indiferente às vantagens que o modelo de desenvolvimento do Software Livre confere à gigante das buscas.
MS e Yahoo respondem
Em resposta ao anúncio, no final de julho o Yahoo finalmente cedeu à pressão da Microsoft para uma parceria profunda, que já resultou na assimilação de 400 funcionários da empresa de Jerry Yang pela de Steve Ballmer. Com o acordo, a Microsoft passa a se responsabilizar pelas buscas – com seu novo mecanismo Bing –, enquanto a Yahoo responde pelas vendas de publicidade. O acordo é válido por dez anos, mas a contratação de funcionários e as ofertas passadas de compra do Yahoo pela Microsoft sugerem tratar-se de uma estratégia de aquisição de médio a longo prazo. n
24
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Keynote SpeakerS confirmados no Futurecom 2009
Antonio Carlos Valente da Silva
JoÃo Cox
Roberto Lima
Zeinal Bava
Filippo Maria Renga
Len Lauer
Jean-Pierre Bienaimé
Futurecom, o evento que Reúne as Forças de Mercado.
Promoção e Organização:
andre.veiga@provisuale.com.br nalzira.muniz@provisuale.com.br (41) 3314-3200
Futurecom, networking o ano inteiro. Participe do Grupo Futurecom no
saiba mais:
www.futurecom.com.br © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Entrevista com Richard Stallman, presidente da Free Software Foundation
CORPORATE
Stallman e a liberdade de todos Richard M. Stallman é um guerreiro da liberdade. Não apenas de sua própria, mas também da sua e de todas as pessoas. por Pablo Hess
E
Gisle Hannemyr CC ShareAlike 3.0
m sua passagem pelo Brasil, Richard Stallman concedeu à Linux Magazine uma agradável entrevista. Foi uma rara oportunidade de conversar cara a cara com o nem sempre palatável mestre maior do Software Livre, criador da GNU GPL e do conceito de Copyleft, autor do emacs e detentor de
tantas outras qualificações, conhecido pelas respostas incisivas e correções a entrevistadores que escorregam na diferenciação dos termos “Free Software” e “Open Source” ou que se esquecem de prefixar o termo “GNU” ao se referirem ao sistema operacional GNU/Linux. Stallman falou à Linux Magazine sobre SCO, Sun, Oracle, a liberdade de software e o conflito com aqueles que desejam subverter o significado de “Free Software” (Software Livre), usando em seu lugar o termo “Open Source” (Código Aberto) – além de críticas à Microsoft e ao software proprietário como um todo, é claro. Linux Magazine» Tivemos no Brasil recentemente o programa “PC Para Todos”, que vendeu aproximadamente 3 milhões de computadores equipados com Software Livre, mas que também continham softwares não livres na forma de drivers binários no kernel Linux. Boa parte desses computadores receberam cópias não autorizadas de sistemas Windows. Você não acha justificável esse uso de softwares não livres, pois ajuda na transição de um mundo primordialmente proprietário para o objetivo completamente livre que você propõe? Richard M. Stallman» Uma ideia seria vender computadores que não fossem compatíveis com o Windows.
LM» Mas isso restringiria a liberdade
de escolha dos compradores. RMS» Liberdade não é liberdade de escolha. Ter a opção de se acorrentar reduz sua liberdade. É simples: engana-se quem identifica liberdade como liberdade de escolha, porque a liberdade de se permitir acorrentar não aumenta a sua liberdade – provavelmente a diminui. Este argumento está sobre uma superfície que não existe. Veja bem, se o hardware tivesse sido escolhido com cuidado, não haveria necessidade desses drivers proprietários. Eles poderiam ter dito: “Queremos um computador que funcione perfeitamente com Software Livre. Quem quer construí-lo para nós?”. Com essa quantidade (3 milhões), eles teriam uma ótima oportunidade de resolver esse problema, caso tivessem se esforçado. Poderiam até ter dito: “Queremos comprar esses computadores (3 milhões) de quem também for vendê-los para o público em geral”. Quem quer vendê-los? LM» Agora que a SCO parou de
“espernear”, quem você considera o maior inimigo da liberdade? Quem faz propaganda ativa contra o Software Livre e pró-software proprietário? RMS» Eu nunca achei que a SCO representasse grande perigo. Com essa definição de inimigo, creio que seja
26
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Free Software Foundation | CORPORATE
a Microsoft. Mas isso não significa que o nosso maior problema seja a Microsoft. O maior problema são as patentes de software, que não estão ligadas a nenhuma empresa em particular. Existem muitas empresas que nos apóiam de várias formas, mas são favoráveis às patentes de software. A IBM, por exemplo, tem ações que nos ajudam e outras que nos prejudicam. Ela quer que as patentes continuem existindo e faz lobby a favor delas. LM» Mas a IBM faz parte da “Open
Invention Network”, cuida para que o Software Livre não seja atacado por detentores de patentes. Ela compra patentes para usá-las em defesa do Software Livre. RMS» Sim, mas sua eficácia é limitada. As patentes não permitem defenderse dos “patent trolls”. Ninguém está invulnerável aos “patent trolls”, porque eles próprios não fazem nada.
LM» A única defesa contra ataques
de patentes é o contra-ataque, então? RMS» Sim. Quando uma empresa é atacada por violação de patentes, o máximo que ela pode fazer é provar que não infringe essas patentes. LM» E se ela não conseguir provar
que não infringiu as patentes... RMS» Só lhe resta contra-atacar. Mas isso não funciona contra os trolls, porque eles são como fantasmas: não há um alvo a mirar. No caso do processo contra a Tomtom, a OIN não conseguiu ajudar muito. Os desenvolvedores de software precisam ter simplesmente a possibilidade de escrever código e compartilhá-lo – ou seja, o fim das patentes. LM» O que você acha do sistema da
Red Hat para comercialização de Software Livre? Ela distribui gratuitamente apenas o código-fonte
de todos os pacotes que compõem sua distribuição GNU/Linux – é isso que possibilita a existência de distribuições como CentOS, por exemplo. Existe alguma outra grande empresa atualmente que unicamente com Software Livre e mantenha esse comportamento de acordo com a GPL? RMS» Eu não acompanho esse assunto. Mas não existe qualquer obrigação ética em distribuir programas GPL em sua forma binária. Esse modelo parece bom. Mas não conheço nada sobre a distribuição GNU/Linux comercial da Red Hat, apenas sobre o Fedora, e sei que ele chega perto de ser completamente livre – exceto pelos blobs binários no kernel Linux que eles distribuem. Não posso concordar com uma distribuição GNU/ Linux com blobs binários. LM» O Samba é um projeto 100%
GPLv3 atualmente. Isso significa
Complete
a sua coleção
O objetivo da coleção é trazer conhecimento confiável e de alto nível sempre com enfoque prático e voltado para a utilização do sistema Linux e de outras tecnologias livres.
Mais informações Site: Linux Magazine #57 | Agosto de 2009 www.linuxmagazine.com.br Tel: 11 4082-1300
27 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE | Free Software Foundation
que a Novell não pode distribuir esse código por causa do acordo com a Microsoft? RMS» Acho que é GPLv3 ou posterior. Essa distinção é importante. Essa é uma pergunta complicada, para qual não tenho a resposta. Ouvi falar que, do jeito como a GPLv3 foi criada, se a Novell distribuir o Samba, a Microsoft acabaria tendo que dar uma patente para todas as pessoas. Para saber com certeza, é preciso conhecer detalhes complexos do acordo MS-Novell. Porém, se a Novell começasse a distribuir um software GPLv3 antes do acordo, a Microsoft seria obrigada a ceder uma patente de software. Mas eu não sei o que aconteceu no fim das contas.
LM» Se o Windows 7 fosse lançado
sob a GPL, você o usaria? RMS» Não sei se o usaria, mas eu diria que ele é eticamente adequado. Usá-lo ou não usá-lo caberia às preferências de cada pessoa. Eu não desenvolvi o GNU para ter reconhecimento como um grande programador, mas para que todos pudéssemos viver em liberdade. A liberdade é o objetivo, é o que importa. Se um dia a Microsoft respeitar nossa liberdade, teremos vencido. Não me importa se forem usar o sistema que eu criei ou o de qualquer outra pessoa ou empresa. Provavelmente eu não o usaria, porque prefiro a linha de comando à interface gráfica, mas isso é questão de preferência – não é importante.
Liberdade não é liberdade de escolha. Ter a opção de se acorrentar reduz sua liberdade. LM» Qual a relação da FSF com
o Software Freedom Law Center? RMS» A FSF não costuma precisar de um advogado para aplicar a GPL. Só recentemente precisamos disso pela primeira vez. Acho que não precisamos conversar toda semana, mas apenas quando precisamos de um advogado. Mas sei que os pequenos detalhes da GPLv3 que a “fazem funcionar” são obra de Eben Moglen, responsável pelo SFCL. Ele descobriu alguns aspectos do acordo MS-Novell e teve ideias de como voltálo contra as duas empresas. É por isso que a GPLv3 não diz simplesmente “a Novell não pode distribuir o Samba”. O objetivo dessas artimanhas não era prejudicar a Microsoft, mas impedi-la de nos prejudicar caso a Novell distribuísse qualquer um desses softwares.
LM» Como anda o desenvolvimento
do kernel Hurd do projeto GNU? RMS» O progresso ainda está lento. Há poucos voluntários trabalhando nele e temos alguns problemas difíceis no design, dos quais eu e os desenvolvedores não estávamos cientes até aproximadamente cinco ou seis anos atrás. Por exemplo, se for criado um tipo errado de link, pode-se acabar apagando um diretório inteiro involuntariamente e sem aviso. Infelizmente o Hurd não está utilizável neste momento e eu não sou um dos desenvolvedores, então não faz sentido eu utilizá-lo. LM» Os usuários dos sistemas BSD
costumam afirmar que “quem usa Linux o faz porque odeia a Micro-
soft; quem usa BSD o faz porque gosta do Unix”. Qual a sua opinião sobre isso? RMS» Ambas parecem simplificações exageradas. Além de chamar equivocadamente o sistema de Linux em vez de GNU/Linux, posso dizer que eu não odeio a Microsoft – eu odeio software proprietário, e a Microsoft por acaso produz esse tipo de software. Mas lembre-se: quando eu comecei a desenvolver o GNU – e o anunciei em 1983 –, a Microsoft fez um sistema operacional de brinquedo para um computador também de brinquedo. Eu não estava pensando de forma alguma na Microsoft. Ela não tinha qualquer importância. Eu uso GNU/Linux e jamais fui usuário do Windows ou de softwares Microsoft. Mas quero viver em liberdade, então iniciei um projeto para permitir isso. A existência ou não da Microsoft era irrelevante, não havia qualquer importância. A importância da Microsoft vem do fato de ela ter muito dinheiro e tanto se esforçar para nos impedir – nada além disso. LM» Outra citação frequentemente
associada ao Software Livre é a de Gandhi: “Primeiro, eles te ignoram/ Depois riem de ti/Depois te combatem/Depois você vence”. Isso faz sentido para você? RMS» Sim, chegamos ao ponto em que eles estão combatendo o Software Livre. LM» Então estamos prestes a vencer? RMS» Talvez, mas nem todo mundo
ganha. É uma luta que, para ganhar, precisamos de muito apoio. Isso significa não apenas muitas pessoas usando ou desenvolvendo Software Livre, mas muitas pessoas afirmando: “eu quero minha liberdade. Não ouse pedir que eu use um software proprietário, pois não o farei”. n
28
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE
Coluna do maddog
Reutilização Muitas outras pessoas já estiveram no seu lugar.
E
m 1977, fui trabalhar na Bell Laboratories em North Andover, Massachusetts, quando tive meu primeiro contato com um sistema Unix. Eu já tinha ouvido falar do Unix bem antes disso, mas, apesar de já ter trabalhado com vários sistemas operacionais, eu jamais havia visto o Unix. Minha entrevista na Bell Labs foi para me tornar um “administrador de sistemas”. Beatrice (“B”) Fink, que seria minha supervisora, queria que eu fosse o administrador de sistemas de um sistema CDC Cyber. Por mais fascinante que fosse aquele sistema, eu queria ser um administrador de sistemas Unix. A Bell havia desenvolvido o Unix e eu sabia que podia encontrar o que quisesse olhando o código-fonte. Além disso, o Unix rodava nos sistemas PDP-11 e VAX da Digital Equipment Corporation (DEC) e havia sido desenvolvido majoritariamente em equipamentos DEC que eu apreciava. Na época, eu não sabia nada sobre equipamentos CDC e não via muito futuro em aprender sobre o Cyber. A “B” era inteligente o suficiente para saber que era uma batalha perdida tentar me colocar junto com o Cyber, e alguns dias depois eu fui contratado para administrar os dois sistemas Unix do laboratório. Até aquela época, eu havia trabalhado com sistemas operacionais que tinham, talvez, dois ou três níveis na estrutura de diretórios. Os programas geralmente eram colocados em “catálogos”, e os “interpretadores de comandos” – se houvesse – nem chegavam perto da sofisticação do Unix. Felizmente, pude contar com dois mentores: Bob Wessling e Tom Merrick, engenheiros que foram “convocados” para ser administradores de sistemas Unix. Eles calmamente me mostraram todo o Unix até eu começar a entendê-lo. Por isso, mesmo muitos anos depois, eu tinha simpatia e paciência com os “novatos” que se mostravam esforçados e interessados em aprender. Certa noite, eu estava sozinho com o sistema. Nessa época, quando eu já tinha aprendido bastante shell script
para me tornar perigoso, estava tentando pegar um arquivo e apagar algumas de suas colunas para usar como argumentos do script. Muito tempo se passou e eu ainda não estava conseguindo avançar. Então pensei que apesar de não saber se havia algum comando do Unix que pudesse fazer o que eu precisava, eu estava disposto a apostar que sim. Então, em vez de continuar meus experimentos infrutíferos, fui olhar a seção 1 do manual do Unix dedicado aos comandos de usuário. Lá, depois de percorrer menos de um décimo do manual, encontrei o comando cut(1), que fazia exatamente o que eu precisava e me permitia terminar meu script em poucos minutos. Depois desse episódio, passei a dedicar um dia por trimestre para ler as primeiras seções do manual, relembrando os comandos, as bibliotecas e as chamadas de sistemas para saber quais recursos estavam disponíveis. Trinta e dois anos depois, estava conversando com um amigo sobre um toolkit gráfico. Um amigo dele que fazia programação “pesada” usando esse toolkit estava reclamando da falta de um dado recurso, e descobriu que ele estava planejado para a próxima versão ou até já estava presente – ele apenas não sabia. O recurso havia sido incluído porque alguém mais tinha as mesmas necessidades que ele, e então escreveu o código; igual ao que eu vivi em 1977. O SourceForge tem mais de 230.000 projetos de software e mais de 2 milhões de usuários registrados. Conforme o Software Livre continua crescendo, esses usuários acrescentam recursos, livre para ser usado e reutilizado por outros. Da próxima vez que você se debater com um problema, talvez valha a pena já começar procurando a solução: talvez você encontre um colega secreto que já esteve nesse ponto antes. n Jon ‘maddog’ Hall é presidente da Linux International, instituição internacional dedicada a promover o Linux e o Software Livre. Maddog viaja o mundo ministrando palestras e debatendo com decisores sobre o uso do Software Livre em âmbito tanto corporativo quanto comunitário.
30
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Coluna do Taurion
CORPORATE
A crise e as mudanças na tecnologia Nesse momento de crise econômica, o Open Source tem tudo para avançar ainda mais.
E
stamos vivendo uma crise econômica que gera incertezas e pressões por redução de custos, obrigando muitas empresas a repensar suas estratégias de aquisição de tecnologias. E uma das mudanças mais visíveis será, provavelmente, um maior impulso na adoção de softwares mais econômicos. Open Source e modelos SaaS aparecerão com destaque neste contexto. Portanto, nada mais natural que debatermos o cenário das suítes de escritório, que consomem uma significativa parcela do orçamento de todas as organizações. O cenário atual é bem diferente de alguns anos atrás, quando não havia alternativas viáveis ao pacote Office da Microsoft. Embora o Microsoft Office seja atualmente quase um monopólio, as novas alternativas abrem espaço para as empresas reverem sua dependência em relação a essa suíte e de quebra reduzirem seus gastos com licenças. O OpenOffice.org, por exemplo, uma solução Open Source, já alcançou a marca dos quase 150 milhões de downloads. E provavelmente este número subestima a base instalada. É muito difícil medir com precisão o uso de um software Open Source. Podemos contabilizar os downloads registrados a partir de um determinado site associado ao software em questão. Mas, a partir daí, como é perfeitamente possivel e até mesmo incentivada sua livre distribuição, fica difícil contabilizar as inúmeras outras cópias que circularão pela Web. Ainda existe muito receio de se mudar do MS Office para outra alternativa, mais barata e que reduza a dependência de um único fornecedor. Mas, com várias empresas adotando suítes alternativas, este receio vai sendo minimizado. Outra questão é que muitas vezes, ao comparar as funcionalidades do Office com as das alternativas, ele apresenta, à primeira vista, funcionalidades que os demais produtos ainda não implementaram. A questão chave é “até que ponto estas funcionalidades são realmente necessárias para o trabalho dos
funcionários?”. Se analisarmos como um funcionário típico trabalha e quais funções das suítes de escritório ele realmente utiliza, certamente veremos que são pouquíssimas as funcionalidades exclusivas do Office que não podem ser substituídas. Com a crescente pressão por redução de custos, determinadas funcionalidades passarão a ser vistas apenas como um luxo desnecessário e não mais serão usadas como empecilhos nos processos de substituição de suítes. Também temos que pensar que os funcionários das empresas usam a mesma suíte no escritório e em casa. Em casa, o apelo de uma suíte mais barata e, por que não, gratuita, é muito interessante. Além disso, qualquer empresa comprometida com valores éticos não vai querer que seus funcionários usem cópias piratas em suas casas. À medida que o Office deixa de ser importante para uma empresa, reduz-se a necessidade do Windows. Os netbooks estão cada vez mais sendo entregues com Linux. Cada vez mais vemos o navegador web como interface padrão, reduzindo a influência do sistema operacional. O anúncio do Chrome OS, sistema operacional Open Source baseado no kernel Linux, pelo Google é um claro sinal deste movimento. Estamos diante de novos tempos. A crise econômica vai trazer mudanças significativas na maneira de se encarar os gastos com tecnologia. E certamente os velhos hábitos estabelecidos, de se renovar sem maiores estudos de retorno sobre investimento, as licenças da dobradinha Office/Windows, serão colocados em cheque. Os CFOs vão começar a perguntar aos CIOs por que as novas alternativas não estão sendo avaliadas. n Cezar Taurion (ctaurion@br.ibm.com) é gerente de novas tecnologias aplicadas da IBM Brasil e editor do primeiro blog da América Latina do Portal de Tecnologia da IBM developerWorks. Seu blog está disponível em http://www-03.ibm.com/developerworks/blogs/page/ctaurion.
32
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Mantenha seus servidores seguros
CAPA
Exposto, mas não escancarado Se o seu servidor precisa ser acessado pela nuvem, é importante deixar bem estabelecido até onde os processos e usuários podem ir. por Pablo Hess
U
ma máquina que oferece serviços na nuvem pode dispor das tecnologias mais avançadas. No entanto, algumas dessas tecnologias não garantem qualquer grau de segurança. Muito pelo contrário, algumas delas representam motivos de grande preocupação para o administrador.
Por exemplo, a virtualização, usada ao mesmo tempo para aumentar a eficiência do sistema e separar aplicações em máquinas virtuais distintas, pode simplesmente criar uma nova vulnerabilidade no sistema, além de certamente complicar a configuração de rede. E o pior é que, na nuvem da Internet, geralmente cada serviço é oferecido por múltiplos servidores, espelhados ou não, justamente com o objetivo de oferecer proteção contra falhas de hardware – uma das principais vantagens da computação em nuvem. Com isso, o criminoso que conseguir invadir um dos servidores encontrará uma resistência bem menor para penetrar também nas demais máquinas envolvidas na aplicação. Para combater essas ameaças que vêm da nuvem, é preciso primeiro conhecê-las. Nossos artigos de capa deste mês se dedicam a permitir que seus serviços continuem expostos, sem no entanto ficar escancarados.
Começamos explicando as medidas para evitar que você seja vítima das falhas de projeto da virtualização – nem sequer imaginadas quando se iniciou a última onda dessa tecnologia – por meio de mecanismos de controle de acesso e muito mais. O segundo artigo aborda o sistema Smack, ainda uma novidade no kernel Linux. Esse “concorrente” do SE Linux no terreno dos sistemas de controle obrigatório de acesso (MAC, Mandatory Access Control) foi incluído no kernel depois de um curto período de desenvolvimento, e seu desenvolvedor tem um imponente histórico de bons projetos na área de segurança. Por último, o acesso SSH, por mais seguras que sejam suas senhas e chaves, é uma porta de entrada para o sistema. O terceiro artigo de capa explica como impor limites às ações dos usuários – e, consequentemente, dos invasores – após fazer login no sistema. Boa leitura e boa proteção! n
Índice das matérias de capa Um dentro do outro Pequeno por fora, seguro por dentro Enjaulado
p.34 p.40 p.44
33
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Aspectos de segurança de ambientes virtualizados
CAPA
Um dentro do outro Atualmente, virtualização é a palavra da vez. Porém, do ponto de vista da segurança, existem alguns aspectos importantes a considerar. por Thorsten Scherf
N
um primeiro momento, alguns administradores de sistemas podem se assustar com o esforço necessário para garantir a segurança de sistemas virtualizados. O mais curioso é que todos os fornecedores desse tipo de tecnologia usam o argumento da segurança em favor da sua adoção. Afinal, com o uso de máquinas virtuais é muito simples estabelecer uma separação entre os diversos serviços. Se antes eram necessários dois computadores para separar o servidor web e o banco de dados, a virtualização permite tudo isso com apenas
uma máquina física, que por sua vez serve de base para quantas máquinas virtuais o administrador desejar – e o hardware permitir. Entretanto, como em tudo na vida, é nos pequenos detalhes que se escondem os maiores problemas: há mais questões envolvidas na virtualização do que se supunha em primeira instância. Este artigo fornece um panorama geral dos diferentes aspectos de segurança envolvidos na implementação e na manutenção de ambientes virtualizados. Na maioria das distribuições Linux, o acesso ao hypervisor – ou seja,
o programa responsável pela virtualização propriamente dita – utiliza como base a biblioteca Libvirt [1], que cria uma camada entre o sistema de virtualização e o espaço de usuário. Com isso, o usuário consegue manipular qualquer um dos sistemas de virtualização por meio de ferramentas de administração padronizadas. Além de fornecer suporte ao Xen e ao KVM/QEMU, a Libvirt ainda suporta o LXC, o OpenVZ, o UML e o VirtualBox. Por sua vez, as ferramentas virtmanager, virt-install e virsh permitem ao administrador gerenciar, instalar e monitorar máquinas virtuais, independentemente da tecnologia de virtualização utilizada.
Ferramentas de gerenciamento
Figura 1 Com o virt-manager, o administrador tem à mão diferentes formas de se autenticar em um hypervisor remoto.
Com as ferramentas virt-manager e virt-install, é muito simples criar e administrar máquinas virtuais. Na configuração padrão, elas se conectam ao hypervisor da mesma máquina em que foram iniciadas. Entretanto, também é possível estabelecer uma conexão com um hypervisor remoto. Quem não quiser que os dados de acesso e de usuário sejam transmitidos pela rede em texto puro pode fazê-lo por meio de uma conexão
34
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização segura | CAPA
segura: as opções são SSH, TLS/ SSL com certificados X.509 e Kerberos. No exemplo deste artigo, os dados serão enviados através de um túnel SSH seguro (figura 1). Para isso, é necessário que exista um par de chaves SSH na máquina onde o virt-manager estiver sendo executado: ssh-keygen -t das ssh-copy-id -i ~/.ssh/id_dsa.pub root@exemplo.remoto.com
Em seguida, é necessário ter certeza de que tanto o servidor SSH quanto o da Libvirt estejam ativos. Com o comando virt-manager, pode-se ver a conexão segura recém estabelecida para acessar o hypervisor remoto por meio da Libvirt e gerenciar as máquinas virtuais existentes na máquina remota – além de criar novas. Também é possível criar instâncias de máquinas virtuais pelo comando virt-install. A listagem 1 exibe um exemplo de instalação de máquina virtual em um computador remoto.
Rede virtual
Nesse exemplo, a máquina virtual recém criada usa uma rede chamada default, uma rede virtual que faz parte da configuração padrão da Libvirt. Com a ferramenta virsh, pode-se mostrar como essa rede está configurada (listagem 2). Assim, um endereço IP da rede 192.168.122.0/24 é alocado para a máquina virtual. O serviço responsável por isso é o dnsmasq. Por meio do dispositivo de rede virbr0 do sistema real, a máquina virtual pode se comunicar com o mundo externo via source NAT (SNAT). Para tráfego de fora para dentro da rede é necessário definir as regras de NAT adequadas (destination NAT ou DNAT). As regras de SNAT são criadas por padrão pela Libvirt, conforme mostra o comando iptables -t nat -L POSTROUTING:
Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
Às vezes, entretanto, a comunicação com redes externas não é desejável. Por exemplo, por que o banco de dados deveria estar aberto a solicitações do mundo externo? Em vez disso, seria mais adequado instalar duas placas de rede no servidor de Internet. A primeira se comunicaria com redes externas via NAT e a segunda faria parte de uma rede virtual própria, que incluiria o próprio ser-
vidor de banco de dados. Para essa rede virtual, não há qualquer tipo de NAT. Para isso, é necessário primeiramente configurar a nova rede (listagem 3). Em seguida, o virsh faz com que o arquivo de configuração assim produzido seja incluído na configuração da Libvirt e ative a rede (listagem 4).
Isolamento total
Na sequência, é possível alocar uma segunda placa de rede ao servidor de Internet e conectá-lo a essa rede. Durante o processo de implementação do servidor de banco de dados,
Listagem 1: Novas VMs com o virt-install 01 virt‑install \ 02 ‑‑hvm 03 ‑‑connect qemu+ssh://root@remote.example.com/system 04 ‑‑name demo \ 05 ‑‑ram 512 \ 06 ‑‑disk path=/var/lib/libvirt/images/demo.img,size=10 \ 07 ‑‑network network:default \ 08 ‑‑vnc \ 09 ‑‑location ftp://local.example.com/pub/fedora/f11/ 10 ‑‑extra‑args ks=ftp://local.example.com/pub/ks/fedora.cfgv
Listagem 2: O virsch mostra as configurações da VM 01 $ virsh net‑dumpxml default 02 <network> 03 <name>default</name> 04 <uuid>478de122‑05dc‑4d12‑b7f0‑52349b59f8ef</uuid> 05 <forward mode=’nat’/> 06 <bridge name=’virbr0’ stp=’on’ forwardDelay=’0’ /> 07 <ip address=’192.168.122.1’ netmask=’255.255.255.0’> 08 <dhcp> 09 <range start=’192.168.122.2’ end=’192.168.122.254’ /> 10 </dhcp> 11 </ip> 12 </network>
Listagem 3: Rede privada da VM 01 02 03 04 05 06 07 08 09 10 11
$ cat > /tmp/private‑net <<EOF <network> <name>private‑net</name> <uuid>478d1122‑05dc‑4d12‑b7f0‑5234911911ef</uuid> <ip address=’192.168.130.1’ netmask=’255.255.255.0’> <dhcp> <range start=’192.168.130.2’ end=’192.168.130.254’ /> </dhcp> </ip> </network> EOF
35
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | Virtualização segura
o administrador pode usar essa nova rede já na instalação. Dessa forma, é até possível que o servidor de Internet se comunique com o mundo externo, apesar de a comunicação do servidor de banco de dados estar limitada apenas aos computadores conectados à rede privada. Como fica a configuração caso o administrador não deseje usar uma rede virtual, mas queira integrar os computadores a uma rede já existen-
te? Neste caso, ele pode configurar uma bridge, que é incluída na configuração da Libvirt. Na maioria dos casos, os pacotes de rede das diferentes máquinas virtuais devem permanecer separados – especialmente quando as máquinas funcionam de maneira totalmente independente. Imagine então como fica uma instalação dessas em um provedor de Internet. Nesse caso, provavelmente nenhum cliente vai querer que al-
Listagem 4: Ativação da rede 01 02 03 04 05 06 07 08 09 10 11
$ virsh net‑define /tmp/private‑net Network private‑net defined from /tmp/private‑net $ virsh net‑start private‑net Network private‑net started [root@tiffy ~]# virsh net‑list Name State Autostart ‑‑‑‑‑‑‑‑‑‑‑‑‑‑-‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ default active yes private‑net active no
Listagem 5: Configuração de VLAN 01 02 03 04 05 06 07 08 09 10 11 12 13
$ cat > /etc/sysconfig/network‑scripts/ifcfg‑eth0.100 <<EOF DEVICE=eth0.100 ONBOOT=yes BRIDGE=br100 VLAN=yes EOF $ cat > /etc/sysconfig/network‑scripts/ifcfg‑eth0.200 <<EOF DEVICE=eth0.200 ONBOOT=yes BRIDGE=br200 VLAN=yes EOF
Listagem 6: Dispositivos de bridge 01 02 03 04 05 06 07 01 02 03 04 05 06 07
$ cat > /etc/sysconfig/network‑scripts/ifcfg‑br100 <<EOF DEVICE=br100 BOOTPROTO=static IPADDR=192.168.100.1 NETMASK=255.255.255.0 ONBOOT=yes TYPE=Bridge $ cat > /etc/sysconfig/network‑scripts/ifcfg‑br200 <<EOF DEVICE=br200 BOOTPROTO=static IPADDR=192.168.200.1 NETMASK=255.255.255.0 ONBOOT=yes TYPE=Bridge
gum outro seja capaz de monitorar o seu tráfego de rede. Uma das soluções possíveis seria o uso de VLANs (LANs virtuais) com máquinas virtuais conectadas a elas, conforme a necessidade. Para fazer isso, basta conectar o dispositivo da VLAN à bridge correspondente. No próximo exemplo, temos dois sistemas de clientes que devem ser mantidos separados. Um deles está conectado a uma VLAN com o rótulo 100, ao passo que a outra VLAN usa o rótulo 200. Nos dois casos é necessário primeiramente realizarmos a configuração das placas de rede (listagem 5). Em seguida, o administrador precisa criar os dispositivos de bridge necessários (listagem 6). Após reiniciarmos as redes, as novas bridges deverão estar disponíveis. O comando brctl serve para confirmar essa disponibilidade (listagem 7). Caso o administrador instale agora uma máquina virtual e deseje conectá-la à VLAN 100, ele pode fazê-lo com o comando virt-install --network bridge:br100. Alternativamente, o virt-manager oferece ao usuário as novas bridges por meio de uma interface gráfica com um menu pull-down.
Alta disponibilidade
Uma configuração segura também é à prova de falhas de hardware. Como esse é um tema bastante abrangente, vamos fornecer aqui apenas dois exemplos. Na configuração mencionada acima, é possível concatenar as duas interfaces de rede em um dispositivo de bonding. Conforme o modo de bonding escolhido, os pacotes serão enviados de forma paralela ou intercalada pelas duas placas de rede. Para uma configuração como essa, é preciso primeiramente alocar um dispositivo de bonding para as duas placas: $ cat > /etc/sysconfig/networkscripts/ifcfg-eth0 <<EOF
36
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização segura | CAPA
DEVICE=eth0 ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
Para a segunda placa de rede – eth1 –, essa configuração tem a mesma “cara”. A configuração do dispositivo de bonding fica como segue: $ cat > /etc/sysconfig/networkscripts/ifcfg-bond0 <<EOF DEVICE=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet BONDING_OPTS=”mode=1 miimon=100” EOF
Nas opções de bonding, escolhemos o modo 1 (balance-RR), na qual os pacotes trafegam alternadamente por ambas as placas de rede. Com a opção miimon=100, o driver do dispositivo de bonding é instruído a testar a cada 100 ms se as placas ainda estão conectadas à rede. Caso uma das placas perca o link, o driver “percebe” isso quase imediatamente e para de enviar pacotes por aquele dispositivo de rede. No arquivo /etc/modprobe. conf, o administrador pode determinar que o dispositivo virtual bond0 deverá utilizar o driver de bonding com a diretiva alias bond0 bonding. O dispositivo de bonding pode ser utilizado simplesmente como uma interface de rede comum, o que significa que podemos alocar normalmente um endereço IP a ele, bem como associá-lo a diferentes VLANs. O que vale para a rede também vale para outros componentes, como a infraestrutura de armazanamento. Independentemente de essa infraestrutura utilizar um arquivo de imagem ou um dispositivo de blocos para armazenar as máquinas virtuais, sua disponibilidade deveria ser garantida, de modo a evitar paradas no serviço em caso de panes de
hardware. O modo mais simples de fazer isso é utilizar sistemas RAID, de preferência em uma configuração multipath, caso os dispositivos de blocos se localizem numa SAN (storage area network). O resto deste artigo descreve um método de baixo custo baseado no protocolo iSCSI, no qual o servidor iSCSI disponibiliza na rede um dispositivo RAID1 via software. Antes da instalação de uma nova máquina virtual, o administrador pode conectar o dispositivo iSCSI à rede. Para a comunicação via protocolo iSCSI
é recomendável utilizar uma rede separada, à qual as placas de rede deverão novamente ser unidas em dispositivos de bonding. A configuração do servidor iSCSI no modo RAID1 e a sua disponibilização são mostradas na listagem 8. O último comando tgtadm mostrado na listagem 8 permite o acesso ao dispositivo iSCSI para uma única máquina ou rede determinada – também é prudente restringir o acesso à rede iSCSI. As ferramentas de gerenciamento de dispositivos iSCSI podem ser encontradas na maioria
Listagem 7: Comando brctl 01 02 03 04
$ brctl show bridge name bridge id STP br100 8000.000e0cb30440 no br200 8000.000e0cb30450 no
enabled interfaces eth0.100 eth0.200
Listagem 8: iSCSI 01 # mdadm ‑C /dev/md0 ‑l 1 ‑n 2 /dev/sdb /dev/sdc 02 # chkconfig tgtd on; service tgtd start 03 # tgtadm ‑‑lld iscsi ‑‑op new ‑‑mode target ‑‑tid 1 ‑T iqn.2009‑05.com.example:storage.iscsi.disk1 04 # tgtadm ‑‑lld iscsi ‑‑op new ‑‑mode logicalunit ‑‑tid 1 ‑‑lun 1 ‑b /dev/md0 05 # tgtadm ‑‑lld iscsi ‑‑op bind ‑‑mode target ‑‑tid 1 ‑I ALL
Listagem 9: Informações de dispositivos iSCSI 01 $ tgtadm ‑‑lld iscsi ‑‑op show ‑‑mode target 02 Target 1: iqn.2009‑05.com.example:storage.iscsi.disk1 03 System information: 04 Driver: iscsi 05 Status: running 06 I_T nexus information: 07 LUN information: 08 LUN: 0 09 Type: controller 10 SCSI ID: deadbeaf1:0 11 SCSI SN: beaf10 12 Size: 0 13 Backing store: No backing store 14 LUN: 1 15 Type: disk 16 SCSI ID: deadbeaf1:1 17 SCSI SN: beaf11 18 Size: 100G 19 Backing store: /dev/md0 20 Account information: 21 ACL information: 22 ALL
37
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | Virtualização segura
Listagem 10: Uso do iSCSI 01 # chkconfig iscsi on; service iscsi start 02 # iscsiadm ‑m discovery ‑t st ‑p iscsi.example.com iqn.2009‑05.com.example:storage.iscsi.disk1 03 # iscsiadm ‑m node ‑T iqn.2009‑05.com.example:storage.iscsi.disk1 ‑p iscsi.example.com ‑l
das distribuições Linux, nos pacotes iscsitarget e scsi-target-utils. Uma vez que o dispositivo iSCSI esteja funcionando, pode-se listar algumas de suas informações (listagem 9). O administrador pode então conectar o dispositivo iSCSI à máquina real. Para isso, é necessário usar o pacote iscsi-initiator-utils. O acesso ao dispositivo é feito com os comandos mostrados na listagem 10. Se tudo estiver funcionando corretamente, o comando fdisk na máquina real deve mostrar não apenas o disco rígido local, mas também o dispositivo iSCSI exportado como /dev/sda na lista de dispositivos disponíveis. Caso o disco rígido local seja SCSI ou SATA, o nome do dispositivo /dev/sda já deverá ter sido alocado para ele, e o dispositivo iSCSI receberá automaticamente o nome do próximo dispositivo livre (provavelmente /dev/sdb). Ao instalar novas máquinas virtuais, elas poderão utilizar esse dispositivo iSCSI como infraestrutura de armazenamento. Isso ocorre por meio da opção --disk path=/dev/sdX do virt-install. Da mesma maneira, o virt-manager permite que um novo
dispositivo de blocos seja alocado a uma máquina virtual. Graças ao espelhamento do RAID escolhido no servidor iSCSI, o sistema está protegido contra panes de hardware.
Problemas com o hypervisor De nada serve a melhor das configurações se o hypervisor contiver erros. Se este for o caso, dependendo das circunstâncias, uma máquina virtual pode acabar acessando recursos de uma outra. No pior dos casos, um processo executado em uma máquina virtual poderia ganhar acesso ao sistema real e, com isso, acessar também todas as outras máquinas virtuais. Isso não é nenhuma teoria da conspiração, como mostraram artigos de vários especialistas nos últimos meses [2]. Com o propósito de limitar ao máximo as consequências de falhas do hypervisor, alguns desenvolvedores incluíram, em março de 2009, um dispositivo de segurança no framework da Libvirt (figura 3). Esse dispositivo de segurança baseia-se em uma política de acesso conhecida como Controle de Acesso Obrigatório
Listagem 11: Comando virsh dominfo fedora 01 02 03 04 05 06 07 08 09 10 11 12 13 14
$ virsh dominfo fedora Id: 18 Name: fedora UUID: be8b4a9a‑492a‑db25‑7aed‑f831d-cec9127 OS Type: hvm State: running CPU(s): 4 CPU time: 4591.8s Max memory: 2014400 kB Used memory: 2014208 kB Autostart: disable Security model: selinux Security DOI: 0 Security label: system_u:system_r:svirt_t:s0:c230,c794 (permissive)
(Mandatory Access Control, ou MAC – veja o artigo “Pequeno por fora, seguro por dentro” à página 40 desta edição). Isso significa que um sistema de controle central determina com precisão as permissões de acesso de uma determinada máquina virtual a cada recurso. A decisão de liberar ou impedir o acesso é independente do usuário que executa a máquina. Essa escolha depende de “rótulos” atribuídos às máquinas virtuais e também dos recursos disponíveis – se essa técnica parece familiar, é porque o sistema MAC da libvirt será o SELinux. De modo geral, seria possível utilizar qualquer outro tipo de sistema MAC – tal como o Smack (confira o artigo “Pequeno por fora, seguro por dentro”) –, mas, no estágio atual de desenvolvimento do sistema, apenas o SE Linux está disponível para essa função. Um ponto importante entre os objetivos do projeto foi aprender com os erros das primeiras implementações do SE Linux, tornando toda a sua configuração mais amigável. E de fato esse objetivo foi alcançado: a configuração do sistema é totalmente feita em segundo plano, de forma transparente para o usuário. Esses avanços apareceram primeiramente no Fedora 11 [3] sob o nome de SVirt [4]. Durante a instalação de uma nova máquina, automaticamente são alocadas à infraestrutura de armazenamento duas categorias aleatórias de MCS do SE Linux (MCS é o acrônimo para Multi Category Security [5]): neste exemplo, c230 e c794. Diferentemente do MCS clássico, não há qualquer mapeamento entre essas categorias e um rótulo
38
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização segura | CAPA
tradicional. Com a definição de duas categorias por máquina virtual também é possível executar mais de mil máquinas virtuais por máquina real usando o SVirt: ls -lZ /var/lib/libvirt/images/ -rw––-. root root system_u:object_r:svirt_ image_t:s0:c230,c794 fedora.img -rw––-. root root system_u:object_r:svirt_ image_t:s0:c325,c811 rhel5.img
A partir deste momento, somente processos que pertençam à mesma categoria do recurso em questão (a infraestrutura de armazenamento, no caso) terão permissão para acessá-lo. Na configuração das máquinas virtuais são listadas as categorias MCS acessíveis às quais essa máquina virtual tem acesso (listagem 11). Durante a inicialização da máquina virtual, o serviço Libvirt cuida para que ela seja alocada na categoria correta: ps -AZ|grep qemu system_u:system_r:svirt_t:s0:c230, c794 17235 ? 00:00:01 qemu-kvm
Conforme configurado, a máquina virtual tem acesso somente ao arquivo de imagem fedora.img. Um acesso ao arquivo rhel5.img seria negado com uma mensagem AVCDeny – supondo-se, naturalmente, que a máquina real esteja configurada com o SE Linux em modo de efetivação (enforcing mode). Na versão atual do SVirt, somente objetos de arquivo e máquinas virtuais ganham rótulos. Com isso, o controle de acesso rigoroso ocorre somente entre máquinas virtuais, processos e as infraestruturas de armazenamento correspondentes. No futuro, outros recursos também deverão ser suportados, como objetos de rede. A partir de então será possível, por exemplo, permitir o
Anfitrião
Drivers Hypervisors
Armazenamento
Segurança
Hypervisor
Xen
I-SCSI
SE Linux
KVM
NFS
etc.
OpenVZ
Lógico
Hóspede
LXC
FS
Hóspede
UML
Disco
Hóspede
API
Virsh
Armazenamento
Virt-Manager
Figura 2 A versão mais recente da Libvirt oferece um módulo de segurança próprio.
acesso somente a determinadas portas de rede de uma máquina virtual. O suporte ao acesso transparente a dispositivos PCI e USB também tem prioridade na lista dos desenvolvedores do SVirt – que, como podemos ver, está em ritmo frenético de desenvolvimento.
Conclusão
O uso de máquinas virtuais traz uma lista quase interminável de vantagens. Além do custo economizado com energia e espaço no data center,
com a configuração correta – no geral – o administrador não precisa se preocupar com a segurança das máquinas virtuais. É importante ter em mente, entretanto, que a segurança de um ou vários sistemas, sejam eles reais ou virtualizados, não é um processo fechado. Vale a regra de ouro: estar informado e atualizado com as últimas correções de segurança que, inevitavelmente, terão que ser instaladas, em vez de acreditar cegamente nas afirmações do fabricante da tecnologia utilizada. n
Mais informações [1] Página do projeto Libvirt: http://libvirt.org/ [2] Joanna Rutkowska, “0wning Xen in Vegas”: http:// theinvisiblethings.blogspot.com/2008/07/0wning-xen-in-vegas.html [3] Projeto Fedora: http://fedoraproject.org/ [4] SVirt: http://selinuxproject.org/page/SVirt/ [5] Multi-Category-Security: http://fedoraproject.org/wiki/SELinux/MCS/
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2972
39
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Controle obrigatório de acesso com o Smack
CAPA
Pequeno por fora, seguro por dentro Quando se trata de sistemas para controle obrigatório de acesso, o SELinux é muito complexo e o App Armor é limitado. Conheça o Smack, fácil e seguro. por Thorsten Scherf
N
os clássicos sistemas Linux com controle discreto de acesso (DAC), o usuário geralmente possui total controle sobre seus próprios objetos, sejam eles arquivos, diretórios ou portas de rede. Com os sistemas MAC (Mandatory Access Control, ou controle obrigatório de acesso), o funcionamento é diferente: há regras centralizadas que definem as permissões de acesso de usuários e processos aos diversos objetos. Se um tipo de acesso não for explicitamente permitido, ele será proibido e bloqueado. Portanto, sistemas MAC são os mais indicados para evitar sofrer com as vulnerabilidades constantemente descobertas em qualquer software. Nos sistemas Unix clássicos, essa forma de controle de acesso era implementada com o modelo conhecido como Bell & La Padula. Ele emprega diferentes sensibilidades e categorias para determinar as permissões de acesso dos sujeitos aos objetos. Nos sistemas Linux, o SELinux se destacou nos últimos anos como sistema MAC. Até os defensores e proponentes do “concorrente” App Armor têm optado por esse sistema. O SELinux emprega diferentes formas de MAC. A mais utilizada é
conhecida como Type Enforcement (TE), ou ainda a Role-Based Access Control (RBAC). Contudo, por mais que o SELinux ajude a reforçar a segurança do sistema, sua configuração é relativamente complicada. O App Armor veio para tentar alterar esse quadro, pois a decisão de permitir ou negar o acesso depende apenas do caminho do objeto no sistema de arquivos. Entretanto, esta implementação não é tão segura.
Trabalho limpo
O Simplified Mandatory Access Control (Smack, ou MAC Simplificado) [1] é mais um concorrente na luta pelo posto de melhor subsistema de segurança do kernel Linux. O fato de ter sido rapidamente incluído na árvore principal do kernel diz muito sobre a qualidade do código. Não é de se estranhar, quando se observa os projetos anteriores do desenvolvedor Casey Schaufler – desde o primeiro porte do Unix para 32 bits, passando pelo Trusted Irix até a participação na criação dos padrões POSIX P1003.1e/2c. O Smack também está presente no mais novo projeto de Casey, que consiste num kernel Linux como Smack como módulo de seguran-
ça para Linux (LSM, na sigla), um script de inicialização para carregar os conjuntos de regras, dados de configuração, uma interface de administração na forma do pseudossistema de arquivos smackfs e alguns aplicativos personalizados. Como agora o Smack se juntou aos LSMs SELinux, App Armor e Tomoyo [2], aparentemente chegou ao fim a discussão sobre a implementação ou não de uma API para LSMs no kernel. Há muito tempo, o SELinux caminhava solitário nesse terreno. Então, alguns desenvolvedores do kernel começaram a questionar se não faria sentido implementar uma API para LSMs em vez de manter o SELinux como único sistema de segurança do kernel. Diferentemente do SELinux, o Smack não utiliza a política de Domain Type Enforcement (DTE, ou Efetivação do Tipo de Domínio), mas trabalha com rótulos (labels) bastante simples que o administrador pode atribuir para cada objeto e sujeito. Para os usuários, essas informações são carregadas em tempo de execução, a partir de um arquivo de configuração, e atribuídas dinamicamente; os processos basicamente herdam o rótulo do usuário que os
40
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Smack | CAPA
iniciou. Para os objetos de arquivo e diretório, esses rótulos são atributos estendidos. Neste ponto, o security. SMACK64 permite usar rótulos no Smack com até 23 caracteres. Os rótulos trazidos por padrão com o Smack são: _ (Floor ou chão); ^ (Hat ou chapéu); * (Star ou estrela); ? (Huh ou “ãh”); @ (Internet). Por padrão, tanto os sujeitos quanto os objetos recebem o rótulo Floor (_). O arquivo /etc/smack/user permite atribuir rótulos a todos os usuários. No entanto, atualmente nenhum aplicativo – exceto pelo daemon SSH alterado por Casey Schaufler – é capaz de acessar esse arquivo para permitir que os usuários atribuam rótulos diferentes. Consequentemente, no momento,
o uso do Smack está restrito a logins remotos via SSH. Além desses rótulos padrão, o Smack também conta com algumas regras embutidas: Sujeitos com o rótulo estrela (*) não podem acessar nenhum objeto; A cessos de leitura e execução são permitidos a qualquer sujeito com o rótulo chapéu (^); T odo objeto com rótulo estrela pode ser acessado; T odo objeto com rótulo chão (_) pode ser acessado para leitura e escrita; U m sujeito pode acessar qualquer objeto com rótulo idêntico ao seu; É permitido o acesso de qualquer um ao arquivo /etc/smack/ accesses; T odos os demais acessos sem regras explícitas são proibidos.
O administrador também pode acrescentar algumas regras ao arquivo /etc/smack/accesses. Nesse ponto, o Smack utiliza apenas quatro tipos de acesso: leitura (r), escrita (w), execução (x) e acréscimo (a, de append). Para demonstrar o funcionamento do Smack, confira as listagens 1 a 5 para um pequeno exemplo. Primeiramente, o usuário foo cria um arquivo orders no diretório data/ (listagem 1). Esse arquivo herda o contexto de segurança foo de seu usuário de mesmo nome. O responsável pela atribuição desse rótulo é o arquivo /etc/smack/user (listagem 2). Quando o usuário foo faz login no servidor SSH modificado, ele não recebe o rótulo padrão chão (_), mas foo. Um usuário com outro rótulo – tscherf, no nosso exemplo – não tem permissão para acessar esse arquivo, pois não há uma regra explícita no arquivo /etc/smack/accesses (lista-
OSPRE
R
Linux Magazine #57 | Agosto de 2009
Linux Professional Institute
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
41
CAPA | Smack
gem 3). Para permitir esse acesso,
seria necessário incluir uma regra correspondente (listagem 4). Se o administrador inserir essa regra no arquivo /etc/smack/accesses e recarregá-lo com o comando smackload < /etc/smack/accesses, o acesso passará a ser permitido (listagem 5). O Sma ck repassa as regras ativas ao kernel por meio do comando /smack/load. Também é possível escrever nesse arquivo diretamente. Para que o acesso funcione, é preciso garantir que o usuário receba o rótulo tscherf. No momento, isso só ocorre mediante o login com o daemon SSH modificado, conforme dito anteriormente, e também com
as Smack Tools, disponíveis no site do projeto [3]. No entanto, o acesso aos arquivos do diretório home/ do usuário foo, após este receber o rótulo foo, não funcionará, pois faltam as regras do controle discreto de acesso (DAC). O SELinux se comporta da mesma forma: as regras MAC só são testadas caso o acesso via DAC seja permitido. A única exceção é composta pelos processos e usuários privilegiados, com suas respectivas POSIX capabilities [4]. Por exemplo, o usuário root possui a capability cap_mac_override. Com ela, ele consegue acessar objetos que até as regras MAC bloqueariam. Felizmente, desde o kernel
Listagem 1: Arquivo orders
Linux 2.6.28 há uma solução correta e elegante para esse problema: no sistema de arquivos do Smack, em /smack/, o administrador pode incluir uma estrela (*) no arquivo onlycap. Com isso, até mesmo os processos e usuários privilegiados ficam sob o jugo das regras MAC.
Configuração do Smack Para usar o Smack, é preciso um kernel a partir da versão 2.6.25 com os seguintes itens: CONFIG_NETLABEL=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_SECURITY=y CONFIG_SECURITY_SMACK=y
Listagem 2: Arquivo /etc/smack/user
Note que não é permitido usar múltiplos LSMs ao mesmo tempo. Para utilizar o Smack como sistema MAC, é preciso antes desativar os demais (SELinux, App Armor e Tomoyo). Depois de configurar o kernel com essas opções, deve-se incluir o sistema de arquivos smackfs no arquivo /etc/fstab:
01 # Atribuição de rótulos a usuários 02 tscherf tscherf 03 foo foo
echo “smackfs /smack smackfs smackfsdef=* 0 0” >> /etc/fstab
01 02 03 04 05 06 07
$ cat /proc/self/attr/current; echo foo $ ls ‑ldM /data/orders foo drwxrwxrwx 2 root root 4096 2009‑05‑04 23:16 /data/ $ touch /data/orders $ ls ‑lM /data/orders foo ‑rw‑rw‑r‑‑ 1 foo foo 0 2009‑05‑04 23:20 /data/orders
Listagem 3: Acesso proibido 01 02 03 04
$ cat /proc/self/attr/current; echo tscherf $ ls ‑lM /data/orders ls: cannot access /data/orders: Permission denied
Listagem 4: Arquivo /etc/smack/accesses 01 # RótuloSujeito RótuloObjeto Direitos 02 tscherf foo rx
Listagem 5: Acesso permitido 01 02 03 04
$ cat /proc/self/attr/current; echo tscherf $ ls ‑lM /data/orders foo ‑rw‑rw‑r‑‑ 1 foo foo 0 2009‑05‑04 23:20 /data/orders
Com isso, todos os objetos do sistema de arquivos que não possuam suporte a atributos estendidos recebem o rótulo estrela (*), o que é especialmente importante no caso de mídias removíveis. O site do projeto [3] contém um arquivo com algumas ferramentas para o Smack, como o servidor SSH já citado. Também existe uma versão modificada do comando ls, que permite ao usuário listar também o rótulo Smack dos objetos com a opção -M. O arquivo /proc/<pid>/attr/current exibe o rótulo Smack dos processos. Os usuários podem consultar seus próprios rótulos por meio de /proc/ self/attr/current. Além disso, o ar-
42
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Smack | CAPA
quivo contém um script de inicialização que ativa as regras do Smack. Com as ferramentas e os arquivos de configuração nos locais corretos (o código do script de inicialização pode informar onde os arquivos devem se encontrar), já é possível fornecer os rótulos para os arquivos. Na configuração padrão, todos os objetos e sujeitos recebem o rótulo padrão chão (_), que permite o acesso de forma geral. Especificar um novo rótulo personalizado a um objeto, portanto, restringe qualquer acesso a ele. A ferramenta attr deve ser usada para definir esses rótulos: attr -S -s SMACK64 -V “foo” /data /orders
De acordo com as regras padrão, a partir desse momento o acesso ao arquivo com rótulo foo só é permitido para usuários e processos que também possuam esse rótulo – ou o rótulo todo-poderoso chapéu (^). Se um usuário com rótulo diferente tentar acessar o arquivo, o Smack procurará uma regra explícita para o usuário no arquivo /etc/smack/accesses. Se não a encontrar, o acesso será proibido (listagem 3). Infelizmente, a versão 2.6.29 do kernel, utilizada neste artigo, ainda não se conecta ao subsistema de auditoria, portanto os acessos não autorizados ficam de fora dos logs. Esse problema será resolvido em breve, pois a árvore de desenvolvimento do kernel (Linux-next) já contém essa extensão [5]. Também podemos esperar que Linus Torvalds inclua esses patches rapidamente no kernel oficial.
Até pacotes IP
O Smack suporta o rascunho do padrão CIPSO 2.2 da IETF, datado de 1993. Ele permite que os processos executados em sistemas diferentes na mesma rede sejam agrupados num chamado Domínio de Interpretação
(DOI). Cada pacote IP enviado por um processo como esse – neste caso, o remetente é o sujeito – recebe uma //tag no cabeçalho IP. Nas regras de acesso, o administrador pode definir quais tags de processos podem se comunicar com quais outros do sistema remoto – neste caso, o processo é o objeto. O Smack permite definir tanto o DOI quanto as tags nos arquivos /etc/smack/doi e /etc/smack/cipso, respectivamente. Se nenhum DOI for fornecido, o Smack utilizará o grupo 3. Com a indicação das tags no arquivo /etc/smack/cipso, podese definir um nível de sensibilidade seguido de uma ou mais categorias. Quando o Smack recebe pacotes enviados por sistemas que não usam os rótulos CIPSO, ele utiliza o rótulo padrão chão (_) a partir do arquivo /smack/ambient. Essa técnica permite o acesso de todos os processos ao pacote em questão. Administradores que utilizem o CIPSO somente para suas próprias redes e não desejem empregá-lo na comunicação com o mundo exterior também podem aplicar o rótulo padrão Internet (@). As linhas a seguir criam uma configuração de CIPSO para a subrede 192.168.0.0/16 e o localhost, mas acrescentam os pacotes IP destinados a outras redes sem CIPSO: # cat <<FIM >/smack/netlabel 127.0.0.1 -CIPSO 192.168.0.0/16 -CIPSO 0.0.0.0/0 @ FIM
Em comparação com o SELinux, que também suporta o padrão CIPSO, a configuração do Smack é muito mais fácil. Em seguida, note que o padrão CIPSO é interessante apenas para poucas implementações. No entanto, quem desejar combinar sistemas Linux a outras variantes confiáveis de Unix, como o Trusted Solaris,
por exemplo, tem no Smack uma introdução prática e simples a esse mundo de possibilidades.
Conclusão
O Smack é um sistema MAC para Linux fácil de configurar, mas que não oferece todos os recursos do SELinux. Mesmo assim, o Smack é recomendável para ambientes em que se deseje uma separação maior entre os usuários, embora (ainda) não seja suficiente para ambientes de missão crítica. Isso se deve em parte à falta de aplicativos com suporte a esse LSM, e em parte à ausência de logs. No entanto, podemos esperar melhorias em breve, pois o código já se encontra na árvore Linux-next. Resta esperar que mais desenvolvedores embarquem no trem do Smack – talvez com isso ele se torne um sério concorrente do SELinux. n
Mais informações [1] Página do Smack: http:// www.schaufler-ca.com [2] Tomoyo: http://tomoyo. sourceforge.jp [3] Smack-utilities: http:// www.schaufler-ca.com/ data/080616/smackutil-0.1-x86.tar [4] Marlon Petry, “Muito capaz”: http://lnm. com.br/article/2422 [5] Auditoria para o Smack: git://git.kernel.org/ pub/scm/linux/kernel/ git/jmorris/securitytesting-2.6#next
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2964
43
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Jailkit: dite os direitos dos usuários SSH e SFTP
CAPA
Enjaulado Olly – www.fotolia.com
Limitar o acesso ao SSH e ao SFTP com Chroot é bastante difícil. O Jailkit ajuda a regular melhor os direitos dos usuários. por Daniel van Soest
C
omo se pode proteger um sistema, mesmo via SSH, quando um usuário possui uma senha fraca? Sem políticas e regras de segurança bem definidas e eficazes, qualquer servidor SSH se torna vulnerável, inclusive a ataques de força bruta. E não é só o acesso externo que representa uma ameaça, pois nem sempre os administradores podem exigir um proxy para o acesso aos diversos serviços. Sempre há aqueles serviços sem possibilidade de proxy, como SFTP, acesso ao console via SSH ou Telnet etc. A solução para isso geralmente é o NAT, que permite o acesso da rede interna à Internet. O gateway oferece um maior controle, pois limita o acesso a portas específicas em cada máquina da rede. O estabelecimento de um ambiente Chroot para acesso ao servidor requer grandes esforços, e é nessa tarefa que o projeto de código aberto Jailkit pode ajudar. Criado por Olivier Sessink, o Jailkit oferece ao administrador um conjunto de scripts para criação e gerenciamento de ambientes Chroot.
Instalação fácil
A versão utilizada nos testes foi a 2.7 [1]. O Jailkit é escrito, na maior parte, em C e Python, utilizando apenas
as bibliotecas Libc e Libpthreads. A instalação é bem fácil: depois de descompactar o arquivo .tar baixado, bastam os tradicionais comandos: ./configure make make install
O arquivo INSTALL.txt, incluído no pacote, dá algumas informações muito úteis, como o uso do Jailkit como daemon (veja o quadro 1).
Montagem da jaula
Feita a instalação, vamos criar nosso primeiro ambiente enjaulado. O Jailkit é feito de forma modular, o que significa que qualquer programa pode utilizar suas funcionalidades de enjaulamento. Para preparar a jaula, use o comando jk_init com os seguintes parâmetros: jk_init -v -j /srv/jail jk_lsh basicshell
O parâmetro -j informa onde se localiza o diretório da jaula, e -v torna a saída do jk_init mais verbosa. A partir desse momento, os programas incluídos na jaula já estão disponíveis para seus usuários.
O programa jk_lsh define o shell usado na jaula – sem ele, não é possível fazer login nela. Basicshell, nesse caso, representa um shell Bash simplificado, com apenas os comandos básicos (cd, mv, cp, pwd e outros). Caso o diretório não exista, ele será criado. Em seguida, crie um diretório temporário para a jaula: mkdir /srv/jail/tmp chmod a+rwx /srv/jail/tmp
Sem o jk_lsh e o diretório temporário, nenhum login será permitido na jaula.
Lar, doce lar
Caso ainda não o tenha feito, crie os usuários que farão login na jaula. Faça-o com o comando useradd comum e, em seguida, defina senhas para eles. Antes de pôr os usuários atrás das grades, é importante notar que não apenas o login será feito na jaula, como também seu diretório home será abrigado nela. Em seguida, forneça ao Jailkit os direitos de acesso para que os usuários consigam utilizar seus próprios arquivos: jk_jailuser -m -j /srv/jail max jk_jailuser -m -j /srv/jail moritz
44
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Jailkit | CAPA
O comando jk_jailuser move o diretório home (opção -m) do usuário indicado (max e moritz, nesse exemplo) para dentro da jaula indicada em -j. Depois disso, o arquivo de senhas /etc/passwd já reflete as alterações: max:x:1016:1016::/srv/jail/./home /max:/usr/sbin/jk_chrootsh moritz:x:1017:1017::/srv/jail/. /home/moritz:/usr/sbin/jk_chrootsh
Fica claro, nesse caso, que o usuário será direcionado diretamente ao ambiente Chroot. O arquivo de senhas da jaula contém: max:x:1003:1003::/home/max:/usr /sbin/jk_lsh moritz:x:1004:1004::/home/moritz: /usr/sbin/jk_lsh
Para permitir que o usuário max faça login no ambiente chroot via SSH, é preciso alterar o shell para algo como /bin/bash. A opção padrão jk_lsh é um shell não interativo que repassa a outro programa tudo que recebe.
Compartilhamentos
Se for desejável, é possível criar em /srv/jail/etc/jailkit/jk_lsh. ini diretórios compartilhados para grupos ou usuários. Se o objetivo for que a jaula funcione como gateway SFTP para o usuário moritz, o conteúdo do arquivo jk_lsh.ini deve ser: [moritz] paths= /usr/bin executables= /usr/bin/sftp
Com isso, o usuário moritz se torna capaz de usar o comando sftp pelo terminal: ssh -t moritz@sftp-gateway.exemplo. com sftp secure.exemplo.com
Quadro 1: Daemon Os scripts de inicialização estão incluídos no pacote. Basta copiá-los para o local adequado e definir os privilégios de acesso: # Copiar os scripts de inicialização cp extra/jailkit /etc/init.d/jailkit # Definir os privilégios chmod a+x /etc/init.d/jailkit # Instalar os scripts de inicialização # (em sistemas baseados no Debian) update-rc.d jailkit defaults
Quadro 2: Extensões Para usar outros programas dentro da jaula, é preciso informá-los ao arquivo /etc/jailkit/jk_init.ini. Por exemplo, para um cliente SFTP: [sftp-client] comment = sftp-client paths = /usr/bin/sftp includesections = netbasics, uidbasics devices = /dev/urandom, /dev/null Feito isso, já é possível instalar o cliente SFTP em cada uma das jaulas com o comando jk_init -j /srv/jail sftp-client.
Naturalmente, todas as tentativas de login são registradas no arquivo auth.log, assim como os eventos relacionados – graças ao jk_lsh.
Modificações
Conforme mencionado anteriormente, é possível instalar na jaula todos os programas do sistema. O Jailkit fornece ao arquivo jk_init as informações dos programas (caminhos, dependências etc.), que por sua vez são obtidas no arquivo /etc/ jailkit/jk_init.ini. Evidentemente, nem todos os programas são préconfigurados. Se for desejável instalar um cliente SFTP na jaula, basta preencher o arquivo jk_init.ini de acordo (veja o quadro 2). Nas atualizações, as alterações feitas ao sistema também são replicadas na jaula por meio do script jk_update. Ele busca atualizações e as efetua quando apropriado, para que o sistema no interior da jaula permaneça de acordo com o siste-
ma do lado de fora (o “anfitrião”). O comando jk_check faz um exame profundo da jaula e registra todas as diferenças. A página do Jailkit lista várias possibilidades e exemplos de uso do programa. Ele oferece uma sólida estrutura para aumentar a segurança de servidores, oferecendo até aos ladrões mais capazes um belo desafio. n
Mais informações [1] Jailkit: http://olivier. sessink.nl/jailkit
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2960
45
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Encontre arquivos obsoletos com o Agedu
ANÁLISE
Pente fino Kardo – www.fotolia.com
O Agedu ajuda a limpar seu disco rígido identificando arquivos antigos. Libere espaço desperdiçado em vez de desperdiçar tempo. por Erik Bärwaldt
N
a era da multimídia, discos rígidos parecem cada vez menores. Mesmo que o administrador impeça que os usuários guardem arquivos de vídeo e áudio nos discos do servidor, sempre existem outros tipos de arquivos gigantes que conseguem escapar. Ou então, dependendo da área de trabalho (artes, publicações, engenharia etc.), os arquivos de tamanho avantajado podem ser o próprio objeto de trabalho. A consequência dessa presença difundida de arquivos grandes necessários e desnecessários é o gasto de tempo com limpezas de disco. Existem várias ferramentas gráficas que calculam e exibem o espaço do disco usado pelos arquivos e diretó-
rios. Quase todas elas são baseadas no comando du, que fornece estatísticas sobre diretórios e arquivos individuais. A desvantagem do du, no entanto, é que ele dificilmente informa quais subdiretórios têm excesso de arquivos obsoletos. Simon Tatham, um desenvolvedor britânico, percebeu esse problema e criou uma ferramenta chamada Agedu, que identifica com segurança os arquivos desnecessários. O Agedu lê o registro de data e hora (o timestamp) do último acesso a cada arquivo e exibe o resultado no navegador web com um gráfico de barras totalmente legível e compreensível. Essa tela fornece rapidamente um panorama dos diretórios que contêm arquivos
Figura 1 A primeira execução faz o Agedu gerar o índice, e a segunda inicia o servidor web.
que não são acessados há muito tempo. O Agedu também combina a função de timestamp com as estatísticas de espaço em disco do du para cada arquivo de cada diretório.
Instalação
O Agedu está disponível apenas no site do desenvolvedor e somente sob a forma de código-fonte [1]. No momento em que este artigo foi escrito, a versão é a 8604. Depois de baixar o arquivo .tar.gz mais recente, descompacte-o num diretório temporário com tar -xzvf agedu-r<versão>.tar. gz substituindo <versão> pelo número da sua cópia do Agedu. Entre no diretório e instale o software com os tradicionais comandos ./configure && make && sudo make install. Ao final, fique à vontade para apagar o arquivo .tar.gz baixado e o diretório criado na descompactação, já que estamos tratando justamente de uma faxina no disco.
46
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Agedu | ANÁLISE
Para receber informações detalhadas, é preciso executar o Agedu duas vezes. Na primeira, o software varre o disco checando o uso dos diretórios. Para isso, digite agedu --scan /diretório para o Agedu varrer /diretório/ e todos os seus subdiretórios, e crie um arquivo de índice. Dependendo da posição do diretório na árvore de diretórios e o número de arquivos contidos nele, o processo pode demorar. Na segunda execução, o Agedu analisa o arquivo de índice antes de exibir os resultados no navegador. Além disso, ele inclui um servidor web que possui seu próprio mecanismo de autenticação. Para analisar o arquivo de índice e iniciar o servidor web, basta executar o Agedu com o comando agedu --web (figura 1). O software ativa seu servidor web interno e usa um endereço IP do espaço de endereços local (geralmente 127.164.152.163). Além disso, ele usa uma porta diferente a cada vez que é executado. Isso evita que outras máquinas da rede local acessem o servidor web sem autorização. Se o recurso de autenticação estiver ativado, o Agedu gera uma senha sempre que o servidor web for iniciado e exibe a senha no terminal. A URL completa é exibida no terminal. Ao abri-la no navegador web, é exibido o gráfico de barras (figura 2). O Agedu suporta vários parâmetros opcionais, o que mostra a diversidade de recursos do software. Valores de limite permitem definir a idade mínima para um arquivo ser considerado obsoleto pelo Agedu. Em lugar da última data de acesso, é possível escolher a última data de modificação como critério das estatísticas. Se solicitado, o software também pode fazer uma varredura em múltiplos sistemas de arquivos. O endereço IP e o número da porta podem ser definidos individualmente no momento da execução, sendo
Figura 2 Confira as estatísticas de arquivos e diretórios no Firefox.
possível também escolher um método de autenticação para o servidor web interno. O usuário e sua senha podem ser definidos por meio de parâmetros. Para quem não se interessa por belos gráficos no navegador ou depende somente do terminal, o Agedu também pode exibir uma versão dos resultados da varredura em texto puro no console. Em virtude da capacidade do software de combinar parâmetros, também se pode combinar várias ações em um único comando. O Agedu processa os passos sequencialmente.
Conclusões
O Agedu proporciona uma rápida visão geral das pilhas de arquivos obsoletos nos diretórios do sistema de arquivos. O gráfico de barras, bem claro, economiza tempo ao facilitar a compreensão. Adicionalmente, o software pode ser customizado para se adequar às suas necessidades e preferências, mas a grande variedade de opções pode ocupar até os administradores mais experientes com a leitura do manual do software [2] antes de usá-lo. n
Mais informações [1] Agedu: http://www.chiark.greenend.org.uk/~sgtatham/agedu/ [2] Página de manual do Agedu: http://www.chiark.greenend.org.uk/~sgtatham/agedu/manpage.html
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2968
47
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Transforme seu desktop num cluster de alto desempenho
TUTORIAL
Cluster facílimo Com o PelicanHPC, todo mundo pode ter um cluster de baixo custo para triturar números à vontade. por Mayank Sharma
Andrea Danti – www.fotolia.com
S
e os usuários estão pedindo o poder de um data center mas seu chefe insiste em afirmar que não é mais possível aumentar o parque de TI, não perca a esperança. Com algum tempo, um pouco de esforço e certas ferramentas de código aberto, é possível transformar seus sistemas desktop medianos num super-computador. Para os impacientes, o live CD PelicanHPC reúne múltiplos PCs com hardware comum em um cluster de alto desempenho em pouco tempo. O projeto PelicanHPC é a evolução natural do ParallelKnoppix, uma versão remasterizada do Knoppix com pacotes para criação de clusters. Michael Creel desenvolveu o PelicanHPC para suas próprias
pesquisas. Creel estava interessado em aprender sobre clusters, e como acrescentar pacotes a essa distribuição é tão fácil, ele adicionou o PVM, ferramentas para clusters como o ganglia monitor, aplicativos como o GROMACS e assim por diante. Incluiu também alguns exemplos simples de computação paralela em Fortran, C, Python e Octave para oferecer alguns exemplos funcionais básicos para os iniciantes. Porém, o processo de manter a distribuição demandava muito tempo, principalmente para atualizar pacotes como Xorg e KDE. Foi então que Creel descobriu o Debian Live, passou algum tempo estudando o pacote live-helper e criou uma forma mais sistemática de criar uma distribuição
em live CD para clusters. Então, essencialmente, o PelicanHPC é um único script que baixa pacotes a partir de um repositório Debian, adiciona scripts de configuração e softwares de exemplo e gera como saída uma imagem ISO inicializável.
Início básico
Mais adiante, este artigo abordará a criação de uma versão customizada. Por ora, vamos usar a versão 1.8 do PelicanHPC conforme é distribuída no site [1] para dar a partida em nosso cluster. Há versões de 32 e 64 bits disponíveis, então escolha a mais adequada para o seu hardware. O desenvolvedor alega que, com o PelicanHPC, é possível montar e iniciar um cluster em cinco minutos.
48
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PelicanHPC | TUTORIAL
Entretanto, trata-se de um exagero – é possível chegar lá em menos de três. Primeiro, certifique-se de ter todos os ingredientes: um computador para atuar como mestre e outros que serão nós escravos de computação. O mestre e os escravos se conectam pela rede, então é necessário que façam parte de uma mesma LAN. Embora seja possível conectá-los por uma rede sem fio, a computação paralela pode trocar muitos dados entre os nós, portanto a rede seria um gargalo de desempenho para seu cluster. Além disso, assegure-se de que o roteador que interliga o nó mestre e os escravos não esteja executando um servidor DHCP, pois é do mestre a função de distribuir IPs a seus escravos. Apesar de não ser realmente necessário um monitor, teclado ou mouse nos nós escravos, o nó mestre precisa deles. No caso de um processador de núcleo duplo com memória suficiente, não seria uma má idia executar o mestre numa máquina virtual e o escravo na máquina física. O PelicanHPC roda a partir da memória, então é preciso garantir que haja memória suficiente. Se o cluster for realizar trabalho sério, é possível salvar os resultados da computação no disco rígido – nesse caso, tenha um disco rígido na máquina. Na realidade, para testar o PelicanHPC, é possível executá-lo completamente em hardware virtual com conexões virtuais de rede, contanto que a máquina física seja poderosa o suficiente para abrigar tantas máquinas virtuais. Com o hardware propriamente arranjado, inicie o nó mestre pelo live CD. Para escolher um idioma diferente de inglês ou desligar o ACPI, ou alterar qualquer outro parâmetro de inicialização, é possível explorar as opções de inicialização com a tecla [F1]. Durante a inicialização, o Pelican HPC faz três pedidos. Primeiro, é
preciso selecionar um dispositivo de armazenamento para abrigar o diretório /home/. A opção padrão ram1 guarda os dados na memória RAM. Para qualquer solução minimamente permanente, é preciso fornecer o dispositivo, como hda1 ou sda5. Ele pode ser tanto uma partição do disco quanto um disco USB – mas ele precisa usar Ext2 ou Ext3. Se a opção padrão ram1 for substituída por um dispositivo, o PelicanHPC criará um diretório user/ na raiz desse dispositivo. Em seguida, o PelicanHPC pergunta se deve copiar todos os scripts de configuração e exemplos para o diretório home/ do dispositivo especificado. Recomenda-se responder Sim na primeira vez que o PelicanHPC for executado e Não nas inicializações seguintes. Claro que para executar o PelicanHPC a partir da memória é preciso sempre escolher Sim. Por último, o sistema pede para você alterar a senha padrão. Essa senha será usada pelo usuário user no nó mestre e também nos escravos. O PelicanHPC é projetado para um único usuário, e a senha fica em texto puro. De posse dessas informações, o PelicanHPC inicia o nó mestre e entra no ambiente Xfce.
Configuração do cluster Agora que o nó mestre está funcionando, é hora de configurá-lo para usar o cluster. O PelicanHPC possui um conjunto de scripts para
esse propósito. Execute-os manualmente ou use o script mestre peli can_setup, que chama todos os outros scripts, que por sua vez iniciarmos vários servidores e se conectam aos nós escravos. Para começar a instalar o cluster, abra um terminal e digite: sh pelican_hpc
Se as máquinas tiverem múltiplas interfaces de rede, o sistema perguntará qual delas está conectada ao cluster. Em seguida, ele pedirá autorização para iniciar o servidor DHCP e confirmará o início dos serviços que permitirão a entrada dos escravos no cluster. A princípio, as confirmações constantes parecem irritantes, mas são necessárias para evitar que se coloque a rede num estado inoperante por causa de serviços DHCP conflitantes, que por sua vez poderia interromper computações no meio. Após obter permissão para iniciar o cluster, o script pede para você iniciar os nós escravos. Os escravos são iniciados pela rede, então ative essa opção na BIOS dessas máquinas. Ao encontrar o nó mestre, cada escravo exibe o splash do PelicanHPC e permite a digitação de parâmetros de inicialização (idioma etc.), exatamente como fez antes no nó mestre. Em vez de entrar no Xfce, os nós escravos exibem a informação de que são parte de um cluster e não devem ser desligados (figura 1). Claro que se os nós escravos não tiverem
Figura 1 Se o nó escravo tiver um monitor, é isso que ele mostrará.
49
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | PelicanHPC
um monitor, basta garantir que a BIOS inicie a partir da rede e ligar a máquina. Quando os escravos estiverem em funcionamento, volte ao mestre e pressione o botão Não para varrer novamente o cluster e atualizar o número de nós conectados (figura 2). Quando todos os escravos forem conectados ao mestre, pressione Sim. O PelicanHPC mostra uma
mensagem de confirmação e abre o script que reconfigura o cluster para adicionar ou remover um nó (figura 3). Para redimensionar o cluster, execute o seguinte script: sh pelican_restarthpc
E pronto. Seu cluster já está funcionando, aguardando instruções.
Figura 2 Dois nós em execução; continue procurando outros.
Hora de triturar
O desenvolvedor Creel é professor de economia da Universidade Autônoma de Barcelona, na Espanha. Ele trabalha com econometria, que envolve bastante computação numérica. Por isso há alguns textos e códigos de exemplo em GNU Octave relacionados à pesquisa de Creel. Para os interessados em econometria, o arquivo econometrics.pdf, no diretório /home/user/Econometics/, é um bom início. Além disso, confira o arquivo ParallelEconometrics.pdf em /home/user/Econometrics/Parallel Econometrics/. Essa apresentação é uma boa introdução à computação paralela e à econometria. Para os não iniciados, o GNU Octave [2] é uma “linguagem de computação de alto nível para computação numérica”. É a alternativa livre ao programa proprietário Matlab, ambos usados para aritmética forte. Há códigos de exemplo no diretório /home/user/Econometrics/ Examples/ para realizar testes como estimativa de densidade [3] e estimativas de máxima verossimilhança, assim como para efetuar simulações Monte Carlo de como um novo estimador econométrico se comporta.
Testando
Figura 3 Dois nós estão em execução e conectados ao mestre.
Para executar os testes, abra um terminal e inicie o GNU Octave digitando octave na linha de comando. Na interface do Octave é possível executar vários exemplos de código digitando seus nomes. Por exemplo, para realizar as estimativas de densidade deve-se digitarkernel_example. Da mesma forma, pea_example mostra a implementação paralela do algoritmo de expectativa parametrizada, e mc_example2, mostrado na figura 4, exibe os resultados do teste de Monte Carlo. Creel também afirma que o Peli canHPC pode ser usado para dinâ-
50
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PelicanHPC | TUTORIAL
mica molecular por meio do software livre GROMACS (GROningen MAchine for Chemical Simulations). O projeto distribuído para estudo de enovelamento de proteínas, Folding@ home, também usa o GROMACS, e Creel acredita que seja possível replicar essa configuração num cluster criado com o PelicanHPC. Creel sugere ainda que os usuários interessados unicamente em aprender sobre computação de alto desempenho confiram o Parallel Knoppix, cuja última versão ainda está disponível para download [4].
máquina local quanto em execução nos vários nós do cluster. Linguagens populares para escrever programas com MPI são C, C++ e Fortran. A MPICH foi a primeira implementação da especificação MPI 1.x. LAM/MPI é uma outra implementação que também cobre porções significativas da especificação MPI 2.x. A LAM/MPI é capaz de
passar mensagens via TCP/IP, memória compartilhada ou Infiniband. A implementação mais popular da MPI é o OpenMPI, desenvolvido e mantido por um consórcio e que combina o melhor de vários projetos, como o LAM/MPI. Ele é usado por muitos dos super-computadores da lista Top 500, incluindo o mais veloz no momento, o IBM Roadrunner.
Programação paralela
Um dos melhores usos do Pelican HPC é a compilação e execução de programas paralelos. Se o único uso pretendido para o PelicanHPC for a compilação, não é preciso usar nós escravos, pois as ferramentas podem compilar programas no próprio nó mestre. O PelicanHPC inclui várias ferramentas para escrever e processar código paralelo. O OpenMPI compila programas em C, C++ e Fortran. O SciPy e o NumPy [5] são aplicativos baseados em Python para computação científica. O PelicanHPC também possui a MPI toolbox (MPITB) para Octave, que permite a chamada a rotinas de bibliotecas MPI de dentro do Octave.
Passe o chapéu
Figura 4 O Gnuplot plota os resultados de um exemplo de teste de Monte Carlo.
Listagem 1: “Olá, mundo” com MPI
Se você não tem intimidade com a programação paralela, talvez não conheça a MPI (Message-Passing Interface, ou interface de passagem de mensagens), que é fundamental para a computação paralela. Tratase de um sistema de software que permite a escrita de programas paralelos que passam mensagens para execução em clusters. MPI não é uma linguagem de programação, mas uma biblioteca capaz de passar mensagens entre múltiplos processos. O processo pode estar tanto numa
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
#include <stdio.h> #include “mpi.h” int main(int argc, char *argv[ ]){ int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf(“We are borg! I am %d of %d\n”, rank, size);
}
MPI_Finalize(); return 0;
51
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | PelicanHPC
mpicc borg-greeting.c -o borggreeting
Para executar os programas, é preciso usar o mpirun: mpirun -np 4 borg-greeting
Figura 5 Ajuste o script make_pelican para criar seus prompts customizados.
MPI
O PelicanHPC inclui duas implementações da MPI: LAM/MPI e OpenMPI. Para escrever programas paralelos em C ou C++, certifique-se de incluir o cabeçalho mpi.h (#include <mpi.h>). Para compilar os programas, é preciso o mpicc para programas em
C, mpic++ ou mpiCC para C++ e mpif77 para Fortran. A listagem 1 possui um programa “Hello World” de exemplo em C que usa a biblioteca mPI para imprimir uma mensagem em todos os nós do cluster. Compile-o com mpicc:
Listagem 2: Pacote para o live CD 01 02 03 04 05 06
### pacotes a acrescentar ‑ digite aqui os nomes dos pacotes ### cat <<PACKAGELIST > addlist # pacotes básicos para o cluster ssh dhcp3‑server nfs‑kernel‑server nfs‑common atftpd ifenslave # ``blobs’’ binários para a rede # firmware‑bnx2 firmware‑iwlwifi firmware‑ralink linux‑wlan‑ng‑firmware 07 # gerenciamento de recursos 08 slurm‑llnl slurm‑llnl‑sview slurm‑llnl‑basic‑plugins 09 # configuração e ferramentas 10 wget bzip2 dialog less net‑tools rsync fping screen 11 make htop fail2ban locales console‑common 12 # suporte a email 13 bsd‑mailx liblockfile1 mailx postfix ssl‑cert 14 # MPI 15 lam‑runtime lam4‑dev openmpi‑bin openmpi‑dev 16 # Octave 17 octave3.0 octave3.0‑headers gnuplot 18 # Python 19 python‑scipy python‑matplotlib python‑numpy ipython lampython 20 # outros pacotes científicos 21 gfortran libatlas‑headers libatlas3gf‑base 22 # GROMACS 23 gromacs 24 # Xorg e cia. 25 xorg xfce4 konqueror ksysguard ksysguardd kate kpdf 26 konsole kcontrol kdenetwork kdeadmin abiword 27 PACKAGELIST 28 ### FIM DA LISTA DE PACOTES ###
Esse comando faz a biblioteca MPI executar explicitamente quatro cópias do aplicativo, cada uma em uma das CPUs do cluster, em rodízio. Dependendo do número de nós do cluster, você verá algo como: We We We We
are are are are
borg! borg! borg! borg!
I I I I
am am am am
1 3 0 2
of of of of
4 4 4 4
Há vários tutoriais de MPI na Web [6]. O professor José Luis da Universidade de Sevilha, Espanha, usa o PelicanHPC em seu curso de programação paralela. Ele recomenda a novos programadores experimentar os exemplos disponíveis online a partir do livro de Peter Pacheco, Parallel Programming with MPI [7]. Confira o site do OpenMPI para mais documentação, incluindo FAQ [8] bem detalhadas.
Seu próprio
Se seu único interesse for aprender programação paralela, o PelicanHPC oferece mais que o suficiente. Porém, o principal objetivo do live CD é ajudar a montar um cluster sem grandes esforços. O foco é a facilidade de manutenção e customização, e é por isso que a versão oficial não inclui montes de pacotes. Após testar e aprovar o live CD, recomenda-se criar suas próprias versões com o pacote live-helper do Debian e com o script make_pelican do Pelican. Além disso, é necessária uma instalação do Debian ou Ubuntu para produzir o live CD, que pode ser uma instalação mínima ou até uma máquina virtual numa máquina
52
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PelicanHPC | TUTORIAL
com bastante memória RAM e um processador veloz de núcleo duplo. Então, para criar sua própria imagem ISO ou USB, primeiro instale uma versão recente do Ubuntu ou Debian. Em seguida, baixe o pacote live_helper do repositório da distribuição. Por último, baixe a última versão do script make_pelican (atualmente, a 1.8) da página do Pelican [4]. Abra o script num editor de texto. Ele tem várias seções. Após os comentários iniciais, que incluem um breve changelog, a primeira seção lista os pacotes que estarão disponíveis na ISO. É nele que precisamos fazer as alterações. A listagem 2 mostra uma versão modificada dessa seção, sem os blobs binários de rede. Há também o editor de texto Abiword e o pacote GROMACS. Como esses pacotes são baixados a partir dos repositórios da sua distribuição, certifique-se de digitar seus nomes corretamente. O GROMACS possui várias dependências, mas não é necessário acrescentá-las, pois serão instaladas automaticamente. O próximo pedaço do script make_ pelican a ser alterado é a arquitetura para criação da imagem ISO, além da definição do tipo de imagem: ISO ou USB. Esta seção também especifica a série de endereços fornecidos pelo PelicanHPC: PELICAN_NETWORK=”100.11.12” MAX_NODES=”100” #ARCHITECTURE=”amd64” #KERNEL=”amd64” ARCHITECTURE=”i386” KERNEL=”686” IMAGETYPE=”iso” IMAGETYPE=”usb-hdd” DISTRIBUTION=”lenny” MIRROR=”en”
recomenda-se examinar as outras seções para se ter uma ideia melhor de como o PelicanHPC transforma magicamente máquinas comuns em clusters extraordinários. Após ajustar o script, execute-o no console: sh make_pelican
Agora, sente e relaxe – ou, se sua conexão ou seu computador forem lentos, aproveite para preparar sua declaração do imposto de renda, pois vai demorar para os pacotes chegarem e serem compilados em uma imagem de distribuição. Quando terminar esse processo, você terá uma nova imagem ISO chamada binary.iso no diretório i386/ ou amd64/, dependendo da ar-
quitetura escolhida. Agora, transfira a imagem USB para um pen drive ou teste a imagem ISO numa máquina virtual antes de gravá-la num disco. A figura 5 mostra a tela da senha para um live CD modificado do PelicanHPC. O PelicanHPC é projetado com vistas à facilidade de uso por qualquer pessoa que desejar utilizar seus computadores excedentes em tarefas numéricas. Com base na experiência do ParallelKnoppix, o desenvolvedor se dedicou bastante à abordagem simplista do PelicanHPC para construir um cluster do zero em pouquíssimo tempo. As possibilidades de customização são a cereja do bolo e fazem do PelicanHPC uma plataforma ideal para criar seu próprio ambiente de cluster personalizado. n
Mais informações [1] PelicanHPC: http://pareto.uab.es/mcreel/PelicanHPC/ [2] GNU Octave: http://www.gnu.org/software/octave/ [3] Estimativa de densidade na Wikipédia (em inglês): http://en.wikipedia.org/wiki/Kernel_density_estimation [4] Download do ParallelKnoppix: http://pareto.uab.es/mcreel/PelicanHPC/download [5] SciPy e NumPy: http://scipy.org/ [6] Tutorial MPI: http://www.uniriotec.br/~adriana/MPI/MPI.html [7] Peter Pacheco, “Parallel Programming with MPI”: http://cs.usfca.edu/mpi/ [8] FAQ do OpenMPI: http://www.open-mpi.org/faq/?category=mpi-apps
Sobre o autor Mayank Sharma já escreveu para várias publicações de Linux, incluindo Linux.com, IBMdeveloperWorks e Linux Format, e já publicou dois livros sobre administração de Elgg e Openfire. Eventualmente ele ensina tecnologias de Código Aberto. Seu site é http://www.geekybodhi.net.
Gostou do artigo?
O resto do script lida com aspectos internos do PelicanHPC e não deve ser alterado, a menos que você saiba o que está fazendo. Porém,
Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2954
53
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Gerenciamento de pacotes e repositórios no OpenSolaris
TUTORIAL
OpenSolaris, parte 4 O gerenciamento de pacotes no OpenSolaris é diferente daquele do Linux, mas isso não significa que seja difícil. por Alexandre Borges
Agata Urbaniak – www.sxc.hu
S
em dúvida, uma importante modificação em termos de tecnologia implementada no OpenSolaris é o gerenciamento de pacotes usando o IPS (Image Packaging System, Sistema de Empacotamento de Imagens). Esse novo
sub-sistema muda completamente a forma como se faz o gerenciamento de pacotes em relação ao procedimento no Solaris e torna tudo muito mais simples. O modo mais adequado de abordar esse assunto é lidar com a parte ope-
Listagem 1: Comando pkg list # pkg list | more NAME (AUTHORITY) BRCMbnx FSWxorg-fonts-core NVDAgraphics SUNW1394 SUNWDTraceToolkit SUNWPython SUNWPython-extra SUNWTcl SUNWTiff SUNWTk SUNWa2ps SUNWaac
VERSION 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 2.4.4-0.101 0.5.11-0.101 8.4.18-0.101 0.5.11-0.101 8.4.18-0.101 4.13-0.101 0.5.11-0.101
STATE installed installed installed installed installed installed installed installed installed installed installed installed
UFIX ––––––––––––-
racional e, durante a demonstração, ver alguns conceitos importantes. O objetivo não é, obviamente, esgotar o assunto, mas apenas comentar sobre alguns aspectos principais para que o leitor possa trabalhar melhor com seu sistema. Sempre é necessário saber, em primeiro lugar, quais pacotes estão instalados no sistema. A listagem 1 mostra o uso do comando pkg list. Observe a coluna STATE. Um pacote instalado possui a palavra installed nesse campo. Também é possível listar todos os pacotes instalados e os disponíveis para instalação. O comando é quase o mesmo, exceto por uma opção: pkg list -a (listagem 2). Os pacotes cujo campo STATE contenha a palavra known são aqueles disponíveis para instalação. Quando é necessário fazer uma busca para verificar se um pacote específico está instalado, deve-se executar uma variação do comando acima:
54
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
OpenSolaris | TUTORIAL
# pkg list SUNWzone
É provável que sejam necessárias mais informações sobre um determinado pacote instalado. Para isso, usa-se o comando pkg info (lis tagem 3). Algumas linhas necessitam de explicação adicional: Authority: indica qual site (repositório) disponibiliza o pacote; Branch Version: indica um número de controle do desenvolvimento do pacote. Pode ser útil no caso de alterações ao software; F MRI: fault management resource identifier. É uma maneira de descrever recursos do OpenSolaris, introduzida no Solaris 10. Pode apontar para um hardware, um serviço ou ainda um pacote, como no caso anterior. Neste ponto, é fundamental não confundir os conceitos de autoridade e repositório. Vale salientar que a autoridade é uma pessoa, grupo ou corporação que disponibiliza um pacote, enquanto que um repositório é o local onde esses pacotes estão disponíveis, geralmente indicado por uma URL. Vamos analisar a FMRI do pacote especificado, pkg:/SUNWzfs@ 0.5.11,5.11-0.101:20081119T231630Z: pkg: indica tratar-se de um pacote; S UNWzfs: indica o nome do pacote; 0 .5.11: conhecido como “component version”, especifica a versão do projeto usada para criação do pacote; 5.11: versão base do sistema operacional usado para criar o pacote. Muitas vezes, ela é necessária para determinar a compatibilidade do software, pois representa a versão mínima do sistema operacional na qual este pacote pode ser instalado. Neste caso, o OpenSolaris serve como base do futuro Solaris 11 a ser lançado pela Sun; 0 .101: número de controle para o desenvolvimento do pacote;
20081119T231630Z: data e hora em que este pacote foi adicionado no repositório de pacotes.
Pode ser preciso ver as informações de um pacote disponível (com o valor known no campo STATE). A listagem 4
Listagem 2: Comando pkg list -a # pkg list -a NAME (AUTHORITY) SUNWesu SUNWesws2 SUNWesxwsvr SUNWeu8os SUNWeuluf SUNWeupdatemgru SUNWeuxwe SUNWevolution SUNWevolution-data-server SUNWevolution-exchange
VERSION 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101 0.5.11-0.101
STATE installed known known known known known known installed installed installed
UFIX –––––––––-
Listagem 3: Comando pkg info # pkg info SUNWzfs Name: SUNWzfs Summary: ZFS Category: System/File System State: Installed Authority: opensolaris.org Version: 0.5.11 Build Release: 5.11 Branch: 0.101 Packaging Date: Wed Nov 19 23:16:30 2008 Size: 4.21 MB FMRI: pkg:/SUNWzfs@0.5.11,5.11-0.101:20081119T231630Z
Listagem 4: Informações de um pacote # pkg info -r SUNWGtk Name: SUNWGtk Summary: GTK - The GIMP Toolkit Category: Applications/Graphics and Imaging State: Not installed Authority: opensolaris.org Version: 1.2.10 Build Release: 5.11 Branch: 0.101 Packaging Date: Wed Nov 19 21:39:37 2008 Size: 1.34 MB FMRI: pkg:/SUNWGtk@1.2.10,5.11-0.101:20081119T213937Z
55
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | OpenSolaris
demonstra essa situação. Note que o campo State desse pacote indica que ele não está instalado. Eventualmente, quando se suspeita de que algo não está funcionando como esperado, é conveniente verificar se o pacote foi realmente instalado de forma cor-
reta e se nada está atrapalhando sua operação: # pkg verify SUNWTk
Uma saída vazia significa que o pacote foi instalado corretamente e não há qualquer erro associado a
Listagem 5: Listar o conteúdo de um pacote # pkg contents SUNWcups PATH etc etc/cups etc/cups/command.types etc/cups/cupsd.conf etc/cups/interfaces etc/cups/mime.convs etc/cups/mime.types etc/cups/ppd etc/cups/snmp.conf etc/cups/ssl etc/dbus-1 etc/dbus-1/system.d etc/dbus-1/system.d/cups.conf etc/security usr usr/bin usr/bin/cups-config
Listagem 6: Listagem completa do conteúdo do pacote # pkg contents –m SUNWcups license 03c3b684dcac3c8b4701f01800c661bc7e59970a chash=279cd69cf7802 9639d3058ca9ffcfc248c23191d license=SUNWcupsr.copyright pkg. csize=13998 pkg.size=51314 transaction_id=1227131953_ pkg%3A%2FSUNWcups%401.3.7%2C5.11-0.101%3A20081119T215913Z license 03c3b684dcac3c8b4701f01800c661bc7e59970a chash=279cd69cf7802 9639d3058ca9ffcfc248c23191d license=SUNWcupsu.copyright pkg.csize=13998 pkg.size=51314 transaction_id=1227131953_ pkg%3A%2FSUNWcups%401.3.7%2C5.11-0.101%3A20081119T215913Z set name=description value=CUPS set name=info.classification value=org.opensolaris. category.2008:System/Printing set name=authority value=opensolaris.org set name=fmri value=pkg:/SUNWcups@1.3.7,5.11-0.101:20081119T215913Z depend fmri=SUNWkrb@0.5.11-0.101 type=require depend fmri=SUNWslp@0.5.11-0.101 type=require
esta operação. Não é incomum o comando pkg verify apontar algum erro. Neste caso, sugere-se corrigir a situação com o comando pkg fix da seguinte maneira: # pkg fix SUNWtk
Em geral, este comando corrige qualquer erro associado à instalação do pacote em questão. Todo pacote é composto por arquivos, diretórios, links e ações (operações que o IPS executa e aplica ao sistema quando um pacote é instalado ou removido). Para observar o conteúdo de um pacote listando apenas os arquivos, deve-se usar o comando pkg contents (lista gem 5). Para listar todo o conteúdo, incluindo as ações que fazem parte deste pacote, basta usar a opção -m, como na listagem 6. No início da saída do comando, há o aspecto do licenciamento. Caso seja interessante ter informações sobre licenças de um determinado pacote, o comando pkg info pode oferecer mais detalhes: # pkg info -license -r SUNWcups
A saída desse comando é bem longa e explica os termos da licença aplicada ao pacote.
Instalação
Até agora não foi explicado o mais importante: como instalar um pacote. Esta tarefa é bem simples, mas é importante conferir, antes dela, se um pacote está ou não disponível para instalação. A listagem 7 demonstra a procura do software Subversion. Ela mostra que existem múltiplos pacotes do Subversion, mas só temos interesse em um deles – SUNWsvn. Uma outra maneira ainda mais fácil é entrar no site de pacotes do OpenSolaris [1] e usar o mecanismo de busca disponibilizado pela comunidade do OpenSolaris.
56
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
OpenSolaris | TUTORIAL
Para instalar o pacote SUNWsvn, executa-se o seguinte comando: # pkg install SUNWsvn
Caso o pacote possua algum tipo de dependência, ela será resolvida e instalada juntamente com ele. Além do repositório principal do OpenSolaris [2] – que possui uma autoridade responsável pelo seu gerenciamento –, que permite procurar e instalar pacotes, há vários outros, como Blastwave [3], o de desenvolvimento [4], o de pacotes contribuídos pela comunidade [5] e o de softwares livres distribuídos pela Sun [6]. Eles oferecem uma ampla diversidade de pacotes, bastando apontar para qualquer um deles, buscar um pacote e em seguida instalá-lo (listagem 8). Depois da busca, o procedimento de instalação deve ser seguido da mesma forma descrita anteriormente. Apesar de improvável, é possível que o índice de procura esteja corrompido por algum motivo. Se isso ocorrer, o comando pkg search irá acusar o erro; em seguida, deve-se reconstruir o índice com o seguinte comando:
seja excluído do sistema, sendo que, para forçar sua remoção e de todas as dependências, é necessário usar o comando: # pkg uninstall –r nome_do_pacote
Repositórios
Vale a pena mencionar que todos os pacotes, por padrão, são obtidos a partir do mesmo repositório. Todavia,
é possível adicionar outros repositórios no OpenSolaris de forma que, deste ponto em diante, operações de procura sejam feitas em todos os repositórios incluídos. Para verificar quais repositórios estão presentes, basta usar o comando pkg authority (listagem 9). Para adicionar um novo repositório (com sua respectiva autoridade), o comando adequado é o pkg set-authority (listagem 10). E para removê-lo:
Listagem 7: Busca do pacote do Subversion # pkg search SUNWsvn* INDEX ACTION VALUE depend depend SUNWsvn-perl@1.4.3-0.101 depend depend SUNWsvn@1.4.3-0.101 depend depend SUNWsvn-java@1.4.3-0.101 depend depend SUNWsvn-python@1.4.3-0.101
PACKAGE pkg:/entire@0.5.11-0.101 pkg:/entire@0.5.11-0.101 pkg:/entire@0.5.11-0.101 pkg:/entire@0.5.11-0.101
Listagem 8: Busca de pacote num repositório # pkg search -s http://blastwave.network.com:10000 nessus INDEX ACTION VALUE PACKAGE basename dir opt/csw/include/nessus pkg:/IPSnessuslib@0.5.11-2.6 basename dir opt/csw/var/nessus pkg:/IPSlibnasl@0.5.11-2.6 basename file opt/csw/bin/nessus pkg:/IPSnessus@0.5.11-2.6 basename dir opt/csw/var/nessus pkg:/ IPSnessusplugins@0.5.11-2.6
# pkg rebuild-index
Listagem 9: Listagem dos repositórios ativos
Remoção
Foi apresentado anteriormente o procedimento de instalação de pacotes. Vejamos agora como remover um pacote. De forma simplificada, o comando é:
# pkg authority AUTHORITY opensolaris.org (preferred)
# pkg uninstall SUNWsvn
Listagem 10: Adição de um novo repositório
Infelizmente, a remoção de pacotes não é tão simples quando a instalação, já que muitas vezes existem dependências associadas ao pacote. Nesses casos, o OpenSolaris não permite que o pacote
URL http://pkg.opensolaris.org/release/
# pkg set-authority –O http://pkg.sunfreeware.com:9000 sunfreeware.com # pkg authority AUTHORITY URL opensolaris.org (preferred) http://pkg.opensolaris.org/release/ sunfreeware.com http://pkg.sunfreeware.com:9000/
57
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | OpenSolaris
# pkg unset-authority sunfreeware. com
Gerenciamento gráfico Não menos importante do que todos esses comandos, ainda é possível (como descrito no primeiro artigo desta série [7]) fazer todo o gerenciamento de pacotes usando o utilitário gráfico Package Manager (figura 1). Para acessá-lo, basta ir ao menu System | Administration | Package Manager.
O gerenciamento de pacotes no OpenSolaris não é diferente daquele do Solaris. Já no gerenciamento de patches existem diferenças. No Solaris, toda vez que é necessário aplicar um patch ao sistema, devemos fazer o download do patch e aplicá-lo usando o comando patchadd. No OpenSolaris existe uma ferramenta chamada Update Manager (figura 2) que pode ser utilizada de maneira a atualizar todo o sistema; ou seja, não é mais necessário aplicar patches ao sistema individualmente.
Para executar o UpdateManager, basta acessar o menu System | Administration | Update Manager. A mesma operação de atualização pode ser feita pela linha de comando com o comando: # pkg image-update
IPS avançado
Em muitos momentos, principalmente num ambiente de desenvolvimento intenso onde múltiplas modificações ocorrem a todo instante, talvez seja necessário manter um repositório de pacotes próprio para atuar como ponto focal, no qual todos os pacotes em desenvolvimento possam ser obtidos de forma a facilitar sua distribuição dentro da empresa. Existem duas formas de criar um repositório próprio: a primeira é utilizar o comando pkg.depotd e a segunda é usar comandos SMF (Service Management Facility – vamos abordar este assunto em mais detalhes em um artigo futuro).
Comando pkg.depotd
Figura 1 Gerenciador de pacotes Package Manager.
Listagem 11: Criação de um repositório # svcadm enable application/pkg/server # /usr/lib/pkg.depotd –d /tmp/linuxmagazine –p 11111 [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24] TimeoutMonitor’. [12/Apr/2009:17:46:24] [12/Apr/2009:17:46:24]
INDEX Search Available ENGINE Listening for SIGHUP. ENGINE Listening for SIGTERM. ENGINE Listening for SIGUSR1. ENGINE Bus STARTING ENGINE Started monitor thread ‘_ ENGINE Serving on 0.0.0.0:11111 ENGINE Bus STARTED
A primeira coisa a fazer é iniciar o serviço de repositórios e criar o repositório que será utilizado para armazenar os pacotes (listagem 11). Logo em seguida, é aconselhável verificar com o navegador se o endereço http://localhost:11111 apresenta uma tela anunciando o repositório (figura 3). Outra maneira de verificar se realmente tudo ocorreu bem é demonstrada na listagem 12.
Comandos smf
O procedimento para criação de um repositório por meio dos comandos smf é tão simples quanto o anterior e também é composto por poucos comandos: # svccfg –s application/pkg/server setprop pkg/port=22222
58
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
OpenSolaris | TUTORIAL
# svccfg –s application/pkg/server setprop pkg/inst_root=/tmp /linuxmagazine2 # svcadm refresh application/pkg /server # svcadm restart application/pkg /server
do date sleep 2 done
A terceira etapa é uma das mais críticas, pois é obrigatório informar
as ações que devem ser tomadas para adicionar o pacote com sucesso. Então, precisamos criar um manifesto com um conjunto dessas ações (listagem 13). O conteúdo do arquivo é bem simples e totalmente auto-explicativo.
Do mesmo modo que antes, para averiguar se o repositório foi criado da forma correta, pode-se apontar o navegador para http://localhost:22222 ou executar um simples: ls -l /tmp/linuxmagazine2
Pacotes no repositório
Depois de criar um repositório particular de uma das duas formas diferentes, vamos adicionar pacotes a ele. Aparentemente, pode ser intimidador incluir pacotes no repositório. Entretanto, a chave do processo é que esta inserção tem basicamente duas etapas: p reparação do pacote; e nvio do pacote. O envio do pacote, por sua vez, é subdividido em: a bertura da transação; e nvio do pacote em si; f echamento da transação.
Figura 2 Gerenciador de atualizações Update Manager.
Assim são realizadas essas etapas: Primeiramente, crie alguns diretórios para armazenamento do pacote: # # # #
mkdir /var/linuxmagazine cd /var/linuxmagazine mkdir mypackage cd mypackage
Em seguida, crie um script ou arquivo binário com qualquer nome para incluir no pacote: # vi alexandreborges.sh #!/bin/bash while true
Figura 3 A tela indica que o repositório foi criado com sucesso.
59
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | OpenSolaris
A quarta etapa consiste na exportação do diretório que contém o pacote. Será necessário especificar tanto um número de versão para o pacote quanto um segundo número de versão (subversão). No nosso exemplo, vamos utilizar a versão 1.0 e a subversão 0.1. Mas cuidado: as versões e as subversões não podem ser alteradas depois do comando. # pkgsend -s http:// localhost:11111 open mypackage@1.0-0.1
# ls /tmp/linuxmagazine total 28 drwxr-xr-x 2 root root 107 -rw-r--r-- 1 root root 503 drwxr-xr-x 2 root root 69 drwxr-xr-x 2 root root 503 drwxr-xr-x 2 root root 69 drwxr-xr-x 2 root root 69 drwxr-xr-x 2 root root 69
2009-04-12 2009-04-12 2009-04-12 2009-04-12 2009-04-12 2009-04-12 2009-04-12
17:46 17:46 17:46 17:46 17:46 17:46 17:46
catalog cfg_cache file index pkg trans updatelog
Listagem 13: Arquivo de manifesto
O quinto passo é a execução das ações contidas no manifesto: # pkgsend -s http:// localhost:11111 send mypackage.ips
Enfim, após as cinco etapas anteriores, é hora de fechar a transação: # pkgsend –s http:// localhost:11111 close
# cd /var/linuxmagazine # vi mypackage.ips dir mode=0755 owner=root group=bin path=/var/linuxmagazine/mypackage file mypackage/alexandreborges.sh mode=0555 owner=root group=bin path=/var/linuxmagazine/mypackage/alexandreborges.sh link path=/usr/bin/alexandreborges.sh target=/var/linuxmagazine/ mypackage /alexandreborges.sh depend type=require fmri=SUNWbash
Se tudo funcionou como previsto, sem qualquer mensagem de erro, para instalar nosso pacote devemos percorrer os seguintes passos: # pkg set-authority –O http:// localhost:11111 minhaautoridade # pkg refresh # pkg contents –r mypackage # pkg install mypackage # ls –l /usr/bin/alexandreborges.sh # /usr/bin/alexandreborges.sh
Conclusão
Listagem 12: Verificação do repositório
Mais informações [1] Pacotes para OpenSolaris: http://pkg.opensolaris.org/release/en/index.shtml [2] Repositório de pacotes do OpenSolaris: http://pkg.opensolaris.org/release [3] Repositório Blastwave: http://blastwave.network.com:10000 [4] Repositório de desenvolvimento: http://pkg.opensolaris.org/dev [5] Repositório de pacotes contribuídos pela comunidade: http://pkg.opensolaris.org/contrib [6] Repositório de softwares livres da Sun: http://pkg.sunfreeware.com:9000
O OpenSolaris apresenta uma fantástica oportunidade no mundo open source. O gerenciamento de pacotes é bastante amigável, colocando o OpenSolaris ao lado do Linux como um sistema operacional fácil de usar, útil para as tarefas do dia a dia tanto para o usuário corporativo quanto para o usuário doméstico e, acima de tudo, extremamente rápido. n
[7] Alexandre Borges, “OpenSolaris 2008.11”: http://lnm.com.br/article/2753
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2969
60
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Gerenciamento de identidade integrado com o FreeIPA
REDES
Identidades centralizadas O FreeIPA oferece gerenciamento integrado de identidade e grandes ideias para o futuro. por Thorsten Scherf
O
s sistemas GNU/Linux corporativos empregam uma série de ferramentas padrão para segurança, auditoria e gerenciamento de identidade. Essas ferramentas funcionam bem de forma independente, após serem configuradas, mas na hora da integração, o administrador normalmente precisa improvisar. Recursos como gerenciamento central de logs de auditoria de múltiplas máquinas, assim como a possibilidade de distribuir módulos de política do SELinux para múltiplas máquinas, são frequentemente o domínio de scripts caseiros. Apesar de existirem diversas soluções proprietárias, elas geralmente são caras e pouco flexíveis. O projeto FreeIPA [1] é um esforço para combinar vários projetos populares de código aberto num sistema comum e unificado. As letras IPA significam Identidade, Políticas e Auditoria, mas os desenvolvedores usam-na claramente com vistas aos objetivos futuros. A atual ênfase é no gerenciamento de identidade, com suporte a Kerberos e LDAP. Versões futuras vão oferecer o gerenciamento de certificados de segurança e configuração centralizados, assim como recursos de políticas e auditoria. A figura 1 mostra os componentes individuais da versão 1 do FreeIPA e a forma como elas cooperam. A
combinação do LDAP com o Kerberos significa que o FreeIPA pode ser facilmente integrado ao Microsoft Active Directory. Embora o mundo GNU/Linux ofereça outras opções para a integração do Active Directory (como Samba e Likewise [2]), o AD em si é apenas uma parte da solução para uma ferramenta completamente integrada de segurança e auditoria. Por exemplo, o AD nada oferece na área de gerenciamento de políticas ou auditoria, o que força o administrador a apelar para outras fontes para essas funções. Muitos usuários GNU/Linux também precisam considerar se é vantajoso deixar sua infraestrutura de segurança de redes nas mãos de uma tecnologia proprietária como o Microsoft Active Directory. O FreeIPA é um trabalho em andamento; os desenvolvedores ainda
não alcançaram todo o potencial dessa ferramenta promissora (veja o quadro 1). A versão atual, no entanto, oferece suporte a LDAP e Kerberos, assim como vários outros recursos úteis. Este artigo explica como trilhar os primeiros passos com o FreeIPA.
No servidor
Antes de começar a instalar o servidor FreeIPA propriamente dito, certifique-se de que todas as máquinas suportam resolução de nomes por DNS. Acrescentar alguns registros de serviço (SRV) ao servidor DNS já em operação simplificará a configuração dos clientes por permitir que uma requisição DNS descubra o servidor responsável e o domínio (realm) do Kerberos. Ao instalar o servidor FreeIPA, ele criará um arquivo de zona DNS de
Figura 1 Ferramentas populares de código aberto que rodam sob o guardachuva do FreeIPA.
61
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
REDES | FreeIPA
Quadro 1: Caminho futuro O foco da atual versão 1 do FreeIPA é o gerenciamento de identidades de usuários e grupos. É fácil migrar soluções NIS já existentes para o FreeIPA em busca de um ambiente mais seguro com LDAP e senhas Kerberos. A versão de desenvolvimento já oferece sincronização com servidores AD já em operação; na verdade, a integração com o Active Directory deve estar disponível no FreeIPA no momento em que este artigo for publicado. A versão 2, que está planajeada para o início do próximo ano, contará com recursos adicionais. O gerenciamento de identidades será estendido para lidar com contas de máquinas. Outro recurso no roadmap é uma Autoridade Certificadora (CA) para emitir certificados para usuários e serviços. Evidentemente, os dois componentes IPA que ainda
exemplo com todos os itens necessários. Você pode basear suas próprias extensões do servidor DNS nesse arquivo (listagem 1). Para instalar o servidor FreeIPA num sistema Fedora, basta digitar yum -y install ipa-server. O servidor e todos os pacotes necessários estão disponíveis nos repositórios padrão desde o Fedora 8. Depois de instalar, é preciso executar ipaserver-install para configurá-lo. Se você preferir criar um arquivo de zona DNS pessoalmente, basta usar a opção --setup-bind ao executar a ferramenta. Essa etapa cria um arquivo de zona no diretório tmp/. Esse comando instala os seguintes componentes na máquina: N TP; F edora Directory Server; M IT Kerberos; A pache/TurboGears; e P olítica SELinux do FreeIPA. O programa de instalação pede as informações necessárias (por exemplo, o base DN do LDAP, o domínio do Kerberos, o nome do servidor); poucos minutos depois, o servidor e todos os seus componentes já estarão prontos para o show. Em seguida, digite kinit admin e peça um tíquete de usuário para o
faltam – Políticas (P) e Auditoria (A) – ainda precisam ser incluídos. O componente de políticas fará mais que apenas o gerenciamento de regras do SELinux. O roadmap dos desenvolvedores também inclui o gerenciamento centralizado das configurações do PAM, com pam_access, pam_time e pam_limits. Também será mais fácil atribuir privilégios de usuário pelo sudo, pois o administrador conseguirá gerenciar essas configurações de forma centralizada com o FreeIPA. Os componentes de auditoria acessam primariamente as funções dos daemons de auditoria populares, para garantir que obedeçam às políticas já existentes de identidade. Claro que a implantação de uma regra central de auditoria incluirá a coleta de eventos de auditoria em máquinas individuais. Esses eventos serão registrados no servidor FreeIPA para fins de relatório e avaliação.
Listagem 1: Extensões DNS 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
$TTL 86400 @ IN SOA devel‑srv1.xyz.com. root.devel‑srv1.xyz.com. ( ; Dont forget to increment the serial number 2003040100 ;serial number 1H ;refresh slave 5M ;retry refresh 1W ;expire zone 5M ;cache time‑to‑live for negative answers ) ; Name server resource records ( NS ) ; owner TTL CL type RDATA @ IN NS devel‑srv1.xyz.com. ; Internet address resource records( A ) ; owner TTL CL type RDATA devel‑srv1 IN A 192.168.122.100 ; ldap servers ldap._tcp IN SRV 0 100 389 devel‑srv1.xyz.com. ;kerberos realm kerberos IN TXT ; kerberos servers kerberos._tcp kerberos._udp kerberos‑master._tcp kerberos‑master._udp kpasswd._tcp kpasswd._udp ;ntp server ntp._udp
XYZ.COM IN IN IN IN IN IN
SRV SRV SRV SRV SRV SRV
0 0 0 0 0 0
IN SRV 0 100 123
100 100 100 100 100 100
usuário admin para verificar se o servidor Kerberos está funcionando adequadamente.
88 88 88 88 464 464
devel‑srv1.xyz.com. devel‑srv1.xyz.com. devel‑srv1.xyz.com. devel‑srv1.xyz.com. devel‑srv1.xyz.com. devel‑srv1.xyz.com.
devel‑srv1.xyz.com.
A chamada a seguir adiciona um novo usuário ao servidor de diretórios e Kerberos:
62
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
FreeIPA | REDES
Listagem 2: Consulta ao servidor 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[root@devel‑srv1 ~]# ldapsearch ‑Y GSSAPI uid=tscherf ‑LLL SASL/GSSAPI authentication started SASL username: admin@XYZ.COM SASL SSF: 56 SASL installing layers dn: uid=tscherf,cn=users,cn=accounts,dc=xyz,dc=com uid: tscherf objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: inetUser objectClass: posixAccount objectClass: krbPrincipalAux objectClass: radiusprofile loginShell: /bin/sh gidNumber: 1002 gecos: tscherf sn: Scherf homeDirectory: /home/tscherf krbPrincipalName: tscherf@XYZ.COM givenName: Thorsten cn: Thorsten Scherf uidNumber: 1100 memberOf: cn=ipausers,cn=groups,cn=accounts,dc=xyz,dc=foo,dc=de
# ipa-adduser -f Thorsten -l Scherf tscherf Password: Password (again): tscherf successfully added
# ipa-finduser tscherf Full Name: Thorsten Scherf Home Directory: /home/tscherf Login Shell: /bin/sh Login: tscherf
Se a sua senha estiver de acordo com a política de complexidade de senhas, o ipa-finduser encontrará a conta do usuário, que agora existe no servidor de diretórios:
Se forem necessárias mais informações sobre os atributos LDAP, é possível, evidentemente, criar uma conexão autenticada pelo Kerberos com o servidor LDAP para consul-
tar nele as informações necessárias (listagem 2). A ferramenta klist agora exibe o tíquete de serviço transferido do servidor LDAP: [root@devel-src1 ~]# klist -5 Ticket cache: FILE:/tmp/krb5cc_O Default principal: admin@XYZ.COM Valid starting Expires Service principal 19/09/08 13:57:28 20/09/08 13:57:26 krbtgt/XYZ.COM@XYZ.COM 19/09/08 13:57:42 20/09/08 13:57:26 ldap/devel-srv1.xyz.com@ XYZ.COM
Obviamente, existe uma interface web para manipular mais facilmente todas essas tarefas (figura 2), mas é preciso configurar o navegador web. O Firefox exibe a configuração atual ao se visitar a URL about:config. Os seguintes comandos precisam ser customizados: network.negotiate-auth.trusteduris .xyz.com network.negotiate-auth.delegationuris .xyz.com network.negotiate-auth.usingnative-gsslib trye
Após abrir uma conexão HTTPS com o servidor FreeIPA, é fácil criar ou consultar contas de usuários por meio da interface web.
Configuração do cliente Existe um cliente FreeIPA disponível para Fedora, Red Hat Enterprise Linux (RHEL) e diversas variedades de Unix, incluindo Solaris, AIX, HPUX e Mac OS X. A instalação em sistemas Fedora é simples e pode ser feita com o yum: Figura 2 A interface web facilita a inclusão de usuários ao diretório.
yum install ipa-client ipaadmintools
63
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
REDES | FreeIPA
Se, depois disso, o arquivo de configuração do Kerberos /etc/krb5.conf for transferido do servidor para o cliente, basta executar ipa-client-install para iniciar a instalação do cliente. Graças à linha dns_lookup_realm=true em /etc/krb5.conf, o cliente pedirá ao seu servidor DNS todas as informações de configuração necessárias (listagem 3). Para testar a conexão com o servidor, use o comando kinit admin no cliente; se tudo funcionar, a próxima etapa é configurar uma máquina para atuar como principal para o cliente no banco de dados do Kerberos, armazenando a senha localmente no lado cliente: # ipa-addservice host/develclient.xyz.com # ipa-getkeytab host/devel-client. xyz.com -k /etc/krb5.keytab Keytab successfully retrieved and stored in: /etc/krb5.keytab
Serviços do Kerberos
A próxima etapa é configurar um serviço para funcionar com o Kerberos. Primeiro, considere o exemplo de um servidor NFS que deva ser acessado pelas máquinas clientes por meio do protocolo seguro NFSv4 com autenticação pelo Kerberos. O servidor será o responsável por assegurar a integridade dos dados e a privacidade. Para permitir que isso ocorra, é preciso configurar um compartilhamento NFS no servidor IPA: # cat /etc/exports /dados gss/krb5(rw,fsid=0,subtree_ check) /dados gss/ krb5p(rw,fsid=0, subtree_check) /dados gss/ krb5i(rw,fsid=0, subtree_check)
Para ativar todos os serviços necessários para o NFS, execute ainda:
Listagem 3: Instalação do cliente 01 [root@devel‑client ~]# ipa‑client‑install 02 Discovery was successful! 03 Realm: XYZ.COM 04 DNS Domain: xyz.com 05 IPA Server: devel‑srv1.xyz.com 06 BaseDN: dc=xyz,dc=com 07 08 Continue to configure the system with these values? [y/N]: y 09 10 Created /etc/ipa/ipa.conf 11 Configured /etc/ldap.conf 12 LDAP enabled 13 nss_ldap is not able to use DNS discovery! 14 Changing configuration to use hardcoded server name: devel‑srv1. xyz.com 15 Kerberos 5 enabled 16 NTP enabled 17 Client configuration complete.
service nfs start echo SECURE_NFS=yes > \ /etc/sysconfig/nfs
Em seguida, é preciso criar um principal para o serviço NFS no banco de dados do Kerberos e exportá-lo para o arquivo keytab do servidor: # ipa-addservice nfs/devel-srv1. xyz.com # ipa-getkeytab nfs/devel-srv1. xyz.com -k /etc/krb5.keytab Keytab successfully retrieved and stored in: /etc/krb5.keytab
A configuração do cliente é bem semelhante. Se você realizar as mesmas etapas para criar um principal para o serviço NFS e armazená-lo localmente no arquivo /etc/krb5. keytab, o comando ipa-find-service dirá se ele funcionou ou não. O comando ipa-findservice listará todas as máquinas e principals de serviços que constarem no arquivo keytab. Para garantir que os serviços clientes do NFS – rpcgssd e rpcidmapd – sejam corretamente iniciados, é preciso acrescentar a linha SECURE_NFS=yes ao arquivo /etc/sysconfig/nfs. Agora já podemos montar o volume NFSv4 seguro:
# mount -v -t nfs4 -o sec=krb5p devel-srv1:/ /mnt/nfs4
Note que o FreeIPA armazena toda a configurção do Kerberos no LDAP (figura 3). Em razão de as ferramentas nativas do Kerberos, como kadmin e kadmin.local, não oferecerem uma interface LDAP nativa, não é possível usá-las para gerenciar o banco de dados do Kerberos. Em vez disso, o administrador sempre precisará usar as ferramentas FreeIPA para tarefas administrativas.
Figura 3 O FreeIPA armazena o ban-
64
co de dados do Kerberos em um contêiner LDAP.
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
FreeIPA | REDES
Alta disponibilidade
Depois de terminar a configuração básica do servidor, é bom replicar os dados do servidor de diretório numa segunda máquina. Como o FreeIPA armazena toda a configuração do Kerberos e também o banco de dados do Kerberos no LDAP, essa replicação oferece um segundo servidor mestre em pouco tempo. Em caso de falhas no servidor mestre, o mestre secundário ainda possui todos os dados, sendo até possível alterar esses dados. Após o mestre primário voltar à ativa, os dados modificados são replicados para ele. Usar dois servidores também é uma boa ideia para realizar balanceamento de carga. Se os dados forem armazenados em dois locais geográficos diferentes, recomenda-se configurar mais servidores como réplicas para evitar o uso de uma conexão WAN lenta a cada consulta ou alteração do diretório. O mestre primário tem um arquivo de configuração com todas as informações necessárias para criar um segundo servidor: # ipa-replica-prepare devel-srv2. xyz.com
Em seguida, simplesmente copie o arquivo criado na última etapa para a máquina réplica e inicie a instalação nela: # scp /var/lib/ipa/replica-infodevel-srv2.xyz.com root@develsrv2:/tmp/ # ipa-replica-install /tmp/ replica-info-devel-srv2.xyz.com
Supondo que o programa de instalação tenha terminado sem erros, já se pode iniciar a replicação do banco de dados LDAP. Se for atribuída um arquivo separado de zona DNS para a réplica, temos dois servidores independentes. Usando o ipa-replica-
manage, é possível visualizar e modi-
ficar todos os acordos de replicação realizados dessa forma.
Sincronização com AD O administrador pode usar o ipa-replica-manage para sincronizar os dados entre um servidor Windows Active Directory e um servidor FreeIPA. A versão atual de desenvolvimento já implementa esse recurso. Para isso, é necessário um certificado TLS/SSL no servidor Windows; ele é obrigatório para sincronizar os dados do AD para o FreeIPA. O wiki do Fedora tem um Howto [3]. Em seguida, copie para o servidor FreeIPA o certificado CA usado nessa etapa, para verificar o certificado TLS/SSL do servidor AD. Ao iniciar o programa ipa-server-install, o plugin do Windows Sync é automaticamente instalado. Porém, o plugin não é usado a menos que seja configurada a replicação de dados entre um servidor Windows e um FreeIPA com o ipa-replica-manage. A ferramenta tem várias novas opções: winsync – define a replicação de dados entre um servidor Windows e um FreeIPA; b inddn – define a conta do usuário para fazer login no AD. Esse
usuário precisa de vários privilégios (leitura, gravação, procura, alteração de senha, DirSync); b indpw – especifica uma senha para a conta de usuário especificada; c acert – define um caminho para o certificado CA codificado em ASCII/PEM usado para assinar o certificado TLS/SSL do servidor Windows. Esta configuração depois é gravada no repositório de certificados do FreeIPA.
Após fornecer as informações exigidas, o contêiner do usuário do AD é sincronizado com o servidor FreeIPA. Dessa forma, todos os clientes IPA Unix/Linux já podem acessar essas informações por uma interface nativa. Como o processo de sincronização é unidirecional, os novos usuários que possuam contas tanto nos clientes Windows quanto Linux precisam primeiramente ser criados no AD.
Conclusões
O FreeIPA unifica várias ferramentas populares sob um mesmo guarda-chuva. A versão 1 tem foco em armazenar identidades. Apesar de ainda faltarem componentes como certificados, auditoria e gerenciamento de políticas, é fácil ver a direção do produto. n
Mais informações [1] FreeIPA: http://www.freeipa.org [2] Walter Neu, “AD e Likewise Open”: http://lnm.com.br/article/2534 [3] Howto de sincronização com Windows: http://directory.fedoraproject.org/wiki/Howto:WindowsSync
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2957
65
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Criptografia de pen drive
Rodolfo Olix – www.sxc.hu
SEGURANÇA
Pen drive seguro Perder um pen drive é fácil demais. Proteja seus dados para evitar que caiam em mãos erradas. por Kristian Kissling
M
uitos usuários guardam dados importantes em pendrives. Podem ser senhas, endereços de email, planilhas ou outras informações confidenciais. Para as empresas, isso representa um risco significativo, pois se o pendrive for extraviado, os dados podem fornecer informações que podem ser usadas contra a própria empresa ou até contra seus clientes e fornecedores. Este artigo mostra como criptografar dados em qualquer pendrive, uma medida que deveria fazer parte das obrigações de toda empresa. A criptografia elimina a preocupação de guardar dados valiosos em pendrives. Graças à infraestrutura de mapeamento de dispositivos introduzida no kernel 2.6, o Linux agora permite adicionar um escudo protetor aos sistemas de arquivos. O módulo do kernel dm_crypt usa esse conceito para encapsular sistemas de arquivos com uma camada de criptografia. Para
montar a partição no disco rígido, primeiro é preciso remover a proteção informando a senha correta. Pendrives criptografados deste modo funcionam apenas com um kernel que possua o módulo dm_crypt; eles não funcionarão no Windows. O módulo também precisa conhecer e saber usar o método de criptografia; por exemplo, o kernel 2.6.24 pode usar opcionalmente o algoritmo aes-xts-plain, que não existia na versão anterior do Linux. Isso significa que um pendrive criptografado com aes-xts-plain no Ubuntu 8.04 não será montado no Ubuntu 7.10, porém um pendrive criptografado nas versões anteriores funcionará em versões recentes.
Criptografia de pendrive O pacote cryptsetup é necessário tanto para criptografar quanto para descriptografar uma partição. É possí-
Figura 1 Colete à prova de balas: o Cryptsetup permite encapsular a partição /dev/sdb1 numa camada de proteção.
vel criptografar discos rígidos inteiros e partições, mas tenha cuidado: se você digitar acidentalmente /dev/sda1 em vez de /dev/sdb1, não conseguirá acessar sua partição raiz. Também é necessário formatar a partição antes de criptografá-la, o que apagará todos os seus dados contidos nela. Os exemplos a seguir utilizam sdz para representar o dispositivo do pendrive. Certifique-se de substituí-lo pelo dispositivo correto na sua máquina. Use o fdisk ou o cfdisk para apagar qualquer partição que já exista no pendrive e em seguida criar uma nova partição primária. Em seguida, é bom gravar dados aleatórios na nova partição (sdz1): # dd if=/dev/urandom of=/dev/sdz1 bs=4K
Os dados aleatórios evitam dar qualquer pista para potenciais ataques a respeito do conteúdo e do tamanho dos dados criptografados. Se o processo estiver lento demais, altere o tamanho do bloco, de 4 KB para, por exemplo, 1 MB, trocando o parâmetro bs=4K por bs=1M. Em seguida, carregue o módulo dm_crypt com modprobe dm_crypt. Agora use a ferramenta cryptsetup e o mapeador de dispositivos para criar a camada de proteção (figura 1): $ sudo cryptsetup -yvh sha256 -c aes-xts-plain -s 256 luksFormat /dev/sdz1
66
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304). LM57 66
07/08/09 19:39
A opção -yvh sha256 pede a senha duas vezes e a salva em um hash de 256 bits. A opção -c permite especificar o método de criptografia. Este exemplo usa o algoritmo AES XTS com uma chave de 256 bits (-s 256). Para usar o pendrive em sistemas com versões do kernel anteriores à 2.6.24, selecione -c aes-lrw-benbi como algoritmo de criptografia. Para versões anteriores à 2.6.20, escolha -c aes-cbc-essiv:sha256. O comando luksFormat, que inicializa a partição, é parte do padrão LUKS (veja o quadro 1). É necessário definir uma senha. O segundo passo é usar o comando luksOpen para acessar a partição criptografada (listagem 1, linha 1). É permitido escolher qualquer nome (pendrive, neste caso) ao montar a partição pelo mapeador de dispositivos. Depois de digitar o comando, o cryptsetup pede a senha recémcriada. Será necessário repetir esse comando sempre que se quiser montar o pendrive criptografado. Feito isso, já é possível enxergar o conteúdo da partição pelo ponto de montagem /dev/mapper/pendrive, mas ela ainda não contém um sistema de arquivos. Para criar um sistema Ext3 normal, digite mkfs.ext3 /dev/ mapper/pendrive (listagem 1, linha 2). Em seguida, monte a partição (listagem 1, linha 3). Montado no diretório /mnt/, o pendrive pode precisar de uma pequena REDES:
T p.52 muita de IP MULTICAS fluxo .
economizar um únicodestinatários É possível EDIÇÃO: p.44 enviando NESTAde rede eficaz banda para múltiplos p.48 to p.58 pacotes TAMBÉM o Dogtag p.72 balanceameno OpenSolaris s com SQL Reactor » PePLink: dominando centralizado com SSL de dados » Continue E.COM.BR ao banco » Certificados fácil XMAGAZIN » Acesso
VEJA
Use somente autenticarem firewall que se usuários
no
A VPN
p.64
portas dos ÇA: DISPENSE abrir para sucesso. as máquinas SEGURAN com o Portsmith para
A REVISTA
DO PROF
ISSIONAL
DE TI
# 56
IPS Fundamentos ao aproveitar um sistema para de qualidades
p.66 E IDS A: IPS práticas as SEGURANÇe melhores e IDS. máximo
Controle de rede WebHTB. clientes e competente
DE BANDA LIMITEde rede dos REDES:a banda com o fácil
O?
ADEQUADO AO USO MANTENHA AMEAÇA UMA EMPRESA. ÇÃO É p.29 SUA DE TI. TI DA A DESORGANIZA DE SEU PARQUE SOBRE DOS RECURSOS p.30 p.36 O CONTROLE NagVis GLPI com o com o p.42 e bonita script sob controle clara de TI » Rede por shell conversam » Infraestrutura e AD » Samba p.62
SOLUÇÃ
TEM
p.24 MICROSOFT E SL esforços da Como andam osno mundo MS no Brasil e
A REVISTA
COMPARATIVO
INFRAESTRUTURA
NUVEM
DE TI
VIRTUALIZAÇÃ O IP MULTICAST
SAMBA + AD + SHELL
FIREWALL
IPS/IDS
AUTENTICAÇÃ O
LINUX-LIBR
WEBHTB
OPENSOLARI S
E
OPENSOLARIS
PHP SQL
GNU + LINUX
CERTIFICADO
JAVA VM
M.BR
NS 16:33
REDES: WIN
SAMBA4WI
AGAZINE.CO
RIS
WWW.LINUXM
OPENSOLA
p.74 Todo laptop está em risco. Use o Adeona para rastrear seu computador e recuperá-lo.
TI
RISCO
AL DE
FISSION
DO PRO
dados e m
A REVISTA
TV + PC Entrevista+ SL p.28 do inova com o criador dor iBlog TV
08/07/09 14:21
VEJA TAM BÉM
29/04/09
NESTA EDI » Ataques auto ÇÃO: » Novo colu matizados a prot ocol nista: Alex » Linux andre Borg osIp.16 não é es p.18 » OpenSola Sofware Livre p.62 ris: Dom ine o siste ma aber to da Sun p.65
ial completo p.29 : Servidor » Compara de arquivos mos todo p.30 s os siste mas de arqu » Btrfs, a ivos! p.40 próxima geração » ZFS no p.46 Linux com oFUSE p.50 » Nove solu ções de becape p.54
ER COM PUTADOR PODE SER SEGURA NÇA, QUA VIR ARQ UIVOS, MAS LIDADE É PRECISO LIVRE, FICA E RAPIDEZ. COM GARANT LINUX E MUITO MAI IR SOFTWA S FÁCIL. » Tutor RE
QUALQU
» Ataques automatizados a protocolosIp.16 » Novo colunista: Alexandre Borges p.18 » Linux não é Sofware Livre p.62 » OpenSolaris: Domine o sistema aberto da Sun p.65
VEJA TAMBÉM NESTA EDIÇÃO:
RELATO Maddog DE PROBLEMA p.26 um prob explica como relat lema para ar obter ajuda
S NO Resolver nomes NetB LINUX p.70 SEG Samba já IOS com URANÇA: é possível PER Todo lapto e fácil. p está em DEU O LAPTOP risco. Use ? rastrear WWW.LI seu com o Adeona p.74 NUXMAG putador para e recuperá AZINE.CO M.BR -lo.
WWW.LINUXMAGAZINE.COM.BR
Resolver nomes NetBIOS com Samba já é possível e fácil.
REDES: WINS NO LINUX p.70 SEGURANÇA: PERDEU O LAPTOP?
» Nove soluções de becape p.54
» ZFS no Linux com oFUSE p.50
» Btrfs, a próxima geração p.46
» Comparamos todos os sistemas de arquivos! p.40
» Tutorial completo: Servidor de arquivos p.30
QUALQUER COMPUTADOR PODE SERVIR ARQUIVOS, MAS É PRECISO GARANTIR SEGURANÇA, QUALIDADE E RAPIDEZ. COM LINUX E SOFTWARE LIVRE, FICA MUITO MAIS FÁCIL. p.29
2009 # 56 Julho
RISCO
# 54 Maio 2009
# 54 Mai o
2009
11 4082-1300
cryptsetup luksOpen /dev/sdz1 pendrive mkfs.ext3 /dev/mapper/pendrive mount /dev/mapper/pendrive /mnt chmod -R seu_usuario:seu_grupo /mnt cryptsetup luksClose /dev/mapper/pendrive
NE.C XMAGAZI WWW.LINU
ADEONA
e Fundamentos ao máximo as A VPN p.64 para aproveitar e IDS. : DISPENSE s no sistemas IPSURA qualidades de SEG NÇA abrir porta p.52 mith para dos máquinas Use o Ports MULTICAST nte para as sucesso. REDES: IP muita firewall some autenticarem com economizar de É possível que se O: iosEDIÇÃ único fluxo um usuár ndo A s. atário ÉM NEST banda envia TAMB plos destin múltiVEJA renome p.48 uma questão de pacotes para p.52 » GNU e Linux, 02/06/09 você conhece todas? » JVMs para Linux: p.56 os periféric » OpenSolaris e p.72 em Boo, um prazer » Programação
TV + PC + SL p.28 Entrevista com o criador do inovador iBlogTV
dados em
Listagem 1: Criptografando um pendrive
OM.BR
balan p.48 » PePLink: o OpenSolaris g p.58 dominando os com o Dogta » Continue SSL centralizad com SQL Reactor p.72 » Certificados dados ao banco de » Acesso fácil
GLPI
ÃO: NESTA EDIÇeficaz p.44 VEJA TAMBÉM de rede ceamento
NAGVIS
BECAPE
IPS E IDS p.66 SEGURANÇA:melhor es práticas
FUSE-ZFS
Controle a banda fácil e clientes com o . competente WebHTB
BTRFS
BANDA p.62 REDES: LIMITEdeDE rede dos
RK FS’S
p.30 bonita com o NagVis » Rede clara e com o GLPI p.36 de TI sob controle » Infraestrutura shell script p.42 conversam por » Samba e AD
BENCHMA
ADO A AO USO ADEQU ÇÃO É UMA AMEAÇ NHA A DESORGANIZA TI DA SUA EMPRESA. MANTE DE TI. p.29 DOS RECURSOS SEU PARQUE DE O CONTROLE SOBRE
IVOS
SOLUÇÃO?
DE ARQU
PESQ SERVIDOR? ABRIGAR SEU IÇOS. p.27 LHER PARA OS E SERV CENTER ESCO S DE PREÇ QUAL DATA CATEGORIA VOCÊ SABE EM VÁRIAS NACIONAIS p.28 AS OFERTAS rs nacionais o de data cente p.34 nte arativ » Comp ão é difere , a programaç la? p.38 » Na nuvem é preciso evitáo: quando » Virtualizaçã
UISAMOS
OM.BR
MAGAZINE.C
WWW.LINUX
» Programação
p.56 p.72 » GNU para Linux: prazer e periféricos » JVMs Boo, um » OpenSolaris em
azine
COISAS p.28 INTERNET DAS um futuro de Taurion anuncia ectados dispositivos intercon
SERVIDOR
EDIÇÃO: p.48 NESTA de renome p.52 todas? TAMBÉM VEJAe Linux, uma questão conhece você
L DE DO PROFISSIONA
TI
SOFTWARE p.26 QUALIDADE DE para a falta de Maddog alerta de software bons engenheiros
R DATA CENTETME
WWW.LINU
o melhor
» Virtualização
OS
NTER
PESQUISAM SERVIDOR? p.27 SEU E SERVIÇOS. ABRIGAR PARA DE PREÇOS ESCOLHER CATEGORIAS CENTER DATA EM VÁRIAS QUAL p.28 SABE NACIONAIS nacionais p.34 VOCÊ centers diferente p.38 AS OFERTAS de data é evitá-la? é preciso » Comparativoa programação nuvem, : quando » Na
lhor
CE DATA
o me
IRON p.22 IRE VIRTUAL ORACLE ADQU dança no Continua a virtualização mercado de
SL NA CAIX Sucesso A p.24 de códig em vários proje tos o aberto RELATO DE PROBLEMA p.26 Maddog explica como relatar um problema para obter ajuda
A REVISTA DO PROFISSIONAL DE TI A REVISTA DO PROFISSIONAL DE TI #54 05/09
00054
SL NA CAIXA p.22 Sucesso em vários projetos de código aberto
R$ 14,90 € 7,50
9 771806 942009
o 2009 # 55 Junh
te
E E SAAS p.26 s OPEN SOURCn esclarece os efeito Cezar Taurio o Código Aberto do SaaS sobre
Assinan
de
# 55
proibid a
e
Linux Magazin exemplar
RISCO
venda
DADOS EM
proibida
Linux Magazine #57 | Agosto de 2009 exemplar de
2009
Assinante
2009
# 54
venda
de
Os ambientes desktop reagem de maneiras diferentes ao plugarmos um pendrive criptografado. No KDE 4, por exemplo, é preciso clicar no item Volumes no Dolphin para então digitar a senha na janela que se abre. Já o Gnome exibe automaticamente o pedido de senha. Além disso, é importante carregar o módulo dm_ crypt tanto ao criptografar pendrive quanto para lê-lo em qualquer outro sistemaL inux. ■ Linux Mag
nte
Descriptografando 05/2009
proib ida
Com isso, já é possível salvar arquivos normalmente no pendrive criptografado, seja por meio do gerenciador de arquivos, seja por qualquer outra ferramenta comum. Ao final, basta desmontar o pendrive. Para fechar o sistema de criptografia, use o comando luksClose (listagem 1, linha 5). exemplar
LM57_seg_criptografia 67
chmod -R seu_usuário:seu_grupo\ /mnt/ponto/de/montagem venda
# # # # #
Assina
01 02 03 04 05
ORES p.24 DE PROGRAMAD EM BUSCA a como tornar tável Maddog explic auto-susten seu projeto
Criptografia | SEGURANÇA
Quadro 1: LUKS
O nome LUKS significa Linux Unified Key Setup. O padrão LUKS trabalha em conjunto com o módulo do kernel dm_crypt para adicionar um cabeçalho padronizado e especificar um formato para os dados em partições criptografadas. O LUKS é capaz de lidar com múltiplas senhas e é imune a ataques de dicionário.
modificação. Altere o dono dos arquivos contidos no dispositivo com:
BOO
S SSL
zine
Linux Maga
Gostou ddo artigo?
Queremos mos ouvir sua opinião. conosco Fale con co em cartas@linuxmagazine.com.br cartas@linu magaz
Este artigo go no nosso osso site: http://lnm.com.br/article/2959 http:// .com r/art
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
67
10/08/09 18:25
Use o Strace para acelerar a depuração
PROGRAMAÇÃO
Um olhar sobre as chamadas
O
Strace é um pequeno programa muito útil – instalado por padrão na maioria dos sistemas GNU/Linux – que permite observar as chamadas de sistema utilizadas por um aplicativo. Não se deixe enganar pelo nome: o Strace não oferece um stack trace – ele apenas relata as chamadas de sistema. Se você está enfrentando problemas com um aplicativo que você mesmo escreveu – ou qualquer outro que permita acesso ao código-fonte –, é possível usar o Strace para ajudar a determinar onde um programa está falhando e quais problemas ele está enfrentando. Mesmo que você não esteja rastreando um defeito do programa, o Strace é útil porque pode ajudar a entender melhor o que o sistema faz durante a execução do
programa, o que pode ser de grande ajuda no ajuste do desempenho e no gerenciamento dos recursos. Este artigo oferece uma introdução ao Strace por meio da análise de dois programas “Hello World” – um em Perl (interpretado) e outro em C (compilado). No próximo mês, veremos algumas situações mais avançadas e analisaremos mais a fundo a saída gerada pelo Strace.
Sven Golz – www.sxc.hu
Neste primeiro artigo, veja como começar a usar o Strace com dois programas “Hello World”. Mês que vem vamos analisar mais a fundo. por Juliet Kemp
lhor usar a opção -o para especificar um arquivo de saída: strace -o arq_saida.txt programa
O comando básico do Strace é:
Alguns editores, como o Vim, conseguem realçar a sintaxe da saída do Strace. O recurso de realce de sintaxe exibe diferentes partes do arquivo – e diferentes partes de cada linha – em cores distintas. Essa técnica é muito útil para auxiliar a compreensão da saída do Strace, pois esta pode ser muito confusa.
strace nome_do_programa
Strace com Perl
Comando
Porém, isso “cospe” toda a saída direto na saída de erro padrão – e você vai ver que a saída é muito volumosa. Então, normalmente é me-
Listagem 1: hello.pl 01 #!/usr/bin/perl ‑w 02 use strict; 03 print “Hello, Perl!\n”;
Listagem 2: Saída do Strace início 01 execve(“./hello.pl”, [“./hello.pl”], [/* 20 vars */]) = 0 02 uname({sys=”Linux”, node=”the.earth.li”, ...}) = 0
Considere o script Perl “Hello World” da listagem 1. Caso você não tenha familiaridade com Perl, a primeira linha informa ao shell qual programa usar para executar esse script e, nesse caso, também define a opção -w (warning), que ativa os alertas. A diretiva use strict ativa o módulo strict; tanto a opção -w quanto a linha use strict são desnecessárias neste script, mas são bons hábitos em Perl. Ao final, as duas últimas linhas imprimem na tela o texto “Hello, Perl!”, com uma nova linha no fim. Após salvar esse script, torne-o executável e, antes de começar a analisá-lo
68
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Strace | PROGRAMAÇÃO
com o Strace, execute-o normalmente (./helloworld.pl) para se certificar de que ele não contém erros. Feito isso, execute o Strace nele com: strace -o perl.out ./hello.pl
Em seguida, abra o arquivo de saída do Strace num editor (figura 1). A saída pode ser um pouco intimidante, mas não se preocupe com os detalhes. Em vez disso, observe a estrutura básica de cada linha. O Strace imprime cada chamada de sistema em uma linha, com o nome da chamada no início da linha, seus argumentos entre parênteses e o valor de retorno após o sinal de igual no fim da linha. A listagem 2 mostra as primeiras linhas da saída do Strace. Na saída do seu Strace do Perl, você verá uma linha que informa qual script está sendo executado. A linha seguinte (listagem 2) é uma chamada de uname que mostra os detalhes do seu sistema. O que o uname de fato retorna é um ponteiro para a estrutura de dados; o Strace preenche essas informações para você (por padrão, ele somente imprime algumas informações, mas também é possível pedir mais detalhes). Sempre que o Strace encontra um ponteiro para uma estrutura de dados, ele dá as informações apontadas em vez do ponteiro em si.
Chamadas de acesso
Em seguida, há algumas chamadas de access, que tentam acessar informações em arquivos específicos (listagem 3). A chamada access mostra qual arquivo o programa está tentando acessar (por exemplo, /etc/ld.so.preload) e se a tentativa teve sucesso. O valor -1 significa fracasso, e a nota de fracasso costuma ser acompanhada por um código de erro (E*****: ou, nesse caso, ENOENT). Em seguida o código de erro é traduzido para inglês; ENOENT significa “no such file or directory“, ou “arquivo ou diretório não encontrado” em português.
Se o arquivo não existir,
access verifica se o progra-
ma tem permissão para acessá-lo (por exemplo, se as permissões estão definidas corretamente).
Abra-te
Como se pode esperar, a chamada open tenta abrir o arquivo especificado. Se esse arquivo existir, o valor de retorno é um número positivo. Esse descritor de arquivo é o “manipulador” que o sistema usará para se referir a esse arquivo Figura 1 Prefira um editor com realce de sintaxe. em chamadas de sistema posteriores. No segundo artigo desta série, veremos as linhas relação com as bibliotecas dinâmicas fstat e mmap. Depois delas, o arquivo usadas nos sistemas Linux, que serão é novamente fechado. discutidas mais detalhadamente no Verificando as chamadas open mais próximo artigo. Por ora, basta saber abaixo na saída, é possível ver alguns que muitos desses arquivos e bibliodos arquivos que são lidos. Então, o tecas são carregados (ou ao menos que significa essa seção? Esses são procurados) toda vez que um arquivo todos os arquivos que são carregados ou programa é executado num sisantes de o programa rodar, e todos têm tema Linux. Além disso, também
Listagem 3: Chamadas de acesso 01 access(“/etc/ld.so.preload”, R_OK) = ‑1 ENOENT (No such file or directory) 02 open(“/etc/ld.so.cache”, O_RDONLY) = 3 03 fstat(3, {st_mode=S_IFREG|0644, st_size=43270, ...}) = 0 04 mmap(NULL, 43270, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b8740901000 05 close(3)
Listagem 4: Execução 01 readlink(“/proc/self/exe”, “/usr/bin/perl”, 4095) = 13 02 getppid() = 3252 03 read(3, “#!/usr/bin/perl ‑w\n\nuse strict;\n”..., 4096) = 58
Listagem 5: Busca de módulo Perl 01 stat(“/etc/perl/strict.pmc”, 0x7fff6a1bdcb0) = ‑1 ENOENT (No such file or directory) 02 stat(“/etc/perl/strict.pm”, 0x7fff6a1bdb70) = ‑1 ENOENT (No such file or directory) 03 ... 04 stat(“/usr/share/perl/5.8/strict.pm”, {st_mode=S_IFREG|0644, st_ size=599, ...}) = 0 05 open(“/usr/share/perl/5.8/strict.pm”, O_RDONLY|O_LARGEFILE) = 4
69
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO | Strace
Listagem 6: Última parte da saída 01 02 03 04 05
read(3, “”, 4096) = 0 close(3) = 0 write(1, “Hello, Perl!\n”, 13) = 13 exit_group(0) = ? Process 3253 detached
Listagem 7: hello.c 01 02 03 04 05 06
#include<stdio.h> main() { printf(“Hello World\n”); }
podemos ver uma biblioteca Perl sendo carregada, o que obviamente é específico para scripts Perl. Dependendo do seu sistema e de algumas chamadas relacionadas à memória e a threads, é possível ver algumas chamadas getuid e getgid
e se ele está sendo executado como outro usuário – o que pode ser feito, por exemplo, com o sudo). Outro conjunto de chamadas de abertura são feitas sobre diretórios do sistema, e depois uma série de chamadas stat que verificam a localização de várias bibliotecas e versões de Perl. A maioria delas provavelmente retornará o valor -1, que significa que houve um erro. As bibliotecas Perl podem ficar em vários locais, e todos eles são pesquisados.
O programa! após todas as chamadas às bibliotecas. Elas obtêm os IDs de usuário e grupo sob os quais o processo está sendo executado, e as chamadas geteuid e geteguid obtêm as IDs do usuário e grupo efetivos (isto é, ela registra quem realmente iniciou o processo
Finalmente, chegamos ao programa em si (listagem 4). A primeira linha da listagem 4 procura o executável. O arquivo /proc/self/exe é um link simbólico para o caminho do executável; esse dado (no caso, /usr/bin/perl) é colocado no buffer no segundo argumento. O valor de
Listagem 8: Saída completa para hello.c 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
execve(“./hello”, [“./hello”], [/* 20 vars */]) = 0 uname({sys=”Linux”, node=”the.earth.li”, ...}) = 0 brk(0) = 0x501000 access(“/etc/ld.so.nohwcap”, F_OK) = ‑1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, ‑1, 0) = 0x2afb0be09000 access(“/etc/ld.so.preload”, R_OK) = ‑1 ENOENT (No such file or directory) open(“/etc/ld.so.cache”, O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=43270, ...}) = 0 mmap(NULL, 43270, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afb0be0b000 close(3) = 0 access(“/etc/ld.so.nohwcap”, F_OK) = ‑1 ENOENT (No such file or directory) open(“/lib/libc.so.6”, O_RDONLY) = 3 read(3, “\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\305”..., 640) = 640 lseek(3, 624, SEEK_SET) = 624 read(3, “\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0”..., 32) = 32 fstat(3, {st_mode=S_IFREG|0755, st_size=1286104, ...}) = 0 mmap(NULL, 2344904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afb0bf0a000 mprotect(0x2afb0c02b000, 1161160, PROT_NONE) = 0 mmap(0x2afb0c12b000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x121000) = 0x2afb0c12b000 20 mmap(0x2afb0c143000, 14280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, ‑1, 0) = 0x2afb0c143000 21 close(3) = 0 22 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, ‑1, 0) = 0x2afb0c147000 23 mprotect(0x2afb0c12b000, 86016, PROT_READ) = 0 24 arch_prctl(ARCH_SET_FS, 0x2afb0c1476d0) = 0 25 munmap(0x2afb0be0b000, 43270) = 0 26 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 51), ...}) = 0 27 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, ‑1, 0) = 0x2afb0be0b000 28 write(1, “Hello World”, 11) = 11 29 munmap(0x2afb0be0b000, 4096) = 0 30 exit_group(11) = ?
70
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Strace | PROGRAMAÇÃO
retorno é o número de bytes inseridos no buffer. Em outras palavras, estamos carregando o caminho do executável. Em seguida, o ID do processo é obtido; neste exemplo, é 3252, mas cada sistema terá um ID diferente. Depois, na linha read, o script Perl em si tenta ler a memória. O segundo valor é outro exemplo de tentativa do Strace de facilitar o seu trabalho. O segundo valor de uma chamada rewad é, novamente, um ponteiro para um buffer onde serão inseridos os dados lidos a partir do descritor do arquivo. O programa strace desfaz a referência ao ponteiro e obtém os dados diretamente do buffer. Nesse caso, o conteúdo do buffer é o script inteiro (somente os primeiros poucos bytes são mostrados por padrão). O valor de retorno é o número de bytes inseridos no buffer. Todas as próximas linhas buscam o módulo strict de Perl, e é possível observar a saída varrer diversos locais possíveis (listagem 5). Depois de finalmente obter um retorno de sucesso para stat (isto é, um valor de retorno de 0 em vez de -1), o arquivo do módulo é aberto e lido. Mais uma vez, o valor de retorno dessa linha open – aqui, 4 – identifica o arquivo para chamadas futuras. Agora veja as próximas linhas – o primeiro argumento de todas elas é 4, o que significa que elas estão usando o arquivo /usr/share/perl/5.8/strict. pm. As próximas linhas tratam do processamento do arquivo, sua leitura e seu fechamento. Por último, na última seção da saída (listagem 6), temos o descritor de arquivo 3. Observando a saída, é possível ver que quando o arquivo helloworld.pl foi aberto, seu valor de retorno (seu descritor) foi 3. Mais uma vez, o arquivo Perl está sendo lido, mas agora o valor de retorno (lembre-se, ele é o número de bytes inseridos no buffer) é zero, e o segundo valor (os dados lidos) é uma
Listagem 9: Escrita 01 write(1, “Hello World”, 11) = 11
string vazia. Em outras palavras, isso verifica se o arquivo foi realmente todo lido antes de fechá-lo. Depois, o único comando de fato no programa é executado na linha write e o processo é separado. Essa saída foi bem complicada, mas vamos ver agora qual a diferença quando fazemos a mesma coisa com um programa escrito em C.
Strace com C
A listagem 7 mostra um programa “Hello World” em C. Compile-o e em seguida verifique seu funcionamento. Depois, execute: strace -o c.out ./hello
A saída – bem menor que a do primeiro programa – é mostrada na listagem 8. As primeiras duas linhas são semelhantes às do exemplo em Perl: uma chamada execve com o nome do programa e outra chamada uname. Além disso, algumas chamadas access aos mesmos arquivos de antes falham (ld.so.nohwcap e ld.so.preload), e o ld.so.cache é aberto, lido e fechado, da mesma forma. Este arquivo contém uma lista de possíveis bibliotecas já encontradas, o que reduz o tempo gasto procurando bibliotecas no caminho padrão delas. Também estão presentes as chamadas mmap, mprotect e arch_prctl, assim como munmap. Como o próprio programa é o executável e suas permissões já foram definidas, não há uma verificação dos IDs de usuário ou grupo. No Perl, o executável era /usr/bin/perl, então era necessário verificar se o usuário tinha acesso a esse arquivo executável. Como o C limpa sua memória depois de usá-la, as chamadas munmap também aparecem na saída do Strace.
Neste caso, não há uma chamada
readlink, pois ela é código interpreta-
do – e não compilado –, então não é preciso identificar um executável para ela. Essa diferença entre interpretado e compilado também é responsável pela ausência de chamadas read no programa em C. Como o código em C não precisa ser lido para a memória, é passado para um interpretador e executado diretamente.
Escrita
A chamada que está lá é a write (listagem 9). Nos dois programas que analisamos, o que sempre acontece é uma chamada write para imprimir na tela uma string (o segundo argumento da chamada). A diferença é que, no Perl, isso é feito pelo interpretador, enquanto no caso do C, é o próprio programa que faz a chamada (mas não é possível adivinhar isso a partir da linha, apenas pelo seu contexto). Mais uma vez vemos a chamada exit_group, mas desta vez ela é chamada por write (valor 11 no exemplo), em vez de pelo interpretador (valor 0), como no caso do Perl.
Conclusão
Esta rápida introdução mostrou algumas informações básicas que podemos obter a partir de estudos das chamdas de sistema com o Strace. Além disso, recomenda-se experimentar o Strace com scripts Bash e também com comandos compilados, como cd e pwd. n
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2953
71
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO
Escreva programas em C# seguindo padrões com o DotGNU
O padrão aberto do C# Flávio Takemoto – www.sxc.hu
O DotGNU permite a escrita de programas no GNU/Linux sem depender de um fornecedor específico. por Mayank Sharma
M
uitos programadores cresceram programando em C e C++ antes de se aventurar no mundo do LAMP com Python, Perl e PHP. Porém, assim como o primeiro carro, o primeiro encontro e o primeiro contracheque, todos se lembram com carinho da primeira vez que compilaram termos ininteligíveis em código de máquina executável. Graças ao GCC, os desenvolvedores de Software Livre jamais tiveram problemas com código em C++ na plataforma GNU/Linux. Entretanto, quando a Microsoft anunciou sua iniciativa .NET e a intenção de concentrar seus esforços no C#, poucos esperavam que a empresa liberasse um cliente de sua ferramenta de desenvolvimento “independente de plataforma” para Linux. Felizmente, a Common Language Infrastructure (infraestrutura comum da linguagem, ou CLI) do .NET e a linguagem de programação C# são codificadas como padrões ECMA
e ISO, o que cria a possibilidade de implementações independentes. O projeto DotGNU foi criado, com grande alarde, para trazer os padrões do C# para o mundo do GNU/Linux. Ao longo dos anos, o DotGNU recebeu menos atenção do que o outro .NET para GNU/Linux: o projeto Mono patrocinado pela Novell. Contudo, o projeto ainda se mantém e até vem encontrando uso em aplicativos comerciais. Apesar de o DotGNU ter perdido gás nos últimos anos, ele ainda está em desenvolvimento ativo. Certamente não podemos comparar seu ritmo de desenvolvimento ao do Mono – nem com sua atividade inicial –, mas o motivo principal é que, no DotGNU, a ênfase está na obediência aos padrões e na isenção de restrições de licenças, não em ser compatível com a versão mais recente da Microsoft. Como afirma o desenvolvedor do DotGNU Klaus Treichel, é injusto comparar o DotGNU ao Mono, pois
o Mono tem desenvolvedores trabalhando em tempo integral, pagos por uma grande empresa. O DotGNU sempre foi um projeto voluntário suportado por doações. Uma delas veio do Trumpf Group, que possui uma ferramenta laser para cortes que usa o DotGNU. A interface de tela sensível ao toque da ferramenta laser foi criada usando o DotGNU. Embora certas partes do ambiente Mono (incluindo o compilador C#) estejam sob a GPL, outras estão sujeitas a questões de patentes e licenças que refletem a complexa relação entre a Novell e a Microsoft. Felizmente para nós, portanto, o projeto DotGNU oferece uma alternativa independente de fornecedor para os programadores que desejam tentar a sorte com C# e com .NET.
Desconstruindo
O DotGNU é mais que apenas um compilador C#, mas vamos começar por aí. O Portable.Net é a imple-
72
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
DotGNU | PROGRAMAÇÃO
Quadro 1: Linguagens e bibliotecas O C# pega emprestados pedaços de várias linguagens, incluindo C, C++ e Java. Se você já programou em Java, vai descobrir que em C# é possível ter um nome de classe diferente daquele do arquivo de origem. Assim como em Java, e diferentemente das linhagem do C, o C# não possui arquivos de cabeçalho. Além disso, ele dá a flexibilidade de importar um namespace ou especificá-lo completamente ao usar uma função como System.Console.Writeline. Mais uma vez, isso é a cara de Java. Note também que o operador :: do C++ não é necessário em C#. A tarefa de fazer referência a membros de classes é feita com o operador ponto (.). Todas as bibliotecas C# mais importantes são implementadas no DotGNU. O conjunto de bibliotecas inclui a biblioteca base System que contém, entre outras coisas, as classes para lidar com tipos de dados, a biblioteca System.Collections, que ajuda a definir e iterar por objetos como listas e vetores, System.IO para ler e escrever arquivos e streams, System.Net para programação de redes, System.Security para fazer seu programa respeitar permissões e, claro, System.Windows.Forms para criar interfaces gráficas. Porém, algumas bibliotecas não estão diretamente disponíveis, tais como System.Data, que fornece classes para implementar o ActiveX Data Object, ou ADO, para ler dados a partir de várias fontes como bancos de dados. Mas também se pode usar a biblioteca ADO pelo pacote ml-pnet. As definições de bibliotecas específicas ao DotGNU estão disponíveis online [3], embora não sejam completas, e é possível que uma função não esteja definida lá, mas mesmo assim esteja disponível. Faltam os construtores e métodos de algumas bibliotecas, e também é possível aprender mais sobre esses elementos online [4]. Todavia, essas informações podem estar desatualizadas.
mentação livre do .NET e contém um mecanismo de execução, um compilador C# e várias outras ferramentas que facilitam a portabilidade do Portable.Net para outras plataformas. Todos esses componentes são escritos em C. O objetivo do projeto é facilitar o desenvolvimento de aplicativos .NET em plataformas não Microsoft. No princípio do desenvolvimento, a biblioteca de sistema em C# era separada da distribuição principal do Portable.Net. Agora as bibliotecas estão disponíveis como parte do pacote pnetlib. Outro componente importante é o treecc, uma ferramenta de programação orientada a aspecto que auxilia o desenvolvimento com o compilador C# do DotGNU. Para escrever web services, o DotGNU se baseia no DotGNU Execution Environment (DGEE) e no phpGroupWare. O DGEE é um serviço para web services capaz de aceitar e processar requisições XML-RPC vindas de web services, além de conseguir gerar do-
cumentação navegável para esses serviços, tanto em HTML quanto em XML. O phpGroupWare é um sistema groupware que também oferece vários componentes como web services. O compilador C# do DotGNU também compila programas em C, graças à implementação da Libc para o compilador C, o pnetC. Como o objetivo do DotGNU é seguir os padrões em vez de seguir a Microsoft, faltam alguns pedaços à implementação. Para ajudar os desenvolvedores a usar os pedaços que faltam, a equipe do DotGNU distribui algumas bibliotecas do projeto Mono. Essa distribuição é feita por meio de scripts de compilação contidos no pacote ml-pnet.
Por que DotGNU
Um dos principais motivos para escrever código em C# no DotGNU é sua compatibilidade com padrões ECMA para C# e a CLI. Além disso, o DotGNU também é compatível com a implementação da CLI da própria Microsoft na plataforma .NET.
Graças à estrutura modular do Portable.Net, o compilador C# do DotGNU pode ser executado em várias plataformas. O mecanismo de execução do Portable.Net e a biblioteca de classes C# oferece amplo suporte a perfis de sistemas embarcados e pode ser compilada com diferentes perfis ACMA. Cada perfil ativa ou desativa recursos do sistema. Para atestar sua portabilidade, um dos desenvolvedores fundadores, Gopal Vijayaraghavan, conseguiu executar o Portable. Net no handheld indiano Encore Simputer, durante os três dias da conferência FOSS.IN em Bangalore, Índia. Os programadores também apreciam a natureza autocontida do DotGNU e o fato de ele não depender de bibliotecas externas. Um recurso bastante discutido é sua implementação da biblioteca System.Windows.Forms, usada para criar interfaces gráficas. Ela simplifica o desenvolvimento por meio da redução da dependência de outros toolkits. 73
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO | DotGNU
Obtenção das ferramentas Alguns repositórios de distribuições têm os binários do DotGNU, mas é uma boa ideia compilá-los a partir dos fontes. Os tarballs estão disponíveis no site do DotGNU [1], e também é possível baixá-los via CVS. Para obter o compilador e suas bibliotecas, instale os pacotes treecc, pnet e pnetlib. O pacote ml-pnet é opcional e permite o uso de bibliotecas do Mono. O pacote pnetC habilita o compilador do DotGNU a compilar programas em C. O comando: cvs -z3 -d:pserver:anonymous@cvs. sv.gnu.org:/sources/dotgnu-pnet co .
baixa os fontes mais recentes de todos os pacotes do DotGNU. Depois
de mover os arquivos baixados para o diretório onde reside o DotGNU (como /opt/dotgnu/, por exemplo), entre em cada um dos diretórios criados e execute o comando ./auto_gen. sh para que todos os pacotes gerem os arquivos de configuração e Makefiles. Feito isso, ou se você acabou de baixar o tarball em vez de usar o CVS, os comandos tradicionais ./configure && make && sudo make install instalarão o compilador e
as bibliotecas DotGNU.
Compilador
Para quem fala binário, o DotGNU trabalha transformando bytecode em um conjunto simplificado de instruções que são repassadas a uma máquina virtual para executá-las por um interpretador. Essa estrutura torna o DotGNU facilmente portável e explica o número de plataformas suportadas.
Listagem 1: Hello.cs 01 using System; 02 public class HelloWorld { 03 public static void Main (string [ ] args) { 04 if (args.Length != 1) { 05 Console.Error.WriteLine(“Informe o seu nome.”); 06 Environment.Exit(‑1); 07 } 08 string nome = args[0]; 09 Console.WriteLine (“Ola, {0}!”, nome); 10 } 11 }
Listagem 2: Hello-avancado.cs 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
using System; using System.Collections; public class HelloWorld { public static void Main() { String value; value = Environment.GetEnvironmentVariable(“USER”); if(value != null) { Console.WriteLine(“Ola, {0}!”, value); } else { Console.WriteLine(“Perdao, aparentemente voce nao tem nome!”); } } }
Os componentes que serão usados são o mecanismo de execução ilrun, que executa os binários entregues pelo compilador cscc, e o comando cscc programa.cs, que produz um arquivo chamado a.out. Esse arquivo pode ser executado com o comando: ilrun a.out
Com a opção -o, é possível especificar um nome de arquivo ao compilar o programa com o cscc – por exemplo: cscc -o programa.exe programa.cs
Para mostrar informações de depuração, use a opção -v na compilação. Se for preciso linkar o programa a uma biblioteca específica – digamos, System.Drawing –, será preciso informar isso ao compilador com a opção -lLIBRARY, que vai procurar o DLL das bibliotecas no caminho definido. Ao compilar um programa gráfico que use a biblioteca System. Windows.Forms, pode-se usar a opção -winforms, que automaticamente linka todas as bibliotecas necessárias ao processamento de programas que dependam das WinForms. Algumas vezes será necessário criar suas próprias bibliotecas DLL. A opção -shared produz essas bibliotecas em vez de um .exe. Além do C#, o compilador do Dot GNU também é capaz de compilar para bytecode de Máquina Virtual Java com a opção -mjvm. Lembre-se de usar a extensão de arquivo .jar em vez de .exe ou .dll.
Mergulhe
Depois dessa rápida introdução ao compilador e suas opções mais comuns, vamos seguir a tradição e escrever um “Olá, mundo” em C# (listagem 1) e compilá-lo com cscc -o hello.exe hello.cs. Esse programa simples contém somente um método; Main(). Os ar-
74
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
DotGNU | PROGRAMAÇÃO
gumentos de linha de comando são passados para ele como um vetor de objetos string por meio da biblioteca System e suas várias classes e métodos. O comando System.Environment.Exit() sai do programa e envia ao shell um código de retorno. A classe System. Console faz a interface da linha de comando com o programa. O método Console.Writeline() escreve a linha na saída padrão, e Console.Error. Writeline() escreve no erro padrão. A listagem 1 saúda o usuário com um nome passado como entrada. Mas por que digitar um nome para o usuário quando o nome já está definido no sistema? Usando a biblioteca System.Collections, é possível, entre outras coisas, exibir o conteúdo de todas as variáveis de ambiente. Se o programa hello.cs for modificado para usar a biblioteca System.Collections (listagem 2), é possível ler o
Listagem 3: Uso de System.Windows.Forms 01 using System; 02 using System.Windows.Forms; 03 04 public class MeuForm : Form { 05 public MeuForm () { 06 this.Text = “Principio de um editor de texto com multiplas abas”; 07 this.Height = 600; 08 this.Width = 800; 09 } 10 } 11 12 13 public class MinhaApp { 14 public static void Main(string[] args) { 15 App.Run(new MeuForm()); 16 } 17 }
nome do usuário que está executando o programa com valor=Environment. GetEnvironmentVariable(“USER”), em que valor é uma variável do tipo string.
Get e set
Um dos melhores aspectos do Dot GNU é uma implementação da biblioteca System.Windows.Forms que não requeira a tradução por outros
Quer ganhar um netbook Eee PC 1002 HA da Asus e ainda ajudar a melhorar a sua revista? Participe da promoção no site da Linux Magazine. Basta responder à pergunta:
Por que eu mereço ganhar um netbook? Linux Magazine www.linuxmagazine.com.br/netbook #57 | Agosto de 2009 Acesse e não fique de fora! 75
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO | DotGNU
Listagem 4: Controles avançados de formulário 01 public class MeuMenu : System.Windows.Forms.MainMenu { 02 public System.Windows.Forms.MenuItem mFile; 03 public System.Windows.Forms.MenuItem mFileNew; 04 public System.Windows.Forms.MenuItem mFileSave; 05 public System.Windows.Forms.MenuItem mFileExit; 06 07 public MeuMenu() { 08 mFile = new MenuItem(“&File”); 09 this.MenuItems.Add(mFile); 10 11 mFileNew = new MenuItem(“&New”); 12 mFileSave = new MenuItem(“&Save”); 13 mFileExit = new MenuItem(“E&xit”); 14 15 mFile.MenuItems.Add(mFileNew); 16 mFile.MenuItems.Add(mFileSave); 17 mFile.MenuItems.Add(mFileExit); 18 } 19 }
toolkits populares como GTK+. Semelhante à biblioteca Java Swing, o System.Windows.Forms do DotGNU desenha seus próprios controles. Para compilar o código da listagem 3, use: cscc -o form.exe form.cs -winforms.
O código exibe uma janela simples e redimensionável com os controles comuns para minimizar, maximizar e fechar. O próximo passo é adicionar um menu à janela. As partes mais importantes desse código estão na listagem 4. Uma classe customizada MeuMenu herda da classe System.Windows. Forms.MainMenu e é usada para criar os itens do menu. As variáveis dos itens do menu têm tipo MenuItem, que é especificamente usado para criar itens dentro de um menu ou menu de contexto. O construtor MyMenu() cria o menu Arquivo com a nova palavra-chave. De forma semelhante, a listagem 4 cria uma instância dos três itens de menu e especifica como vão aparecer no menu. Como já aprontamos o menu Arquivo, basta usar o método Add() para acrescentar os três itens de menu ao menu principal.
Para programadores gráficos inexperientes, esse procedimento pode parecer um pouco complexo demais, mas na verdade não poderia ser mais simples. Os vários métodos de System.Windows.Forms lidam com a adição de funções de interface gráfica ao menu e aos itens para que, ao compilar e executar o código, o menu Arquivo funcione da mesma forma que em qualquer aplicativo gráfico: o
primeiro clique exibe os itens, e o segundo recolhe o menu. Claro que ainda é preciso associar o menu ao código original do formulário e aos manipuladores de eventos do programa. Além disso, é necessário vincular esses manipuladores de eventos ao evento de clique do item específico do menu. Mais adiante, teremos que criar caixas de diálogo e adicionar recursos a elas com uso de botões para salvar o arquivo e realizar outras tarefas.
Conclusão
Existem vários livros e tutoriais de C# pela Web. A vantagem do DotGNU é sua total obediência aos padrões; portanto, é possível usar a documentação da biblioteca C# da Microsoft. Para acelerar sua produtividade, você pode usar interfaces gráficas, como o Microsoft Visual Studio e o MonoDevelop [2], do projeto Mono. Porém, se você quiser escrever código realmente portável com o DotGNU, será preciso cuidado redobrado com essas ferramentas para garantir a distância de recursos específicos de uma única plataforma. n
Mais informações [1] DotGNU: http://www.gnu.org/software/dotgnu/ [2] MonoDevelop: http://monodevelop.com/ [3] Definições de bibliotecas DotGNU: http://www.gnu.org/software/dotgnu/pnetlib-doc/ [4] Status da biblioteca: http://www.gnu.org/software/dotgnu/pnetlib-status/
Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/2958
76
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux.local
SERVIÇOS
O maior diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por Estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 4082-1300 ou anuncios@linuxmagazine.com.br
Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6
Empresa
Cidade
Endereço
Telefone
Web
1 2 3 4 5 6
71 4062-8688
www.imtech.com.br
4 4
4 4
85 3252-3836
www.f13.com.br
4 4
4 4
Bahia IMTECH
Salvador
Av. Antonio Carlos Magalhaes, 846 – Edifício MaxCenter – Sala 337 – CEP 41825-000
F13 Tecnologia
Fortaleza
Rua Padre Valdevino, 526 – Centro
Ceará Espírito Santo Linux Shopp
Vila Velha
Rua São Simão (Correspondência), 18 – CEP: 29113-120
27 3082-0932
www.linuxshopp.com.br
Megawork Consultoria e Sistemas
Vitória
Rua Chapot Presvot, 389 – Praia do Canto – CEP: 29055-410 sl 201, 202
27 3315-2370
www.megawork.com.br
4
4 4
Spirit Linux
Vitória
Rua Marins Alvarino, 150 – CEP: 29047-660
27 3227-5543
www.spiritlinux.com.br
4
4 4
4 4
4 4
Minas Gerais Instituto Online
Belo Horizonte
Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011
31 3224-7920
www.institutoonline.com.br
Linux Place
Belo Horizonte
Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000
31 3284-0575
corporate.linuxplace.com.br
Microhard
Belo Horizonte
Rua República da Argentina, 520 – Sion – CEP: 30315-490
31 3281-5522
TurboSite
Belo Horizonte
Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141
0800 702-9004
4
4
4 4
4 4
www.microhard.com.br
4 4 4
4 4
www.turbosite.com.br
4
4 4
Paraná iSolve
Curitiba
Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000
41 252-2977
www.isolve.com.br
Mandriva Conectiva
Curitiba
Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430
41 3360-2600
www.mandriva.com.br
Telway Tecnologia
Curitiba
Rua Francisco Rocha 1830/71
41 3203-0375
www.telway.com.br
81 3223-8348
www.fuctura.com.br
4 4
4
4 4 4 4 4 4
Pernambuco Fuctura Tecnologia
Recife
Rua Nicarágua, 159 – Espinheiro – CEP: 52020-190
4
4
4
4 4
Rio de Janeiro Múltipla Tecnologia da Informação
Rio de Janeiro
Av. Rio Branco, 37, 14° andar – CEP: 20090-003
21 2203-2622
www.multipla-ti.com.br
NSI Training
Rio de Janeiro
Rua Araújo Porto Alegre, 71, 4º andar Centro – CEP: 20030-012
21 2220-7055
www.nsi.com.br
4
4
Open IT
Rio de Janeiro
Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120
21 2508-9103
www.openit.com.br
4
4
Unipi Tecnologias
Campos dos Goytacazes
Av. Alberto Torres, 303, 1ºandar – Centro – CEP: 28035-581
22 2725-1041
www.unipi.com.br
4up Soluções Corporativas
Novo Hamburgo
Pso. Calçadão Osvaldo Cruz, 54 sl. 301 CEP: 93510-015
51 3581-4383
www.4up.com.br
Definitiva Informática
Novo Hamburgo
Rua General Osório, 402 - Hamburgo Velho
51 3594 3140
www.definitiva.com.br
Solis
Lajeado
Av. 7 de Setembro, 184, sala 401 – Bairro Moinhos CEP: 95900-000
51 3714-6653
www.solis.coop.br
DualCon
Novo Hamburgo
Rua Joaquim Pedro Soares, 1099, Sl. 305 – Centro
51 3593-5437
www.dualcon.com.br
4
4
Datarecover
Porto Alegre
Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003
51 3018-1200
www.datarecover.com.br
4
4
LM2 Consulting
Porto Alegre
Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140
51 3018-1007
www.lm2.com.br
Lnx-IT Informação e Tecnologia Porto Alegre
Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193
51 3331-1446
www.lnx-it.inf.br
Plugin
Porto Alegre
Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130
51 4003-1001
www.plugin.com.br
TeHospedo
Porto Alegre
Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008
51 3286-3799
www.tehospedo.com.br
4 4
Propus Informática
Porto Alegre
Rua Santa Rita, 282 – CEP: 90220-220
51 3024-3568
www.propus.com.br
4 4 4
4 4 4
4
4 4 4 4
Rio Grande do Sul 4 4
4 4
4
4 4
4
4 4 4 4 4 4 4
4
4 4
4
4
4 4
4
4
4
São Paulo Ws Host
Arthur Nogueira
Rua Jerere, 36 – Vista Alegre – CEP: 13280-000
19 3846-1137
www.wshost.com.br
4
DigiVoice
Barueri
Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010
11 4195-2557
www.digivoice.com.br
4 4 4
4 4
Dextra Sistemas
Campinas
Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045 19 3256-6722
www.dextra.com.br
4
4 4
Insigne Free Software do Brasil Campinas
Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001
19 3213-2100
www.insignesoftware.com
4
Microcamp
Campinas
Av. Thomaz Alves, 20 – Centro – CEP: 13010-160
19 3236-1915
www.microcamp.com.br
PC2 Consultoria em Software Livre
Carapicuiba
Rua Edeia, 500 - CEP: 06350-080
11 3213-6388
www.pc2consultoria.com
4
4
Savant Tecnologia
Diadema
Av. Senador Vitorino Freire, 465 – CEP: 09910-550
11 5034-4199
www.savant.com.br
4 4 4
4
Epopéia Informática
Marília
Rua Goiás, 392 – Bairro Cascata – CEP: 17509-140
14 3413-1137
www.epopeia.com.br
Redentor
Osasco
Rua Costante Piovan, 150 – Jd. Três Montanhas – CEP: 06263-270 11 2106-9392
www.redentor.ind.br
Go-Global
Santana de Parnaíba
Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038
www.go-global.com.br
11 2173-4211
78
4
4 4 4
4
4 4 4
4 4
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux.local | SERVIÇOS
Empresa
Cidade
Endereço
Telefone
Web
1 2 3 4 5 6
São Paulo (continuação) AW2NET
Santo André
Rua Edson Soares, 59 – CEP: 09760-350
11 4990-0065
www.aw2net.com.br
Async Open Source
São Carlos
Rua Orlando Damiano, 2212 – CEP 13560-450
16 3376-0125
www.async.com.br
4
Delix Internet
São José do Rio Preto
Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909
11 4062-9889
www.delixhosting.com.br
4
4
4 4 4 4
4
4
4Linux
São Paulo
Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031
11 2125-4747
www.4linux.com.br
A Casa do Linux
São Paulo
Al. Jaú, 490 – Jd. Paulista – CEP: 01420-000
11 3549-5151
www.acasadolinux.com.br
4
4 4
Accenture do Brasil Ltda.
São Paulo
Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004
11 5188-3000
www.accenture.com.br
4
4 4
4 4
ACR Informática
São Paulo
Rua Lincoln de Albuquerque, 65 – Perdizes – CEP: 05004-010
11 3873-1515
www.acrinformatica.com.br
4
4
Agit Informática
São Paulo
Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030
11 3255-4945
www.agit.com.br
4 4
4
Altbit - Informática Comércio e Serviços LTDA.
São Paulo
Av. Francisco Matarazzo, 229, Cj. 57 – Água Branca – CEP 05001-000
11 3879-9390
www.altbit.com.br
4
4
4 4
AS2M -WPC Consultoria
São Paulo
Rua Três Rios, 131, Cj. 61A – Bom Retiro – CEP: 01123-001
11 3228-3709
www.wpc.com.br
Big Host
São Paulo
Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010
11 3033-4000
www.bighost.com.br
4
4 4
Blanes
São Paulo
Rua André Ampére, 153 – 9º andar – Conj. 91 CEP: 04562-907 (próx. Av. L. C. Berrini)
11 5506-9677
www.blanes.com.br
4 4 4
4 4
Commlogik do Brasil Ltda.
São Paulo
Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000
11 5503-1011
www.commlogik.com.br
4 4 4
4 4
Computer Consulting Projeto e Consultoria Ltda.
São Paulo
Rua Caramuru, 417, Cj. 23 – Saúde – CEP: 04138-001
11 5071-7988
www.computerconsulting.com.br
4
4 4
Consist Consultoria, Sistemas e Representações Ltda.
São Paulo
Av. das Nações Unidas, 20.727 – CEP: 04795-100
11 5693-7210
www.consist.com.br
Domínio Tecnologia
São Paulo
Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080
11 5017-0040
www.dominiotecnologia.com.br
EDS do Brasil
São Paulo
Av. Pres. Juscelino Kubistcheck, 1830 Torre 4 - 5º andar
11 3707-4100
www.eds.com
Ética Tecnologia
São Paulo
Rua Nova York, 945 – Brooklin – CEP:04560-002
11 5093-3025
www.etica.net
Getronics ICT Solutions and Services
São Paulo
Rua Verbo Divino, 1207 – CEP: 04719-002
11 5187-2700
www.getronics.com/br
4
4 4
4
4 4 4 4 4
4 4 4
4
4
4
4 4
4
4 4
Hewlett-Packard Brasil Ltda.
São Paulo
Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000
11 5502-5000
www.hp.com.br
4
4 4 4 4
IBM Brasil Ltda.
São Paulo
Rua Tutóia, 1157 – CEP: 04007-900
0800-7074 837
www.br.ibm.com
4
4
4 4
iFractal
São Paulo
Rua Fiação da Saúde, 145, Conj. 66 – Saúde – CEP: 04144-020
11 5078-6618
www.ifractal.com.br
4
4 4
Integral
São Paulo
Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001
11 5545-2600
www.integral.com.br
4 4 4 4
Itautec S.A.
São Paulo
Av. Paulista, 2028 – CEP: 01310-200
11 3543-5543
www.itautec.com.br
Kenos Consultoria
São Paulo
Av: Fagundes Filho, 134, Conj 53 – CEP: 04304-000
11 40821305
www.kenos.com.br
Konsultex Informatica
São Paulo
Av. Dr. Guilherme Dumont Villares, 1410 6 andar, CEP: 05640-003
11 3773-9009
www.konsultex.com.br
São Paulo
Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001
11 5034-4191
www.komputer.com.br
4 4
Linux Mall
São Paulo
Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001
11 5087-9441
www.linuxmall.com.br
São Paulo
Al. Santos, 1202 – Cerqueira César – CEP: 01418-100
11 3266-2988
www.temporeal.com.br
Locasite Internet Service
São Paulo
Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000
11 2121-4555
www.locasite.com.br
Microsiga
São Paulo
Av. Braz Leme, 1631 – CEP: 02511-000
11 3981-7200
www.microsiga.com.br
Novatec Editora Ltda.
São Paulo
Rua Luis Antonio dos Santos, 110 – Santana – CEP: 02460-000
11 6979-0071
www.novateceditora.com.br
Novell América Latina
São Paulo
Rua Funchal, 418 – Vila Olímpia
11 3345-3900
www.novell.com/brasil
Oracle do Brasil Sistemas Ltda. São Paulo
Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170
11 5189-3000
www.oracle.com.br
Proelbra Tecnologia Eletrônica Ltda.
São Paulo
Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001
11 5052- 8044
www.proelbra.com.br
Provider
São Paulo
Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005
11 2165-6500
Red Hat Brasil
São Paulo
Av. Brigadeiro Faria Lima, 3900, Cj 81 8º andar Itaim Bibi – CEP: 04538-132
11 3529-6000
4 4 4 4
Linux Komputer Informática Livraria Tempo Real
4
4
4 4
4
4 4 4 4 4 4 4
4
4 4 4
4 4 4
4
4 4 4 4
4
4
4
www.e-provider.com.br
4
4 4
www.redhat.com.br
4
4 4
Samurai Projetos Especiais
São Paulo
Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002
11 5097-3014
www.samurai.com.br
4
4 4
SAP Brasil
São Paulo
Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000
11 5503-2400
www.sap.com.br
4
4 4
Simples Consultoria
São Paulo
Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010
11 3898-2121
www.simplesconsultoria.com.br
Smart Solutions
São Paulo
Av. Jabaquara, 2940 cj 56 e 57
11 5052-5958
www.smart-tec.com.br
4
4 4
4 4
4 4
Snap IT
São Paulo
Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000
11 3731-8008
www.snapit.com.br
4
4 4
Stefanini IT Solutions
São Paulo
Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919
11 3039-2000
www.stefanini.com.br
4
4 4
11 5187-2100
Sun Microsystems
São Paulo
Rua Alexandre Dumas, 2016 – CEP: 04717-004
Sybase Brasil
São Paulo
Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000 11 3046-7388
www.sybase.com.br
www.sun.com.br
The Source
São Paulo
Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020
11 6698-5090
www.thesource.com.br
Unisys Brasil Ltda.
São Paulo
R. Alexandre Dumas 1658 – 6º, 7º e 8º andares – Chácara Santo Antônio – CEP: 04717-004
11 3305-7000
www.unisys.com.br
4
4
4 4 4 4
4
4
4 4
4
4 4
Utah
São Paulo
Av. Paulista, 925, 13º andar – Cerqueira César – CEP: 01311-916
11 3145-5888
www.utah.com.br
4
4 4
Visuelles
São Paulo
Rua Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP: 04455-310
11 5614-1010
www.visuelles.com.br
4
4 4
Webnow
São Paulo
Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000
11 5503-6510
www.webnow.com.br
4
4
4
4
WRL Informática Ltda.
São Paulo
Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001
11 3362-1334
www.wrl.com.br
4
Systech
Taquaritinga
Rua São José, 1126 – Centro – Caixa Postal 71 – CEP: 15.900-000
16 3252-7308
www.systech-ltd.com.br
4 4
2MI Tecnologia e Informação
Embu
Rua José Bonifácio, 55 – Jd. Independência – CEP: 06826-080
11 4203-3937
www.2mi.com.br
Locaweb
São Paulo
Av. Pres. Juscelino Kubitschek, 1.830 – Torre 4 Vila Nova Conceição – CEP: 04543-900
11 3544-0500
www.locaweb.com.br
4 4
4 4 4 4
4 4 4
79
Linux Magazine #57 | Agosto de 2009
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Calendário de eventos SERVIÇOS
Evento II GNUGRAF Consegi Python Brasil
Data
Local
22 e 23 de agosto 26 e 26 de agosto 10 a 12 de setembro
Rio de Janeiro, RJ Brasília, DF Caixas do Sul, RS
Índice de anunciantes Informações www.gnugraf.org/ www.consegi.gov.br/ www.pythonbrasil.org
CNASI
22 e 24 de setembro
São Paulo, SP
www.cnasi.com.br/
Futurecom 2009
13 a 16 de outubro
São Paulo, SP
www.futurecom2009.com.br
Latinoware PGCON Brasil 2009
22 a 24 de outubro 24 e 25 de outubro
Foz de Iguaçu, PR Campinas, SP
www.latinoware.org www.postgresql.org.br/ eventos/pgconbr
Plone Symposium América do Sul
24 e 25 de novembro
São Paulo, SP
www.plonesymposium.com.br
4o SoLISC
26 e 27 de novembro
Florianópolis, SC
www.solisc.org.br
Empresa
Pág.
Locaweb
84
IBM
02
HP
07
Itautec
09
Senac
11
Caixa Econômica Federal
13
Rittal
15
Plus Server
17
UOL Host
19
Dgivoice
21
Watchguard
23
Futurecom
25
CNASI
29
Fuctura
31
Zimbra
75
Hotel Plaza
77
Bull
83
Nerdson – Os quadrinhos mensais da Linux Magazine
80
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Inclua em seu currículo a principal certificação Linux no mundo – LPI. Em tempos de crise, soluções de código aberto – como o Linux – se destacam na adoção por empresas de todos os tamanhos, como solução ideal para aumentar eficiência nos negócios e reduzir custos. Atualmente há no mercado uma carência por profissionais certificados para atender a essa demanda crescente. Aproveite essa oportunidade e inclua em seu currículo a principal certificação Linux no mundo.
As datas de realização das provas são: 29/08 – Vitória , ES 12/09 – São Paulo, SP 18/09 – Curitiba, PR 03/10 – São Paulo/SP
Inscrições e mais informações: treinamentos@vectory.com.br Tel (11) 4082-1305
R
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux Professional Institute
DESTAQUE
ANÁLISE
SEO sem suor
Bash 4
Tanto no ambiente corporativo quanto naquele seu projeto pessoal – que tem grandes chances de deixálo finalmente rico – é incrível a quantidade de trabalho que você precisa dedicar a todas as camadas do seu site. Desde o servidor web até as tarefas de SEO, passando pela administração do CMS, seu site precisa de você, e são inúmeras as possibilidades de ajustes para torná-lo mais eficiente e lucrativo, reduzindo as exigências de um administrador. A Linux Magazine 58 vai ajudá-lo com essa tarefa. Vamos apresentar alguns pontos fundamentais da configuração do Apache para acelerar as respostas por parte do seu website, demonstraremos as virtudes do CMS colaborativo Liferay, com grande prestígio ao redor do mundo, e vamos explicar como utilizar as ferramentas do Google – Webmaster Tools e App Engine – para produzir aplicações web mais rápido e obter lucro com elas com muito mais velocidade e eficiência. n
Apesar da recente concorrência por parte de alternativas poderosas, como o Zsh, o Bourne-again shell (nosso querido Bash) ainda reina absoluto nos consoles sobre Linux. Usado tanto de forma interativa quanto sob o formato de linguagem de script, o Bash faz parte do esqueleto de qualquer sistema Linux. Veja o que você vai ganhar – e se tem algo a perder – adotando a versão mais recente do Bash, lançada em fevereiro deste ano. 4 hsaB n
nimd
FR321 ,oekwey
PREVIEW
Na Linux Magazine #58
Na EasyLinux #16
llehs niaga-enruoB taerg eht fo noisrev tsetal eht gnir
HSAB DOOG
eW .ti no krow ot eunitnoc srepoleved ,ytirutam fo level hgih dna ega lacilbib s'llehs niaga-enruoB eht e
Twittando no Linux
A adoção do Twitter cresce a passos gigantescos. Com ele, você não apenas fica por dentro das opiniões mais recentes dos seus amigos reais e virtuais, como também acompanha as últimas promoções das suas lojas preferidas, recebe informações sobre seu time de futebol e se atualiza em velocidade estonteante. E o Linux, naturalmente, não fica de fora disso! Na Easy Linux 16, vamos mostrar as melhores formas de utilizar o Twitter no Linux. Seja com um programa específico para essa tarefa ou por meio de complementos do Firefox e do Thunderbird, twittar no Linux é muito fácil e rápido. Vamos apresentar também os melhores feeds para você seguir e se atualizar com relação ao Linux, Ubuntu e tecnologia em geral. n
Programas de email
SUNGAM SLIN DNA KOLBAB DRAHNREB YB .esaeler hsaB tsetal eht ta kool
a detpoda won evah srepoleved ehT
sa sreffo noisrev wen a seidoog eht
morf noititepmoc tnecer etipse
tahw oemails t hcaorppa yldpelo neirf resu navegador erom sop sa ylkciumas q stama hcus sevitanretla lufrewop Verificar seus não.eélbisruim, seiretsym tsetaerg eht fo eno eb ot desu wen no trats daeh a teg ot tnaw uoy fI llehs niaga-enruoB eht ,]1[ hsZ d r a d n a t s y a w e h t : l l e h s e n r u o B e h t f o y a w r i e h t g n i k a m e r a t a h t s e r u t a e f h s a B n o llih eo ht fo gnik eht llits si ]2[ bém há muitas vantagens em ,adotar um cliente como -nI .detcerider si tuptuo egassem rorre smetsys xuniL fo noitareneg txen eht ot hsaB esu nac sresU .elosnoc xu su ,artno amThunderbird. elif>1 1&>2 eht fo daets emit ytio lauqSylpheed, emos gnidneps yojneo ll’uoKMail, y -mis a sa o sevres osla ti dna ,ylevi Evolutionsrhetou Ou ob tcerider ot elif >>& esu won nac .4 hsaB htiw hsaB .egaugnal gnitpircs lacitcarp ehT .eliexemplo, f a otni tuptuo dradneles ats dna roavisam, rre emos fona yramsua mus a seárea divorp 1 ede lbaT trabalho, gnikrow yna fo enobkcab eht f Claws... Por dradnats eht stcerider hcihw ,tuctrohs &| etelpmoc a rof ;serutaef wen tnatropmi -ni ot nosaer erom eht lla – metsy si ,epip a ot duma nammoc anova rof rorre mensagem. hsaB eht ni elif SWEN eht tuo kcehc ,tsil eht ot gnidargpu fo stifeneb eht e sempre que-nachega .noitidda lufesu rehto emos thgilhgih ew ,ereH .noitatnemucod deraeppa hcihw ,esaeler 4 hs .segnahc tnatropmi tsom eht fo .9002 y Na próximasyedição, mostrar os melhores proarra evitaicvamos ossa eniL dnammoC eht ta ?ton yhW ro stpircs hsaB taht si htym ralupop enO gramas para você conferir seusa eemails sem -itlu hcihw ,sessecorp ynam oot etaerc taicerppa lliw sresu enil-dnammoC tnaw thgim uoy ,smetsys noitcu fo ynam tuB .ecnamrofrep stceffa yletam -xe ,lufesu yrev tub ,suoucipsnocni wef yrassecen yllaer si ti rehtehw redi precisar abrir o navegador. E se você for desu ecno snoitacilppa elpmis erom eht .hsaB tsetal eht htiw gnitubed snoisnet -irtsid rojam ehT .4 hsaB ot eda ab ,perg ,des gnidulcni ,hsaB htiw realmente-se‑ceesfã dos webmails, atnoetrrsudcneahptxewgonleirbtssh*t*apehdtn,ealpsemliafxfeo rtosiFl woesn,seehtat ddpauernpws oylrlaieuhtnt ehvgeuollrihwt n regnol on era emanrid ro ,eman sa tsuj sksat eseht seldnah hsaB ;yras vamos mostrar os aplicati- ot ,rraelvimewisonHo.idhnsaafmamnoi cyrdonticfelraidnrgentxikereohwt royatidlelmatsonsiudonyahdcaaoelrnlwliwodhusoayB r egaugnal gnitpircs rehto yna sa ylkciuq -mi eseht etipseD .sloot draob-no htiw -ussi yb erutaef eht elbane ot deen sresu rewop ynam dna sremmarg vos indispensáveis para tsac sremmargorp hsaB ,stnemevorp .ratsbolg s‑ tpohs dnammoc eht gni ecarbme ot ekil ,dnah rehto eht n você não perder ne9002 TSUgUA 501 EUSSI nhum email e até receber avisos de mensagens na sua área de trabalho. n
82
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
08/2009
SL E ESCOLHAS p.26 “Liberdade não é liberdade de escolha”, afirma Stallman O p.30
CÓDIG ÇÃO DE REUTILIZAexplica por que Maddog entar a roda não reinv
Linux Magazine
LHAS p.26 ade de SL E ESCO não é liberd an “Liberdadeafirma Stallm escolha”,
AMEAÇA
REUTILIZAÇÃO DE CÓDIGO p.30 Maddog explica por que não reinventar a roda
CRISE E O SL p.32 A crise econômica abre mais espaço para o SL
O SL p.32 CRISE E econômica abre SL A crise o para o mais espaç
# 57 Agosto 2009
NA
NUVEM EL, MAS DISPONÍV R SEMPRE E. DEFENDA-SE ISA ESTA TANT IÇO PREC AMEAÇA CONS p.33 SEU SERV UADAS IFICA UMA MAIS ADEQ ISSO SIGN TÉCNICAS rável? p.34 COM AS ra ou vulne k p.40 ão: segu kernel: Smac p.44 » Virtualizaç dentro do Jailkit » Proteção s com o em jaula » Usuários
DADESidentidades de IDENTIgere nciar ca. PA para mais práti Use o FreeI alizada e mutio forma centr p.61
REDES:
DRIVE NÇA: PEN SEGURA FADO p.66 er. Mantenha CRIPTOGRAfáceis de perd ma. s são Pen drive sob proteção máxi s seus dado
# 57
: TA EDIÇÃO BÉM NES p.46 VEJA TAMivos velhos: Ageduo PelicanHPC p.48 arqu » Adeus o fácil com HPC muit p.54 » Cluster Solaris no Open » Pacotes bugs p.68 o fim dos C# p.72 » Strace, aberto em » Padrão
A REVISTA DO PROFISSIONAL DE TI M.BR
AZINE.CO
Assinante
exemplar de
LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008
CEZAR TAURION p.34 O Código Aberto como incentivo à inovação
#44 07/08 R$ 13,90 € 7,50
00044
VIRTUALIZAÇÃO
NUVEM CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco
A REVISTA DO PROFISSIONAL DE TI
9 771806 942009
AMEAÇA NA NUVEM
AMEAÇA NA GOVERNANÇA COM
SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36
» O que dizem os profissionais certificados p.24
SMACK
» Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39
» Novidades do ITIL v3. p.44
SEGURANÇA: DNSSEC p.69
VEJA TAMBÉM NESTA EDIÇÃO:
Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?
» Relatórios do Squid com o SARG p.60
» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58
» Becape de bancos de dados com a Libferris p.46
SEU SERVIÇO PRECISA ESTAR SEMPRE DISPONÍVEL, MAS ISSO SIGNIFICA UMA AMEAÇA CONSTANTE. DEFENDA-SE COM AS TÉCNICAS MAIS ADEQUADAS p.33 REDES: IPV6 p.64
Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la
» LPI nível 2: Servidores NIS e DHCP p.52
WWW.LINUXMAGAZINE.COM.BR
JAIL SSH FREEIPA
» Virtualização: segura ou vulnerável? p.34 » Proteção dentro do kernel: Smack p.40 » Usuários em jaulas com o Jailkit p.44
CRIPTOGRAFIA
REDES: IDENTIDADES p.61
OPEN SOLARIS
SEGURANÇA: PEN DRIVE CRIPTOGRAFADO p.66
Use o FreeIPA para gerenciar identidades de forma centralizada e muito mais prática.
PELICANHPC
Pen drives são fáceis de perder. Mantenha seus dados sob proteção máxima.
VEJA TAMBÉM NESTA EDIÇÃO:
STRACE
» Adeus arquivos velhos: Agedu p.46 » Cluster HPC muito fácil com o PelicanHPC p.48 » Pacotes no OpenSolaris p.54 » Strace, o fim dos bugs p.68 » Padrão aberto em C# p.72
DOTGNU
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
WWW.LINUXMAGAZINE.COM.BR
venda proibida
NUXMAG
WWW.LI