MADDOG p.26
CEZAR TAURION P.28
GILBERTO MAGALHÃES P.30
O esforço dos países em desenvolvimento
A mobilidade na estratégia de TI
Inovar é buscar a eficiência na TI
# 99 Fevereiro 2013
A REVISTA DO PROFISSIONAL DE TI
SYSTEM RESCUE A RECUPERAÇÃO DE SISTEMAS VAI ALÉM DO SIMPLES RESGATE DE DADOS. SAIBA COMO RECUPERAR PARTIÇÕES INALCANÇÁVEIS E SISTEMAS OPERACIONAS CORROMPIDOS. P.40 CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco
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
A REVISTA DO PROFISSIONAL DE TI
9 771806 942009
00044
R$ 13,90 € 7,50
GOVERNANÇA COM
» Os 10 maiores truques para recuperação de sistemas p.32 SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36
ENTREVISTA p.23
Marcos Polidoro, CEO da Mandriva fala sobre os novos produtos e a posição da empresa no mercado atual.
» O que dizem os profissionais certificados p.24 » Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39
» Saiba como recuperar dados e partições corrompidas p.40 » 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
REDES: IPV6 p.64
» Becape de bancos de dados com a Libferris p.46
Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la
» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58
» LPI nível 2: Servidores NIS e DHCP p.52
WWW.LINUXMAGAZINE.COM.BR
ANDROID p.46
Aprenda como publicar seus aplicativos na loja do Google
TCP FAST OPEN p.51
Evite a latência no tráfego de rede e aumente sua velocidade
TUTORIAL p.62
Crie assistentes interativos para a automatização de tarefas
MONITORAMENTO DE PROCESSOS p.72
Conheça as melhores ferramentas para monitoramento de tarefas e processos do sistema
VEJA TAMBÉM NESTA EDIÇÃO: » Assuma o controle completo do computador através de rootkits para o kernel p.54 00099
» Explore as diversas alternativas para manipular grandes arquivos p.58 » Domine os comandos para a gestão avançada de arquivos p.68 WWW.LINUXMAGAZINE.COM.BR
9 771806 942009
#99 02/13 R$ 14,90 € 7,50
Pirataria ou prataria?
Expediente editorial
Editores Flávia Jobstraibizer fjobs@linuxmagazine.com.br Laura Loenert Lopes llopes@linuxmagazine.com.br Editores de Arte Larissa Lima Zanini llima@linuxmagazine.com.br Hunter Lucas Fonseca hfonseca@linuxnewmedia.com.br Colaboradores James Stanger, Jürgen Quade, Klaus Knopper, Charly Kühnast, Tim Schürmann, Frank Hofmann, Kurt Seifried, Bruce Byfield, Timo Schöler, Zack Brown, Jon “maddog” Hall, Alexandre Borges, Cezar Taurion, Gilberto Magalhães, Augusto Campos. Tradução Laura Loenert Lopes. Revisão Flávia Jobstraibizer. Editores internacionais Uli Bantle, Andreas Bohle, Jens-Christoph Brendel, Hans-Georg Eßer, Markus Feilner, Oliver Frommel, Marcel Hilzinger, Mathias Huber, Anika Kehrer, Kristian Kißling, Jan Kleinert, Daniel Kottmair, Thomas Leichtenstern, Jörg Luther, Nils Magnus. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 3675-2600
Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com
Amy Phalen (América do Norte) aphalen@linuxpromagazine.com
Hubert Wiest (Outros países) hwiest@linuxnewmedia.de
Diretor de operações 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.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linuxpromagazine.com – América do Norte 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. Rua São Bento, 500 Conj. 802 – Sé 01010-001 – São Paulo – SP – Brasil Tel.: +55 (0)11 3675-2600 Direitos Autorais e Marcas Registradas © 2004 - 2012: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3675-2600 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428
Impresso no Brasil
Linux Magazine #99 | Fevereiro de 2013
Ao andar pelo centro da cidade de São Paulo, é com vergonha que observamos a enchente de camelôs “vendendo” software como se fosse banana. Entre os transeuntes, ninguém parece se incomodar com o fato de que esse comércio clandestino de softwares “quebrados” (cracked) presta um desserviço à economia nacional e à adoção de alternativas viáveis, mormente àquelas baseadas emSoftware Livre e de Código Aberto (SL/CA). Mais de uma vez já ouvimos com tristeza a afirmação de que, no Brasil, todo software é “livre”. A pirataria de software está tão arraigada na cultura nacional, que nem parece ilegal. Mais ainda nos causa espanto a hipocrisia dos agentes da lei, que fingem não estar vendo o que os camelôs fingem não estar vendendo. Esse tipo de situação, a nosso ver desgovernada, é um exemplo típico da teoria da vidraça quebrada, que postula que quanto mais vidros estiverem quebrados em uma vidraça, mais vidros continuarão a ser quebrados, até que não reste mais nenhum intacto. Similarmente, enquanto não houver uma repressão real desse tipo de atividade comercial, tanto maior será o problema a ser enfrentado no longo prazo. Por outro lado, vale perguntar se essa repressão é do interesse do fabricante de software. Em março de 2007, causou furor a afirmação de Jeff Raikes, atual CEO da Fundação Bill & Mellinda Gates, e, até início de 2008, presidente da divisão de negócios corporativos da Microsoft, que reproduzo ipsi literis: “If they’re going to pirate somebody, we want it to be us rather than somebody else” (em tradução livre: “Se eles vão piratear de alguém, nós queremos que seja de nós ao invés de qualquer outro”). Mais recentemente, Markus “Notch” Persson, o criador do jogo Minecraft, publicou em sua conta do Twitter a seguinte declaração, quando interpelado por um usuário que disse não dispor de recursos para adquirir o programa: “Pirateie. Se você ainda gostar dele quando puder pagar no futuro, então compre. E não esqueça de se sentir mal.” Quando do início das operações da Linux New Media no Brasil, em meados de 2004, nosso sistema de editoração eletrônica só funcionava em versões anteriores ao Mac OS X. Quando tntamos obter uma cópia legal do Mac OS 9.2.2 para ser executado em modo emulado dentro do Mac OS X e permitir o funcionamento de aplicativos no modo “clássico”, um representante oficial de uma certa empresa de Cupertino aqui no Brasil nos recomendou adquiri-lo de “comerciantes” da região da Santa Ifigênia, em São Paulo, já que o programa não era mais comercializado pela companhia! Todas as distorções acima poderiam ser evitadas através de uma adoção mais disseminada do SL/CA, mas, desgraçadamente, essa disseminação é impedida em grande parte pela facilidade de obtenção de software através da pirataria. Que tal nos engajarmos em uma campanha contra esse tipo de prática? A Microsoft com certeza vai nos agradecer (ou não)... n
EDITORIAL
Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br
Rafael Peregrino da Silva Diretor de Redação 3
ÍNDICE
CAPA Á prova de tudo
31
Qual administrador de redes e sistemas pode atestar com toda a certeza o fato de que seus servidores são à prova de falhas? Os 10 maiores truques de recuperação de sistemas
32
O Linux possui diversas ferramentas poderosas para correção e recuperação de sistemas danificados. Conheça-as e fique mais tranquilo se algo der errado! Recuperação de dados e partições
40
Se o seu sistema Linux ou Windows não inicializar, ou se você está preocupado com o fato de que o disco rígido está nas últimas, a primeira coisa que a fazer é salvar os dados da partição e copiá-los para um local seguro.
4
www.linuxmagazine.com.br
Linux Magazine 99 | ÍNDICE
ANÁLISE
COLUNAS Augusto Campos
07
Klaus Knopper
08
Charly Kühnast
10
Alexandre Borges
12
Kurt Seifried
14
Zack Brown
18
NOTÍCIAS
Gestão avançada de arquivos
67
Se o usuário já domina os comandos utilizados diariamente para realizar a manipulação de arquivos, pode querer fazer mais.
Vigilância constante
71
Aplicativos e processos raramente revelam o que fazem em segundo plano, mas algumas ferramentas interessantes para programadores e administradores podem monitorar essa atividade e registrar atividades no sistema.
Geral 20 ➧ Nvidia considera vender smartphones e tablets ➧ Roteador de bolso da Asus promete ser o menor do mundo ➧ BitTorrent lança novo serviço P2P, chamado Sync ➧ Nokia oficializa fim do sistema operacional Symbian
CORPORATE Notícias 22 ➧ Evernote planeja abertura de escritório no Brasil
SEGURANÇA Medidas preventivas
➧ VMware junta-se ao Open Source Software Institute
Entrevista com Marcos Polidoro
24
Coluna: Jon “maddog” Hall
26
Coluna: Cezar Taurion
28
Coluna: Gilberto Magalhães
30
53
Os rootkits permitem que invasores assumam o controle completo de um computador. Descrevemos os truques usados para obter acesso ao kernel Linux e orientações sobre como realizar o hardening do kernel para prevenir tais ataques.
ANDROID Do seu computador para o mundo
46
Se você criou um aplicativo que irá revolucionar o mercado Android, é hora de aprender como publicá-lo para o mundo e, quem sabe, ganhar dinheiro com ele!
REDES
TUTORIAL Transferência de grandes arquivos
Redes velozes 57
Várias alternativas permitem contornar os limites de tamanho quando transferimos um arquivo do ponto A ao ponto B. Piloto automático
50
Com o TCP Fast Open, o Google introduz uma extensão do protocolo TCP, implementado no kernel Linux, o que evita a latência desnecessária no tráfego de rede e promete até 41% de aumento na velocidade da rede, dependendo do aplicativo.
61
Crie caixas de diálogo atraentes e interativas para seus usuários de desktop com o SSH e um pouco de conhecimento em Bash.
SERVIÇOS Editorial 03 Emails 06 Linux.local 78 Preview 82
Linux Magazine #99 | Fevereiro de 2013
5
Coluna do Augusto
COLUNA
O rifle da discórdia O licenciamento de software versus seus inúmeros usos.
U
m rifle que custa US$17.000, foi apresentado em um evento internacional da indústria eletrônica no início deste ano e acabou gerando várias controvérsias. Uma delas nos interessa especialmente, pois trata de uma questão relacionada a uma característica essencial das licenças livres e das licenças open source. A arma em questão foi projetada pela empresa texana TrackingPoint, que a chama de PGF, sigla em inglês para “arma de fogo guiada com precisão”. Além dos componentes usuais de um rifle de caça, ela inclui um sistema que captura e analisa imagens de video por meio da mira da arma, e permite ao caçador/usuário identificar e marcar seu alvo, e a partir daí, o sistema se encarrega de acompanhá-lo e, levando em conta as condições da arma, distância, inclinação, temperatura, vento etc., e passa a mostrar com precisão onde a bala irá acertar, só liberando o gatilho para o disparo quando detecta que o alvo será atingido. Para completar, o sistema registra tudo em video e permite acompanhar remotamente ao vivo em dispositivos móveis, ou mesmo postar depois em redes sociais e sites de compartilhamento. As controvérsias não tardaram a surgir, especialmente vindo dos campos contrários à prática da caça ou às armas de fogo. São questões que merecem discussão, mas a que traz o assunto a esta página é outra: o sistema de mira em questão é executado sobre uma distribuição Linux instalada no rifle. Este detalhe, unido aos focos de controvérsia mencionados acima, levou a outra controvérsia, defendida por integrantes de ambos os grupos: por que a licença do Linux permite que ele seja usado em armamentos e/ou para a caça de animais? Isso não poderia ser “corrigido”?
Linux Magazine #99 | Fevereiro de 2013
Trata-se de uma pergunta frequente, entretanto, e muitas vezes associada a outras visões de mundo: por que a licença permite o uso em aplicativos que violam a privacidade de terceiros? Ou por governos totalitários? Ou em atividades anti-ecológicas? As respostas são frequentes também, vindas de pessoas como Richard Stallman ou mesmo o autor do kernel em questão, Linus Torvalds, que usa exemplos bem claros para ilustrar a questão: a licença em questão (a GPL) trata da disponibilidade do software e do código-fonte correspondente, e não de qual o uso será feito dele – para isso, se houver algum mecanismo de controle a empregar, será outro. No resumo torvaldiano, se alguém usar o Linux na implementação de tubarões mecânicos com lasers e disponibilizar o código-fonte, a licença terá sido cumprida, e é assim mesmo que ela funciona. A definição de licença livre (da FSF) exige que o usuário tenha “a liberdade de executar o programa, para qualquer propósito” (e estas três últimas palavras são importantes), e a definição de open source (da OSI) exige que as licenças não façam restrição quanto ao campo de aplicação ou de uso do software. Assim, vale a reflexão: o software é um instrumento com muitos usos possíveis, e o mesmo kernel que aciona um equipamento médico pode fazer funcionar uma mirade arma, se este kernel for livre e open source. A discussão sobre se estes usos são corretos ou não, é válida, mas transcende a questão do licenciamento, exatamente como deveria ser. 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.
7
Coluna do Alexandre
COLUNA
NMAP – sétima parte Conheça e entenda o funcionamento do Idle Scan, criado pelo hacker italiano popularmente chamado de Antirez.
U
m dos métodos mais curiosos de escaneamento do NMAP é aquele que conhecemos por Idle Scan, criado pelo hacker italiano Salvatore Sanfilippo (mais conhecido como “Antirez”), embora muitos profissionais desconheçam seu funcionamento e utilidade. Para que esta metodologia de escaneamento funcione é necessário que tenhamos disponíveis três máquinas, da quais a primeira será a máquina alvo, a segunda será a nossa máquina (máquina invasora) e a terceira será a máquina zumbi. Além disso, um conceito que será muito importante é o IPID. Todo pacote que circula pela Internet carrega este identificador que, normalmente, é incrementado de maneira sequencial. Uma dúvida até este momento permanece: o que é a máquina zumbi e porque precisamos dela? Ela é a máquina que vamos usar como referência, ou seja, nossos pacotes serão forjados (spoofed) para parecerem que foram originados desta máquina. No entanto, o assunto não termina aqui. Nosso escaneamento será feito sem interação direta da máquina invasora com a máquina alvo já que estaremos inferindo se uma porta está ou não aberta de maneira indireta. Como isto funciona? A primeira e mais importante preocupação deste processo é escolher uma máquina que esteja ociosa (daí vem o nome “idle scan”) e que não esteja trafegando pacotes, ou seja, que não esteja sendo usada. E por qual motivo? A motivação pode ser justificada da seguinte forma: imagine que, como hackers, enviamos um pacote (SYN + ACK) para a máquina alvo e recebemos como resposta um RST (até porque ela não está esperando um SYN + ACK) com o IPID 40000. Esperamos um determinado tempo, repetimos o processo e a resposta vem em um pacote com o IPID 40001. Isto é ótimo pois passaram alguns segundos e, quando enviamos um 12
pacote, a resposta veio com um incremento de apenas 1, o que significa que esta máquina não está trafegando pacotes, portanto está ociosa (idle) e é perfeita para uso em um Idle Scan. Se estívessemos enviando um pacote, obtido uma primeira resposta com o IPID de 40000 e, na segunda vez, obtivéssemos um IP de 45000, por exemplo, não seria uma boa escolha de máquina zumbi. E por que precisamos desta máquina zumbi? Para que possamos realizar o processo de escaneamento do seguinte modo: a máquina invasora envia um pacote (SYN) forjado (usando o IP da máquina zumbi) para a máquina alvo e em uma porta específica (por exemplo: porta 23). Deste ponto, podem ocorrer três possibilidades, sendo que apenas duas nos importam neste momento: ou a porta está aberta ou a porta está fechada. Se a porta
Um conceito muito importante é o IPID. Todo pacote que circula pela Internet carrega este identificador que, normalmente, é incrementado de maneira sequencial. estiver aberta, a máquina alvo enviará uma resposta (SYN + ACK) para a máquina zumbi (lembre-se: nós forjamos o pacote) e permanece aguardando um retorno. Como a máquina zumbi, que é inocente nesta história, não esperava um pacote SYN + ACK já que esta não enviou um pacote SYN para a máquina alvo e nem
www.linuxmagazine.com.br
na porta explicitada (23), ela simplesmente responde com um pacote de RST (e com IPID=40002) para a máquina alvo, quebrando a conexão. Se a porta estiver fechada, a máquina alvo envia um pacote de RST (terminando a conexão) para a máquina zumbi (quebrando a conexão) e esta última simplesmente não envia nada em resposta, mantendo contagem do IPID em 40001. É aí que está a beleza do processo acima: se a porta escaneada está aberta, a máquina zumbi deve enviar um pacote RST (provavelmente com IPID 40002 já que está ociosa) para a máquina alvo ao receber dela um pacote com os parâmetros SYN+ACK. Quer dizer que, se em seguida enviarmos, a partir da máquina hacker, um pacote SYN+ACK para a máquina zumbi, devemos receber um pacote com IPID 40003, confirmando que a porta 80 da máquina alvo está aberta. Caso seja retornado um pacote com IPID 40002, significa que a porta está fechada. Do exposto acima, segue a regra: acréscimo de 2 no IPID (IPID=40001 para IPID=40003) da máquina zumbi se traduz em porta aberta na máquina alvo e incremento de 1 no IPID da máquina zumbi significa que a porta aferida está fechada (IPID=40001 para IPID=40002) na máquina alvo.
Tem novidade na Coleção Academy!
Por fim, a parte mais fundamental que é como executar este tipo de escaneamento no NMAP. Como mencionei antes, às vezes tudo funciona bem. Neste primeiro caso abaixo, está sendo realizado um escaneamento do tipo idle ( -sI), sem enviar um pacote ICMP inicial (-PN) envolvendo apenas as portas 22, 23, 25, 53, 80 e 110, onde a máquina zumbi é 192.168.1.111 (Windows 7), a máquina alvo é 192.168.1.102 (Ubuntu 11.10) e a máquina invasora (de onde partiu o escaneamento) tem endereço 192.168.1.80 (RHEL 6.0): # nmap -PN -p22,23,25,53,80,110 -sI 192.168.1.111 192.168.1.102
Se funcionar, o leitor verá o escaneamento sendo realizado, caso contrário, uma mensagem do NMAP será explicitada explicando para que seja tentada outra máquina como zumbi. n Alexandre Borges (linkedin: br.linkedin.com/in/aleborges) é instrutor e especialista sênior em sistemas operacionais Unix, Linux, Banco de Dados, Virtualização, Cluster, Storage, Servidores, Backup, Desempenho e Segurança, além de possuir profundo envolvimento com assuntos relacionados ao kernel Linux.
Instalação e congifuração de servidores VoIP com Asterisk. Configuração de ramais, extensões, secretária eletrônica, monitoramento e espionagem de chamadas, planos de discagem, URA e muitos outros aspectos que abordam o uso de centrais telefônicas IP PBX. Disponível no site www.LinuxMagazine.com.br
Linux Magazine #99 | Fevereiro de 2012
13
Coluna do Kurt
COLUNA
Backup seguro de sistemas
Criar backups é uma coisa, ter a certeza de que eles são seguros é outra. Conheça algumas dicas para garantir que o processo seja o menos doloroso possível.
F
azer cópias de segurança dos seus dados é fundamental. Se não criarmos backups utilizáveis regularmente, quaisquer interrupções, falhas de disco ou erros administrativos podem causar a perda permanente de dados. Mas, embora os backups abordem os aspectos de disponibilidade – e até certo grau de integridade – da tríade de segurança AIC (disponibilidade, integridade, confidencialidade), podem apresentar riscos significativos no que diz respeito à confidencialidade ou sigilo dos dados. Em outras palavras, quando centralizamos todos os dados no armazenamento removível (como, por exemplo, em fitas), as coisas podem ficar ruins muito rapidamente se as fitas forem extraviadas ou roubadas.
Backups criptografados
A solução, claro, é criptografar os backups. Dependendo do risco que estiver disposto a correr, uma criptografia forte pode até permitir o armazenamento de arquivos em locais potencialmente inseguros (por exemplo, em uma nuvem pública). Em geral, a maioria dos programas de backup suportam AES de 256-bit, que são extremamente fortes; portanto, com chaves corretamente geradas que estão seguras contra invasores, os dados permanecerão seguros por pelo menos algumas décadas. No entanto, devemos considerar várias outras questões ao decidir como aplicar criptografia aos backups e como gerenciar as chaves de criptografia.
Dados em trânsito e em repouso
De um modo geral, os dados são considerados “em trânsito” (quando enviados através de uma rede) ou “em repouso” (quando escritos para a mídias externas ou disco rígido). Dados em trânsito são vulneráveis à interceptação – até mesmo redes locais podem ser comprometidas e configuradas para espelhar dados para um servidor controlado pelo invasor. Isto significa que qualquer criptografia usada para proteger dados em trânsito também deve permitir ao cliente autenticar no servidor 14
e vice-versa (por exemplo, para que o invasor não possa injetar dados maliciosos em backups que posteriormente serão utilizados para restaurar um sistema). Soluções típicas aqui incluiriam SSL com certificados ou softwares VPN, tais como o uso de certificados IPsec ou autenticação compartilhada. Dados em repouso também apresentam alguns desafios significativos já que podem possuir vida útil legível medida em décadas ou mais. Além disso, a densidade dos meios de armazenamento modernos significa que algo do tamanho de um livro de bolso pode conter praticamente todos os dados que são importantes para um usuário. Controle de inventário é um recurso muitas vezes ignorado, mas, ter a certeza de que sabemos onde estão os backups e garantir que estejam sob controle, ou sob o controle de uma terceira parte confiável, é fundamental para garantir longa vida aos dados em repouso.
Cliente ou servidor?
Uma questão importante é onde fazer a criptografia. A maioria das soluções de backup são agora baseadas em cliente/servidor, pois quase todo mundo tem mais de um servidor para fazer backup, então precisamos de algum gerenciamento centralizado para manter tudo funcionando corretamente. Se criptografarmos os dados no cliente, os dados serão codificados de imediato e o risco de exposição é minimizado. A desvantagem, porém, é que a verificação de dados no servidor exigirá as chaves privadas para estar presente, o que poderia criar um alvo potencial para os invasores. Criptografar os dados no servidor centralizaria o gerenciamento de chave e permitiria realizar mais facilmente a desduplicação.
Gerenciamento de chave
Se perdermos as chaves dos dados criptografados ou as frases utilizadas para desbloqueá-los, também perderemos o acesso a eles. Isso também significa que, se as pessoas que
www.linuxmagazine.com.br
conhecem as senhas morrerem ou deixarem a empresa, também se perderá o acesso aos dados. Em outras palavras, destaque mais de uma pessoa para acessá-los. Dividir a frase (por exemplo, cada pessoa digita uma metade da frase) também pode impedir que alguém venda todos os dados para um concorrente. Rotacionar chaves também é uma boa ideia, em parte porque ajuda a reforçar as políticas para lidar com as mudanças de chave, que costumam acontecer quando as pessoas entram e saem de sua organização, mas também porque quanto mais dados criptografados utilizando uma chave única, mais sério será o compromisso atribuído à essa chave. Finalmente, certos requisitos legais podem afetar a retenção e acesso às chaves de criptografia, portanto, consulte um advogado, se necessário (estas exigências aplicam-se principalmente a informações financeiras, de saúde e informações pessoais, mas diferem amplamente por país, então é preciso manter-se informado a respeito).
Tipos de dados
Antes de falar sobre o software de backup, mencionaremos brevemente os diferentes tipos de dados que precisam de resguardo. O primeiro tipo (e mais simples) é simplesmente de onde devemos pegar o arquivo inteiro. O próximo tipo é de dados estruturados, tais como bancos de dados, serviços NoSQL e assim por diante. O desafio aqui é que não podemos pegar diretamente os arquivos porque eles não estão em um estado consistente (os dados podem estar à espera de serem gravados, transações podem estar inacabadas etc). Nestes casos, desligar o serviço e depois pegar o arquivo raramente é uma opção pois interrupções não são possíveis. Isto significa que o software de backup realmente precisa comunicar-se com o aplicativo. Para os aplicativos mais populares (como a maioria dos bancos de dados), encontrar software de backup que possa se comunicar com eles e extrair os dados não deve ser muito difícil. No entanto, para muitas soluções NoSQL modernas e de Big Data, backups ainda podem ser um desafio, então o usuário poderia pensar em arquitetar seu software para tornar os backups possíveis (por exemplo, gravando dados de objeto para um arquivo de log ou enviando objetos para um servidor de backup para ser arquivado).
Backup de software
No mundo Linux há várias opções para softwares de backup. Dois dos mais populares são o Amanda [1] e o Bacula [2]. Ambos são em código aberto, e o Amanda é suportado pelo Zmanda, que constrói uma versão comercial do Amanda com recursos adicionais. O Bacula oferece suporte para o SQLite, MySQL e PostgreSQL. O Amanda também pode suportá-los, mas precisaremos basicamente criar alguns scripts para esvaziar os bancos de dados primeiro.
Linux Magazine #99 | Fevereiro de 2013
É claro que existem centenas de outros programas de backup de código aberto disponíveis – a maioria deles não são muito bons (ou seja, carecem de refinamento, recursos etc.) – assim, em geral, aconselhamos o usuário a aderir ao Amanda ou ao Bacula. O Bacula atualmente também oferece desduplicação limitada a arquivo; no entanto, o recurso é relativamente simples: o usuário especifica uma “base” de backup (por exemplo, de um servidor padrão), e depois faz o backup de servidores adicionais que executam o mesmo software, onde o Bacula irá desduplicar no nível de arquivo. A boa notícia é que vários sistemas de arquivos já oferecem suporte a desduplicação, como o Opendedup [3], então esta tecnologia deve estar disponível no Amanda e no Bacula também, em algum momento.
Backup NoSQL
Embora quase todos os serviços NoSQL possuam redundância embutida e distribuição de dados, este recurso não ajudará se o usuário cometer um erro administrativo e apagar um monte de dados ou ainda se o centro de dados inteiro ficar alagado (como aconteceu recentemente durante a passagem do furacão Sandy pelos Estados Unidos). Com os sistemas NoSQL, normalmente possuímos três opções: voltar o sistema de arquivos (por exemplo, usando snapshots LVM), replicar os dados para fora do local, e usar uma ferramenta específica para extrair todos os dados.
Conclusão
Considerando o quão popular a Big Data está se tornando, não é nenhuma surpresa que as soluções e estratégias de backup estejam correndo atrás do prejuízo. Para soluções NoSQL, criar backups mantendo o funcionamento do sistema pode ser um desafio, logo, o planejamento para estas situações agora pode poupar muitas dores de cabeça posteriores. E, caso o leitor não esteja utilizando NoSQL ainda, as possibilidades são de que venha a utilizá-lo em um futuro próximo, portanto é melhor já tomar a frente da curva de aprendizado. Em algum momento, esperamos obter bons recursos de dumping construídos sobre programas de backup existentes, porque as coisas só devem começar a ficar maiores. n
Mais informações [1] Amanda: http://www.amanda.org [2] Bacula: http://www.bacula.org [3] Opendedup: http://www.opendedup.org
15
CORPORATE | Entrevista: Marcos Polidoro
Entrevista: Marcos Polidoro
CORPORATE
A volta por cima Depois de enfrentar diversos altos e baixos, a Mandriva, com sua subsidiária brasileira atualmente alocada na cidade de Curitiba, no Paraná, dá a volta por cima em grande estilo. por Flávia Jobstraibizer
E
m entrevista exclusiva para a Linux Magazine, Marcos Polidoro, CEO da Mandriva, nos conta quais foram os problemas enfrentados pela empresa – e dos quais diversos boatos surgiram – e como a companhia conseguiu dar a volta por cima, lançando e mantendo produtos inovadores no mercado. Linux Magazine » Como a Mandriva se posiciona no mercado atual, frente aos seus concorrentes diretos como Suse, Red Hat etc.? Marcos Polidoro » A Mandriva é uma empresa especializada no fornecimento de produtos, soluções, serviços e treinamentos em Linux. Assim como estas empresas, a Mandriva possui uma versão gratuita de seu sistema operacional, desenvolvida em colaboração com a comunidade, chamada OpenMandriva. Também possuímos uma versão Enterprise do sistema para atender às necessidades das empresas e governo. Sendo a única empresa europeia focada em uma distribuição Linux específica para servidores, temos como objetivo nos diferenciar pelos esforços que colocamos em nossos produtos com a finalidade de garantir a integridade e confidencialidade dos dados de nossos clientes. O nosso lema é “Proclame sua independência digital”, e é exatamente isso o que queremos para os nossos clientes. Independência, livre de qualquer influência externa. 24
LM » Sobre os boatos acerca do fechamento da Mandriva, o que é mito e o que é verdade? MP » Passamos por um momento de turbulência devido algumas divergências entre os investidores. Felizmente essa situação foi resolvida em março de 2012 e, desde então, estamos trabalhando fortemente no desenvolvimento de produtos inovadores. LM » Os problemas enfrentados pela Mandriva a fizeram levantarse/ressurgir mais forte? Conte-nos mais a respeito. MP » A Mandriva teve problemas no passado por concentrar seus esforços na distribuição voltada para desktop, o que não é – sob o nosso ponto de vista – essencial atualmente. Decidimos em 2012 focar somente em produtos corporativos, no sentido de oferecer a melhor e mais amigável versão para servidores, bem como aplicativos para seu pleno gerenciamento. LM » Quais são as metas a serem seguidas para o ano de 2013 e os planos para o futuro? MP » A principal e mais importante meta que temos atualmente é manter a qualidade de nossos produtos e serviços para os atuais clientes e, através de nossos novos produtos para servidor, trazer a facilidade de uso da distribuição para o mercado, permitindo que as empresas gastem menos tempo e recursos de TI. Temos também, a in-
tenção de desenvolver parcerias com integradores e fornecedores de hardware. Estamos atentos às tendências de mercado e desenvolvendo soluções específicas para essas tendências. O produto CloudPulse (produto voltado para o inventário e monitoramento de parques computacionais baseados em nuvem), lançado em setembro de 2012, nos proporcionou uma excelente experiência, mostrando uma perfeita adequação para as empresas que estamos buscando. LM » Qual é o principal foco da Mandriva neste momento? MP » Estamos focados no mercado corporativo, em parcerias de OEM (Original Equipment Manufacturer, ou seja, distribuições embarcadas nativamente em conjunto com o hardware) e fornecedores de hardware. Além disso, estamos investindo muito em pesquisa e desenvolvimento, o que em breve, nos proporcionará novos produtos. LM » Quais são os principais novos produtos que a Mandriva possui ou está pretendendo inserir no mercado a curto prazo? MP » Estamos com uma variedade de produtos muito interessantes, que resumidamente possuem as seguintes características: Mandriva Class – é uma solução completa para administração e controle de salas de aula, permitindo integração entre o professor e seus alunos. O pro-
www.linuxmagazine.com.br
Entrevista: Marcos Polidoro | CORPORATE
fessor tem total controle das atividades em sala de aula, definindo e controlando as atividades e computadores dos alunos. O produto é compatível com Linux, Windows, Mac OS X e em breve Android. Mandriva Pulse2 – é uma solução de inventário de hardware e software incluindo sistema integrado de helpdesk, backup e restauração de sistemas. Este produto é compatível com Linux, Windows, Mac OS X e Android. Mandriva CloudPulse – é uma solução com todas as características do Pulse2 mas hospedada e gerenciada através da nuvem de forma segura. Mandriva Business Server (MBS) – é uma solução corporativa da Mandriva para servidores de pequenas, médias e grandes empresas, onde toda a configuração do servidor é realizada através de uma interface ágil e simples, com a utilização do navegador preferido pelo administrador. Mandriva OEM – é uma versão do Mandriva Linux totalmente personalizada para ser embarcada em desktops, notebooks, netbooks e All-in-Ones de acordo com as necessidades e pré-requisitos do cliente. Mandriva Thin Client – é um mini sistema Mandriva Linux personalizado e otimizado para funcionamento em thin clients e equipamentos de pequeno porte em geral. Mandriva ARM – é um porte da distribuição Mandriva Linux para a plataforma ARM, atualmente em fase de testes em alguns modelos de leitores de ebook. Mandriva Training – é uma linha completa e atualizada de treinamentos profissionais e certificações em Linux. LM » A Mandriva Conectiva Brasil participa da Fundação Mandriva criada recentemente na França? Como é esta participação e no que ela consiste? MP » A responsabilidade da distribuição para desktops foi transferida para a comunidade OpenMandriva e tornou-se um projeto independente.
Linux Magazine #99 | Fevereiro de 2013
Mas é importante frisar que a Mandriva SA apoia fortemente este projeto, patrocinando servidores e participando com desenvolvedores e gerentes de desenvolvimento no Brasil e na França. LM » Com quais verticais de mercado a Mandriva pretende alinhar-se? MP » Nosso principal objetivo são SMEs (Small and Medium Enterprises ou pequenas e médias empresas). Acreditamos que este mercado específico não é suficientemente direcionado para grandes players e essas empresas podem obter grandes benefícios ao mudar para software livre e de código aberto. Porém, temos estudos de casos concretos para atender governos e grandes corporações. Possivelmente lançaremos uma oferta direcionada a este mercado ainda este ano. LM » Como está o cenário da participação societária da Mandriva e como está a Mandriva Brasil nesse sentido? MP » Sendo a Mandriva uma sociedade anônima, possui uma estrutura de acionistas que evolui a cada dia. Atualmente, está basicamente composta por: ➧ Uma empresa de investimento com sede em Chipre (Turquia) ➧ Uma empresa Suíça ➧ Mandriva SA – Gestão LM » Qual é a atual presença de mercado da empresa? Ela possui filiais no Brasil? No mundo? Quais são e onde estão localizadas? MP » A Mandriva está sediada em Paris, na França e possui sua subsidiária brasileira em Curitiba, no Paraná. Temos ainda representantes na Rússia, Austrália, Alemanha, Coréia do Sul, Egito, África e Oriente Médio. LM » Quais foram os projetos mais significativos no qual a Mandriva esteve envolvida em 2012 e qual o significado destes para a empresa? MP » O PROUCA – Programa um computador por Aluno do Governo Federal, sem dúvidas foi um dos mais significativos e desafiadores dos últimos anos. Desenvolvemos
uma versão totalmente adaptada para educação em parceria com a Intel e a Positivo Informática e que é dos maiores projetos tecnológicos voltados para a educação do Brasil. Foi realmente um grande desafio e ao mesmo tempo muito gratificante, pois sabíamos que a maioria das crianças teriam a sua primeira experiência com computadores usando o nosso sistema Linux. Outros projetos interessantes não podem ser citados por estarem sob NDA (acordo de confidencialidade). LM » Quais são os principais parceiros da Mandriva neste momento? MP » Temos grandes parceiros nos segmentos de comércio, educação, hardware e indústria. A lista completa dos principais parceiros pode ser vista em nosso site [1]. LM » A Mandriva provê suporte a nível empresarial ou doméstico para seus produtos? Como empresas e usuários podem beneficiar-se disso? MP » Fornecemos uma ampla gama de suporte empresarial para os nossos produtos. Isso inclui recursos básicos como acesso a nossa base de conhecimento (FAQ), suporte técnico por e-mail, telefone, acesso remoto e on-site com tempos de resposta garantidos. Como a linha de produto Desktop foi transferida para a Comunidade, não oferecemos atualmente suporte aos usuários domésticos. LM » Outros itens que deseja acrescentar? MP » Acredito que resumidamente conseguimos esclarecer a situação atual da Mandriva e de nossos planos para o futuro. Queremos aproveitar para agradecer a oportunidade da entrevista e esperamos demonstrar alguns de nossos novos produtos nas próximas edições. n
Mais informações [1] Mandriva: http://www. mandriva.com.br
25
Recuperação de sistemas
CAPA
Á prova de tudo Qual administrador de redes e sistemas pode atestar com toda a certeza o fato de que seus servidores são à prova de falhas? por Flávia Jobstraibizer
S
ervidores e sistemas são como pessoas: em algum momento estão sujeitos à erros ou falhas. E assim como as pessoas, os sistemas também estão propensos à uma diversidade de fatores que podem acarretar problemas: uma queda de energia que danifica os setores de um disco, uma falha no sistema de armazenamento de dados por conta da proximidade do término da vida útil do disco, um superaquecimento que danificou alguma partição etc. São inúmeros os problemas que podem colocar os seus dados em risco. A recuperação de um sistema pode ser o fator crucial para a continuidade do negócio, pois é comum que as empresas apostem em storages (robustos sistemas de armazenamento, geralmente com espelhamento e duplicação para backup) para armazenar todo tipo de informação de clientes, passando por dados desde os mais simples, chegando até mesmo a dados confidenciais. A perda de um disco, por exemplo, pode ser prejudicial em caráter irrevogável, acarretando prejuízos incalculáveis. Nem sempre podemos contar que o sistema de backup estará disponível ou íntegro (backups também estão sujeitos à falhas ou corrupção dos dados),
Linux Magazine #99 | Fevereiro de 2013
e portanto há a necessidade de entender e dominar as técnicas de recuperação de dados, conhecimento este, que pode ser útil para a recuperação de um desktop da rede, de um servidor, de um storage ou mesmo do servidor de backup da empresa. Nesta edição da Linux Magazine, vamos abordar um pouco do extenso tema Recuperação de Sistemas. Klaus Knopper, nosso colunista, aborda este tema através de um artigo contendo as dez principais dicas para recuperação de sistemas, e que pode ser um excelente ponto de partida para você que está enfrentando o problema de perda de partição, impossibilidade de inicialização por conta da corrupção do bootloader e outros problemas. Outro importante artigo trata da recuperação de dados e partições, problema comum quando algo simplesmente “desaparece” do sistema. Como chegar até seus dados quando o sistema simplesmente se recusa a inicializar ou a cooperar? Boa leitura! n Matérias de capa Os 10 maiores truques de recuperação de sistemas Recuperação de dados e partições
34 38
31
Publicação de aplicativos no Google Play
ANDROID
Do seu computador para o mundo Se você criou um aplicativo que irá revolucionar o mercado Android, é hora de aprender como publicá-lo para o mundo e, quem sabe, ganhar dinheiro com ele! por Flávia Jobstraibizer
C
om a facilidade de programação proveniente dos SDKs (Software Development Kit ou Kit para Desenvolvimento de Software) para desenvolvimento Android, muitos programadores já se aventuraram ou decidiram especializar-se na criação e desenvolvimento de aplicativos para o sistema operacional móvel da gigante de Redmond. Com cada vez mais fabricantes adotando o Android como sistema operacional padrão, há também um aumento na demanda e consequentemente na oferta por aplicativos, que diariamente são lançados na loja do Google. Uma tímida fatia destes aplicativos atualmente está sendo desenvolvida por brasileiros. De acordo com um estudo realizado pelo site The Sociable [1], o Google Play está prestes a chegar à incrível marca de um milhão de aplicativos publicados, possuindo atualmente cerca de 850.000 soft46
wares prontos para serem baixados nos dispositivos que utilizam-se do sistema operacional móvel mais popular do mercado. Se a previsão apontada pelo estudo estiver correta, a loja do Google será a primeira e única loja de aplicativos existente no mercado – até o presente momento, claro – que atingirá esta marca, deixando pra trás outras lojas como a famosa Apple Store e a posição de lanterninha para a Windows Phone Store. Alinhados com este sucesso, cada vez mais desenvolvedores procuram por cursos, assistem palestras e se especializam na criação de aplicativos cada vez mais úteis e eficazes. No mercado brasileiro temos inúmeros aplicativos úteis e bem desenvolvidos, dentre os quais podemos citar o programa para monitoramento do caótico trânsito brasileiro, o MapLink Trânsito. Outros ótimos exemplos são os aplicativos bancários como o Caixa e o Itaú, aplicativos dos respectivos
bancos e nos quais é possível efetuar quase todos os tipos de transações, da mesma forma que seria feito através do Internet Banking. Aplicativos de grandes livrarias com leitores de livros integrados ou mesmo para comprar remédios em farmácias também estão disponíveis. Todos eles criados por brasileiros e disponíveis no Google Play. Sendo assim, imagino que o leitor que é ou pretende ser um desenvolvedor profissional esteja ávido por obter informações sobre como entrar neste mundo mágico dos “fornecedores” de aplicativos do Google Play. É o que você vai aprender nas proximas páginas.
Exportar seu aplicativo
O primeiro passo após a conclusão efetiva do desenvolvimento do seu aplicativo, é exportá-lo para o formato instalável em dispositivos Android. Antes de pensar em enviar para o Google Play, é impor-
www.linuxmagazine.com.br
Publicação de aplicativos no Google Play | ANDROID
tante que o desenvolvedor instale o aplicativo fisicamente na maior quantidade possível de aparelhos (compartilhe seu aplicativo com os amigos, por exemplo) para que possíveis erros sejam corrigidos antes que os usuários façam suas críticas na página do produto na loja do Google, o que queimaria seu lançamento logo no início. Para enviar o seu aplicativo para os amigos sem a necessidade de passos adicionais, simplesmente acesse o diretório bin do seu aplicativo e copie o arquivo com a extensão .apk presente na pasta. Este arquivo poderá ser instalado em qualquer dispositivo, mas como não se trata de um arquivo assinado digitalmente (é assinado por uma chave fictícia criada pelo Eclipse) não deve ser enviado para o Google Play. É importante lembrar ainda, que, se o seu aplicativo foi criado com a opção debuggable="true" (presente no arquivo AndroidManifest.xml), você deve retirá-la antes de exportar o arquivo final. Como a esmagadora maioria dos desenvolvedores utilizam o Eclipse como ambiente de desenvolvimento, nos basearemos nele durante os passos de exportação do aplicativo. Com o aplictivo pronto, clique em File/Export para iniciar o processo de exportação do aplicativo. Na janela que será aberta, selecione a opção Export Android Application (figura 1). Caso você tenha diversos projetos armazenados, o Eclipse pode perguntar qual deles deseja exportar. Basta selecioná-lo clicando no botão Browse. O Eclipse irá verificar se existem erros e caso contrário você poderá continuar clicando em Next. Para garantir a autenticidade do seu aplicativo, é necessário assiná-lo através de um certificado digital. Os certificados podem ser adquiridos pelas principais empresas de certificação como Certisign e Thawte, mas seus
Linux Magazine #99 | Fevereiro de 2013
Figura 1 O assistente do Eclipse auxilia o desenvolvedor no processo de exportação do aplicativo.
preços são razoavelmente altos. Se você é um desenvolvedor amador e não pretende seguir a linha de “empresa de aplicativos Android”, poderá utilizar um certificado auto-assinado, ou seja, você emite um certificado, o assina digitalmente através de uma senha e assim poderá exportar seu aplicativo. Caso queira vender seus aplicativos e possuir muitos deles ou pretende ser um fornecedor profissional, o ideal é adquirir um certificado de assinatura de código de uma das empresas que os fornece. Para gerar um pacote auto-assinado, clique na opção Create new keystore. Informe a localização onde será criado o arquivo (uma boa prática é criar uma pasta apenas com as keytores dos seus aplicativos e armazená-las todas juntas) e uma senha para este arquivo-chave (figura 2). Na tela seguinte, será necessário preencher algumas informações adicionais sobre a keystore autoassinada que estamos criando. Os
campos obrigatórios são: Alias, onde deve ser preenchido o apelido ou nome do seu aplicativo, a senha da keystore criada anteriormente (e sua respectiva confirmação), a validade do certificado, que atualmente o Google recomenda que seja de 30 anos, o nome do proprietário ou desenvolvedor do software e a unidade organizacional. Os demais campos são opcionais (figura 3). A seguir informe a localização do seu arquivo .apk (novamente, seria interessante criar um diretório em seu computador contendo todos os seus arquivos finais, para melhor organização). Será exibida a informação de que o certificado auto-assinado irá expirar em 30 anos e então basta clicar no botão Finish.
Desenvolvedor oficial
Diferentemente do que acontece em outros países onde o incentivo para a criação de aplicativos é imenso, para o Brasil a coisa não é tão simples (como 47
Figura 2 Crie uma keystore única para assinar seu
aplicativo. Isso é exigido pelo Google Play.
quase tudo, por aqui). Brasileiros não são isentos da taxa de publicação de aplicativos, como é o caso de países como Canadá e até mesmo Chile. Desenvolvedores brasileiros necessitam pagar a taxa única de US$25,00 para terem seus cadastros validados como desenvolvedor. Caso já possua uma conta de usuário no Google (através de qualquer serviço da empresa), basta acessar o endereço oficial de publicação de conteúdos [2]. Após efetuar o login, você terá acesso ao console de desenvolvedor, onde será exibido o Contrato do Desenvolvedor e onde é necessário aceitar os termos do Google Play e também há informações sobre como efetuar o pagamento da taxa para desbloqueio de sua conta (figura 4). Aceite os termos de registro e após clicar no botão Continuar pagamento, uma janela do Google Wallet será aberta solicitando os dados do seu cartão de crédito. É necessário que o cartão de crédito seja internacional para que o pagamento seja processado. Geralmente, o processamento do pagamento e a liberação do console do desenvolvedor para a publicação de aplicativos leva dois dias úteis. 48
Figura 3 Preencha corretamente as informações necessárias para identificação do aplicativo e desenvolvedor.
Após a conclusão deste processo, o desenvolvedor receberá um simpático email contendo mais informações sobre o console do desenvolvedor.
Publicação do aplicativo Após a liberação de sua conta, a publicação do aplicativo é simples: basta clicar no botão Upload Application e selecionar o arquivo .apk criado anteriormente (figura 5).
Serão solicitadas uma diversidade de informações que devem ser preenchidas como, por exemplo: ➧ Capturas de tela do aplicativo (são obrigatórias pelo menos duas) ➧ Ícone em alta resolução ➧ Outras informações opcionais como algum banner para algum tipo de promoção Em seguida informa o idioma do aplicativo, o título, sua descrição básica (como funciona o aplicativo, basicamente), as mudanças
Figura 4 Novos desenvolvedores devem desembolsar uma quantia única para criar sua conta no Developer Console.
www.linuxmagazine.com.br
Publicação de aplicativos no Google Play | ANDROID
Figura 5 Enviar novos aplicativos é simples: um clique em um botão e o preenchimento padrão de uma tela com as informações solicitadas.
mais recentes, a categoria onde se encaixa (educacional, jogo etc.). Selecione ainda os países para os quais deseja distribuir seu aplicativo (países fora da lista não poderão sequer visualizar seu aplicativo) e informações de contato do desenvolvedor (site, e-mail etc.). O formulário é bastante intuitivo e fácil de ser preenchido. Uma vez enviado o aplicativo, geralmente leva algumas horas (ou até mesmo um dia útil) para que
Sobre o autor Flávia Jobstraibizer, (fjobs@linuxnewmedia.com.br, twitter: @flaviajobs) é gerente de projetos e analista de sistemas. Trabalha com TI desde 1998 tendo atuado em multinacionais e empresas de diversos segmentos, trabalhando com tecnologias livres e proprietárias. Atualmente é editora-chefe das revistas Linux Magazine, Admin Magazine e c’t.
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/8112
Linux Magazine #99 | Fevereiro de 2013
este seja publicado na loja. Esta demora se deve ao fato de que são realizadas verificações relacionadas a vírus, pornografia e outras verificações básicas, que, após concluídas, tornam apto o aplicativo a ser distribuído na loja.
Informações importantes ➧ Caso sua intenção seja publicar
um aplicativo gratuito, esteja ciente de que, uma vez publicado como gratuito, não será mais possível alterar para aplicativo pago. Será necessário criar outro aplicativo (uma versão Pro, por exemplo) e então cadastrála como aplicativo pago. ➧ Para os aplicativo pagos, cada venda gerará um repasse de 70% do valor de venda para o desenvolvedor, disponibilizados em sua conta do Google AdSense (sim, será necessário
criar uma, com um site válido) e o restante será absorvido pelo Google Play. ➧ Mantenha as keystores do seus aplicativos em segurança. No momento de atualizar seu aplicativo e reenviá-lo para o Google Play, a mesma assinatura deve ser utilizada.
Conclusão
Há inúmeras vantagens para o desenvolvedor que divulga seus aplicativos no Google Play. Além de potenciais rendimentos provenientes de seus aplicativos pagos, o desenvolvedor passa a obter reconhecimento conforme seus aplicativos tornam-se conhecidos. Existem inúmeras vertentes onde o desenvolvedor pode investir no momento de criar um aplicativo. A demanda por aplicativos relevantes e que mudem o mundo, ainda está por aí! n
Mais informações [1] Estudo do The Sociable sobre o Google Play: http://sociable.co/ mobile/google-play-will-hit-one-billion-apps-this-june/ [2] Console do desenvolvedor no Google Play: https:// play.google.com/apps/publish/
49
Aceleração de rede | REDES
REDES
Aceleração de rede
Redes velozes
Com o TCP Fast Open, o Google introduz uma extensão do protocolo TCP, implementado no kernel Linux, o que evita a latência desnecessária no tráfego de rede e promete até 41% de aumento na velocidade da rede, dependendo do aplicativo. por Timo Schöler
E
m meados de 2011, o time “Torne a web mais rápida” do Google, que é liderado por Sivasankar Radhakrishnan, Arvind Jain, Yuchung Cheng, e Jerry Chu, apresentou um projeto para reduzir a latência das redes em geral. A técnica, que é chamada de TCP Fast Open (TFO) [1] [2], depende da simplicidade do processo de abertura de uma sessão TCP. ideia em si não é nova – voltando à 1994, e às RFC1379 e RFC1644 [3] [4] especificaram de forma similiar ao conceito do TCP Transacional (T/TCP). Infelizmente, uma análise publicada em setembro de 1996, revelou sérios problemas de segurança com o T/TCP [5], e a técnica não conseguiu estabelecer-se em uma abordagem mais ampla. Com base nesta experiência anterior, a equipe do Google aperfeiçoou a abordagem desenvolvendo o TFO, levando a um melhor resultado. O kernel Linux 3.6 implementa a infraestrutura cliente necessária, e a versão 3.7 irá incluir suporte para o TFO no lado servidor, dessa forma,
A
Linux Magazine #99 | Fevereiro de 2013
parece que a era de conexões TCP mais rápidas pode estar bem próxima.
Os ladrões de tempo
A maior parte do tráfego de Internet da atualidade é caracterizado por fluxos de dados relativamente curtos. Em um site, por exemplo, várias sessões TCP simultâneas são abertas momentaneamente para transferir uma quantidade relativamente pequena de dados que incluem muitos elementos pequenos (por exemplo, código HTML, pequenos gráficos e JavaScript) [6]. Por conta do alto custo de desempenho associado em estabelecer conexões TCP repetidamente, os navegadores muitas vezes tentam manter conexões não utilizadas abertas após a primeira requisição de um site (estas são conhecidas como conexões persistentes). Mas, nos servidores com alto tráfego, os administradores configuram controles de tempo de espera (timeout) muito apertados para evitar amarrar recursos desnecessariamente. Assim, o tempo necessário para abrir e voltar a abrir as conexões TCP conti-
nua a ser uma fonte de problemas de desempenho. Para aqueles que por acaso não estejam familiarizados com o elaborado ritual para iniciar conexões TCP, o processo é muitas vezes chamado de “aperto de mão de três vias” (figura 1). O cliente solicita o servidor de destino apropriado (SYN, synchronize). O servidor responde, se o pedido do cliente for legítimo, com um SYN ACK para confirmar o pedido de conexão do cliente. Nesta fase, parâmetros são trocados para o tamanho máximo do segmento (Maximum Segment Size, ou MSS), o número máximo de bytes do corpo de dados a ser transmitido em um segmento TCP permitido entre as extremidades da conexão, e o número de sequência inicial (Initial Sequence Number, ou ISN), um número único para certificar-se de que a transmissão está na ordem correta e detectar duplicações; ainda não há troca de dados. A princípio, as RFCs que definem o protocolo TCP [7] [8] permitem a transferência do corpo de dados nesta fase, mas a transferência de 51
REDES | Aceleração de rede
dados não pode ser processada antes de a conexão ser estabelecida. Neste momento o cliente envia um ACK para completar a conexão; o corpo de dados, ou seja, o endereço da página a ser aberto no navegador, não foi transferido para o servidor até este ponto. Em outras palavras, no momento em que o primeiro corpo de dados foi transferido nos três passos da conexão, os pacotes já viajavam do cliente para o servidor e foram devolvidos. Isto resulta em tempos de ida e volta desnecessários (Round Trip Time, ou RTT) de várias dezenas de milissegundos, o que pode ser evitado pelo uso de TFO. O TFO acelera o processo de inicialização de sessão através da introdução de um cookie TFO. Quando um cliente TFO habilitado envia uma requisição de conexão, o servidor requisitado primeiro gera o cookie e envia para o cliente garantindo as estruturas de conexão na segunda etapa (SYN ACK) (figura 2). Nenhum outro dado é trocado. Entre outras coisas, o cookie inclui o endereço IP criptografado do cliente. O processo de requisição, geração e troca de cookies ocorre de forma independente na pilha TCP, dessa forma os desenvolvedores de aplicativos não precisam se preocupar com isso. No entanto, observe que não existem mecanismos para identificar várias requisições SYN antes de gerar o cookie – o Google parece querer confiar na idempotência do servidor web requisitado (por exemplo, para páginas estáticas) ou contar com o aplicativo para detectar pedidos duplicados do mesmo cliente.
uma URL, com o pedido do próximo SYN; uma nova opção TCP foi introduzida para lidar com esta situação. O servidor requisitado valida o cookie e assim garante que o endereço IP criptografado armazenado no cookie corresponda ao do cliente requerente.
Se tudo estiver certo, o servidor pode agora, no passo 2, devolver o corpo de dados antes de receber um ACK do cliente. Em comparação com o método tradicional, ele evita um RTT completo (figura 3).
Figura 1 O tradicional aperto de mão de três vias do protocolo TCP.
A vida na via rápida
Depois de configurar a conexão com os três passos utilizados pelo TCP legado, o cliente tem o cookie TFO, que pode ser usado para evitar a repetição do aperto de mão em conexões futuras. O cliente envia o cookie de TFO e o corpo de dados, tal como 52
Figura 2 Configuração inicial da conexão usando o TCP Fast Open (gerando um cookie TFO).
www.linuxmagazine.com.br
Aceleração de rede | REDES
Por exemplo, o algoritmo para gerar o cookie TFO é específico a implementação. Dependendo do perfil de servidor, a ponderação poderá obter economias tanto de energia quanto de alto desempenho. Além disso, muita atenção tem de ser dada na segurança do aplicativo, tais como a substituição periódica das chaves utilizadas no lado do servidor para codificar o IP do cliente.
No limite
Usuários aventureiros já podem utilizar o TCP Fast Open, desde que você tenha um kernel recente: Figura 3 Configuração da conexão TFO com o transporte do cookie e do corpo de dados na primeira etapa do aperto de mão.
Se o servidor não for capaz de validar o cliente, nenhum dado adicional é devolvido a este – ao invés de um mecanismo de retorno em chutes, e o tradicional aperto de mão de três vias ser usado; o servidor então só responde com um ACK para o cliente requerente. Pelo fato de um cliente com um cookie TFO válido poder consumir recursos do servidor antes do aperto de mão ser concluído, o servidor corre o risco de ataques de exaustão de recursos. Usando um mecanismo de defesa que é bem conhecido para
evitar ataques de flood de SYN, os administradores podem definir um conjunto limitado de “conexões flutuantes” (ou seja, as conexões que podem incluir um cookie TFO válido, mas que ainda não concluíram o aperto de mão, como medida preventiva). Uma vez que este conjunto esteja esgotado, o servidor força o uso da abordagem legada. A implementação prática de um novo mecanismo tem encontrado o seu caminho no kernel Linux. A sintonia fina certamente levará à discussões em um futuro próximo.
Mais informações [1] TCP Fast Open: http://static.googleusercontent. com/external_content/ untrusted_dlcp/research. google.com/de//pubs/archive/37517.pdf [2] Internet rascunhos para do TCP Fast Open: http://tools. ietf.org/html/draft‑ietf‑tcpm‑fastopen‑01 [3] RFC 1379: http://tools.ietf.org/html/rfc1379 [4] RFC 1644: http://tools.ietf.org/html/rfc1644 [5] Problemas de segurança com T/TCP: http://www. phrack.org/issues.html?issue=53&id=6 [6] Browserscope e; Perfis de navegadores: http://www. browserscope.org/?category=network&v=top [7] RFC 793: http://tools.ietf.org/html/rfc793 [8] RFC1323: http://tools.ietf.org/html/rfc1323
Linux Magazine #99 | Fevereiro de 2013
echo "1"> /proc/sys/net/ipv4/tcp_fastopen
O TFO é ativado para operações cliente definindo o bit 0 (com um valor“1”). Bit 1 (valor “2”) habilita o TFO para operações servidor; definindo os dois bits (com um valor de “3”) habilita ambos os modos. Além das implementações em vários sistemas operacionais, um número de opção oficial TCP precisa ser atribuído pela IANA no futuro próximo. Até o momento, um número de opções TCP experimentais tem sido usadas para manter a conformidade. Do ponto de vista do desenvolvedor de aplicativo, pouco trabalho é necessário. Principalmente servidores web e navegadores compõem o grupo de programas que mais se beneficiarão, e programas que não podem usar o TFO, bem como dispositivos como roteadores, firewalls etc., simplesmente continuarão funcionando de forma independente por conta de retornos automáticos ao tradicional aperto de mãos do TCP. 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/8222
53
TUTORIAL
TUTORIAL | Transferência de arquivos
Transferência de arquivos
Transferência de grandes arquivos Várias alternativas permitem contornar os limites de tamanho quando transferimos um arquivo do ponto A ao ponto B. por Frank Hofmann
C
onsidere a seguinte situação: um usuário deseja armazenar um arquivo grande em um cartão de memória USB, mas a tentativa falha, mesmo havendo espaço suficiente no dispositivo. Neste caso, muito provavelmente foram atingidos os limites do sistema de arquivos na mídia que estava sendo utilizada. As causas possíveis podem ser: uma tabela de alocação de arquivo cheia – File Allocation Table (FAT) –, o diretório para conteúdos do disco ter excedido o número máximo de blocos por arquivo. Por razões de compatibilidade, muitos fabricantes fornecem mídia para o sistema de arquivos VFAT ou FAT32, e podemos não notar por um longo tempo que o tamanho de um arquivo é limitado. Ambos podem armazenar arquivos até um máximo de 4GB, 58
aproximadamente; no entanto, podemos transportar arquivos maiores de um computador para outro de outras formas. A primeira variante envolve a transferência de dados através de uma conexão de rede; a variante dois, envolve a compressão de dados; a variante três, formatação de disco com um sistema de arquivos diferente, e a variante quatro, a divisão do arquivo em diversas partes para, posteriormente, voltar a uni-los no sistema de destino.
Operações de rede
A transferência de arquivos através da rede é apenas uma opção genuína se a taxa de transferência de linha for suficiente e a largura de banda estável durante a conexão. Prestadores de serviços de Internet muitas vezes fornecem menos capacidade para uploads do que para downloads em uma conexão
com largura de banda assimétrica (por exemplo, ADSL). Quando a Internet está sempre disponível, este fato pode ser facilmente esquecido. Se o sistema de destino é capaz de receber dados via FTP, este protocolo é a escolha óbvia. Para além da ferramenta de linha de comando clássica ( listagem 1), o cliente gFTP com interface gráfica simplifica significativamente o processo de envio de dados antes e depois ( figura 1). No entanto, o FTP é um protocolo inseguro; todos os dados são enviados sem criptografia. Alternativas mais seguras estão disponíveis há muito tempo, sob a forma de FTP seguro (Secure FTP ou SFTP), FTPS (FTP sobre SSH) e cópia segura (Secure Copy ou SCP). O programa SCP é normalmente parte do escopo de uma instalação SSH em um PC cliente; o sistema de destino precisa executar um servidor SSH.
www.linuxmagazine.com.br
Transferência de arquivos | TUTORIAL
Figura 1 O cliente gFTP possui uma interface gráfica para facilitar a transferência de arquivos para um servidor FTP.
Ambos os componentes estão disponíveis nos pacotes openssh-client e openssh-server no Debian e no Ubuntu. O cliente é parte da ferramenta padrão definida em muitas distribuições; uma instalação geralmente não é necessária. Para instalar o servidor de forma retroativa no Ubuntu/Debian, utilize: apt-get install openssh-server
no sistema de destino. Para transferir dados a partir do host para o servidor, basta digitar o comando da primeira linha da listagem 2. O SCP abre uma conexão criptografada para a máquina de destino e transmite o arquivo para o diretório especificado; é necessário indicar o diretório explicitamente, acrescentando-o ao nome do host na linha de comando. O separador de comandos SCP é o de dois pontos
(colon). Se só forem informados os dois pontos, o software automaticamente seleciona o diretório raiz no sistema remoto como destino. Enquanto as duas primeiras chamadas na listagem 2 mantêm o mesmo nome do arquivo no sistema de destino, o terceiro comando o altera para debian.iso. Além disso, a transferência usa um formato gzip compactado, graças ao switch -C. Para arquivos de texto e arquivos tar (compactados), esta forma pode reduzir de forma bastante significativa a duração da transmissão do arquivo sob certas circunstâncias. Se assim desejar, o SCP também irá coletar dados do servidor caso seja digitado o nome do computador no qual os arquivos estão armazenados tendo o nome do caminho como primeiro parâmetro e o nome do arquivo no sistema local como segundo parâmetro. Na última linha da listagem 2, o programa lê o arquivo debian.iso a partir do diretório home do usuário no computador especificado, transmite o arquivo gzip para o sistema local, e armazena o arquivo no diretório atual sob o nome file4.iso. Se o usuário não estiver totalmente confortável com as ferramentas de linha de comando, o Midnight Commander fornecerá uma alternativa. Dois itens de menu, Left/FTP link e Left/ Shell link oferecem uma camada de abstração para uma conexão FTP e SCP, respectivamente (figura 2). Note que o Midnight Commander armazena os dados de buffer no diretório /tmp. Consequentemente, o usuário deverá certificar-se de que há espaço disponível suficiente antes de transferir arquivos grandes.
Sincronização com Rsync Figura 2 Se preferir ficar longe da linha de comando, o Midnight
Commander oferece recurso similar ao SCP e FTP, envolto em uma interface gráfica.
Linux Magazine #99 | Fevereiro de 2013
Outra abordagem para a transferência de dados envolve a sincronização de dois diretórios via Rsync ou 59
TUTORIAL | Transferência de arquivos
através de sua interface gráfica, o Grsync (figura 3). O comando para sincronizar o conteúdo do diretório /original em um computador com o diretório local, chamado de copy é: $ rsync -z <user>@<source>: /original/ copy
O Rsync transfere apenas as mudanças entre o original e a cópia – dados idênticos (blocos) são reconhecidos e excluídos pela ferramenta. A opção -z assegura que os dados na sincronização Gzip estejam compactados para transmissão através da rede.
Compressão de dados
Figura 3 O Grsync, a interface gráfica para o Rsync, torna mais fácil lidar com comandos Rsync por vezes enigmáticos.
Listagem 1: FTP na linha de comando $ ftp <user>@<server> Password: 230 Login successful. Have fun. ftp> put <file> ftp> bye 221 Goodbye.
Listagem 2: Como usar o SCP $ $ $ $
scp scp scp scp
<file> <user>@<target>: <file> <user>@<target>:/tmp/ -C file3.iso <user>@<target>:debian.iso -C <user>@<source>:debian.iso file4.iso
Listagem 3: Definição de divisão de nomes de arquivos $ split --bytes=50M -d -a 3 debian-6.0.4-i386-netinst.iso part$ ls -hal part* -rw-r--r-- 1 frank frank 50M 30. Apr 10:33 part-000 -rw-r--r-- 1 frank frank 50M 30. Apr 10:33 part-001 -rw-r--r-- 1 frank frank 50M 30. Apr 10:33 part-002 -rw-r--r-- 1 frank frank 41M 30. Apr 10:33 part-003
60
Por um lado, a compactação de dados durante uma transferência custa tempo; por outro lado, o SSH/ SCP só suporta compressão baseada em gzip. O procedimento é amplamente usado, mas nem sempre é a melhor escolha. Se quiser usar um procedimento diferente, é preciso compactar os arquivos antes da transferência e descompactá-los no sistema de destino (por exemplo, usando Xz ou 7z). Qual processo é mais adequado para cada tarefa depende principalmente dos dados a serem processados. Outra coisa a considerar na escolha do formato é que, se deseja descompactar o arquivo no sistema de destino, certifique-se de antemão de que um programa adequado esteja disponível lá.
Novo formato
Uma outra opção é manipular o meio externo de seu sistema de arquivos. As ferramentas mkfs são usadas para criar um sistema de arquivos básico. Mkfs significa make filesystem (criar sistema de arquivos); um comando separado está disponível para (quase) todos os arquivos. Por exemplo, o comando mkfs.ext4 /dev/sdb1 cria um sistema de arquivos
www.linuxmagazine.com.br
Transferência de arquivos | TUTORIAL
ext4 no dispositivo especificado: / dev/sdb1. O tamanho máximo de arquivo permitido em um sistema de arquivos varia consideravelmente e encontra-se na faixa de 16TB em ext2, 1EB em ext4 e 16EB no ZFS [1], onde 1 exabyte = 1018 bytes. Em outras palavras, 1EB é equivalente a 1 milhão de terabytes ou 1 bilhão de gigabytes. De acordo com o tamanho do volume, a criação de um sistema de arquivos pode demorar algum tempo para ser concluída; e lembre-se, este processo irá apagar todos os dados já armazenados no meio.
Divisão de arquivos
Se as propostas acima referidas não forem do agrado do usuário nem uma opção a se considerar, é possível dividir o arquivo em pedaços menores e uni-los novamente no sistema de destino. O Linux oferece duas ferramentas para isso: o split e o cat. O comando split divide os arquivos, e o cat os coloca juntos novamente. Sem nenhum parâmetro, o split desmonta o arquivo especificado em pedaços de 1.000 linhas. Esta predefinição é adequada para arquivos de texto, mas não para imagens ISO ou uma máquina virtual. O parâmetro --bytes=<value> (ou -b<value>) faz a divisão em um número exato de bytes. Por exemplo, para dividir uma imagem ISO da rede Debian, instale o CD (191MB) em pedaços de 50MB, onde a seguinte chamada irá fazer este truque: $ split --bytes=50M debian-6.0. 4-i386-netinst.iso
A imagem é dividida em quatro partes; de xaa até xad. As partes xaa, xab e xac somam exatamente 50MB, enquanto xad contém o restante dos dados, que é de aproximadamente 41MB. Por padrão, a ferramenta prefixa os arquivos de saída com x
Linux Magazine #99 | Fevereiro de 2013
para duas letras posteriores na ordem crescente (sufixo). Parâmetros adicionais na linha de comando split permitem definir os nomes dos arquivos de saída para atender às necessidades do usuário; podemos passar no componente principal o nome do arquivo a ser dividido, acrescentando um prefixo à chamada anterior: $ split --bytes=50M debian-6.0. 4-i386-netinst.iso part-
Os arquivos gerados serão agora apelidados, por exemplo, de part-aa e part-ad. Outros dois parâmetros -d e -a também permitem definir os sufixos. A opção -d gera sufixos numéricos, e -a<count> determina a largura (duas por padrão); a divisão preenche os espaços com zeros. A chamada na primeira linha da listagem 3 cria quatro arquivos: de part-000 até part-003. Para montar as peças individuais no sistema de destino, o usuário só precisa de um simples comando cat: $ cat part-* >> new.iso
O cat usa o operador >> para remontar as partes que o esquema de nomeação havia colocado na ordem correta, criando assim um novo arquivo chamado new.iso neste
exemplo. Agora só é preciso verificar e certificar-se de que as etapas de desmontagem e remontagem não tenham falhado e os dois arquivos ISO (original e cópia) são idênticos. Uma comparação byte a byte levaria muito tempo e também é propensa a erros; no entanto, duas ferramentas – cmp e diff – podem ajudar a verificar os arquivos para analisar diferenças em potencial: $ diff debian.iso new.iso $ cmp debian.iso new.iso
Se não há saída, os arquivos ISO são idênticos. Uma outra abordagem, mais elegante e frequentemente utilizada é a de gerar um hash, que é uma espécie de impressão digital para um conjunto de dados ou string. Na listagem 4, o comando openssl usa o algoritmo MD5 para gerar um hash. Se os checksums forem idênticos, o original e a cópia serão correspondentes.
Conclusão
Ao copiar arquivos grandes, ideias e abordagens diferentes podem ajudar a atingir seu objetivo. A única coisa importante é encontrar uma solução adequada para o problema que ajuda a dominar as tarefas Linux diárias com mais segurança. n
Listagem 4: Como criar um hash $ openssl dgst -md5 debian.iso MD5(debian.iso)= ff79f60c4d1fee2d47baadcbf081e5b6 $ openssl dgst -md5 new.iso MD5(new.iso) = ff79f60c4d1fee2d47baadcbf081e5b6
Mais informações [1] ZFS: http://en.wikipedia.org/wiki/ZFS
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/8220
61
ANÁLISE
ANÁLISE | Gerenciamento de arquivos
Gestão avançada de arquivos Se o usuário já domina os comandos utilizados diariamente para realizar a manipulação de arquivos, pode querer fazer mais. por Bruce Byfield
Q
uem já trabalhou com ferramentas em linha de comando provavelmente já aprendeu as opções comuns para comandos como cp, ls, mv e rm. Também deve ter aprendido a mudar atributos de arquivo com comandos como chmod e chown e ler o conteúdo dos arquivos com less, head e tail. No entanto, estes são apenas os recursos básicos para o gerenciamento de arquivos. Além dessas opções está a riqueza de comandos avançados para manipular, visualizar, verificar e apagar arquivos de forma segura, para dizer o mínimo sobre possibilidades que vão muito além do que o cp pode gerenciar. Na verdade, a linha de comando é ótima para gerenciamento de
arquivos. O ambiente de trabalho gráfico é ótimo para operações de rotina, como copiar arquivos de um dispositivo para outro, ou para alterar permissões básicas. Mas a gestão de arquivos é uma função básica, e as pessoas têm realizado a operação pela linha de comando, desde que os computadores passaram a existir no mundo. Como resultado, uma vez que obtemos conhecimento sobre as ferramentas disponíveis, a linha de comando é mais rápida e mais precisa do que o ambiente de trabalho gráfico em todos os aspectos pertinentes ao gerenciamento de arquivos que pudermos imaginar – e, muito provavelmente, nos quais não pudermos também.
A maioria destes comandos avançados estão instalados automaticamente no seu sistema – muitos, como parte do pacote GNU coreutils [1]. No entanto, nos poucos casos em que eles não estejam, todos os comandos devem estar no repositório de qualquer distribuição que deseje utilizar.
Manipular e exibir arquivos A troca de arquivos com outros sistemas operacionais há muito tempo tem adicionado extensões de arquivos para o Linux. No entanto, tradicionalmente, sistemas do tipo Unix têm utilizado o comando de arquivo file para identificar tipos de arquivos, o que continua sendo útil (figura 1).
Figura 1 O arquivo de comando é a maneira tradicional do Unix para identificar o tipo de arquivo, mesmo quando não há nenhuma extensão.
68
www.linuxmagazine.com.br
Gerenciamento de arquivos | ANÁLISE
Adicione -L ou --dereference à estrutura de comando padrão, e siga os links simbólicos para identificar o tipo de arquivo do original. Se adicionar -h e --no-dereference, ele simplesmente irá identificar links simbólicos pelo que eles são. Com -z ou --uncompress, também existe a opção de usar o comando de arquivo sobre o conteúdo de arquivos compactados. O comando touch é útil quando se deseja alterar data e hora em arquivos. Com a opção -a, é possível alterar apenas a última vez que o arquivo foi acessado, enquanto que com -m podemos alterar apenas a última vez que o arquivo foi modificado. Com -d STRING ou --date=STRING, podemos alterar a data e horário de escolha do usuário, usando uma variedade de diferentes strings – tudo a partir de algo como, de Mon, 14 Nov 12:00:00:00 para 2012-10-31 (em inglês) ou mesmo Next Monday (próxima segunda-feira). É possível fazer a mesma alteração com -t STRING, mas a string deve usar os formato MMDDhhmm.ss. A menos que aconteça um erro, não há feedback na tela. Por outro lado, o comando wc diz o número de linhas (-l, --lines), palavras (-w, --words), caracteres (-m, --chars), e bites (-c, --bytes) em um arquivo. Os resultados são listados nesta ordem, mas a contagem de palavras não será precisa, a menos que os arquivos pesquisados sejam de texto simples (figura 2).
Verificação de arquivos Um checksum [2] é um hash criptográfico utilizado para verificar a integridade de
Figura 2 Use o comando wc para obter estatísticas sobre um arquivo.
um arquivo. Como o leitor provavelmente já sabe, o uso mais comum do checksum é para garantir que um arquivo baixado tenha sido transmitido sem quaisquer erros. Esta foi mais uma preocupação dos dias em que modems dial-up eram comuns, e linhas com defeito cometiam erros dos mais improváveis, mas continua a ser uma verificação útil nos dias atuais. Geralmente, o aviso de um download adiciona o checksum correto ao lado do link para download, e o usuário que estiver fazendo o download pode verificar se o checksum extraído é o mesmo que o anunciado. Os dois hashes mais comuns usados para verificar a integridade de arquivos são o MD5 [3] e o SHA1 [4]. Ambos estão tecnicamente obsoletos – o MD5 mais do que o SHA-1 – na medida em que hashes mais avançados estão disponíveis, mas ambos ainda são considerados bons o suficiente para fins de verificação de downloads. O sistema Linux contém dois utilitários para gerenciar esses hashes: md5sum e sha1sum. Os dois comandos foram desenvolvidos em conjunto, logo, compartilham das mesmas opções. Normalmente, só precisamos do formato md5sum para exibir o checksum para um arquivo em particular. No entanto, em alguns casos, pode ser necessário adicionar -b ou --binary ( figura 3). O usuário também pode querer testar se um checksum de arquivo
está formado corretamente. Para este propósito, podemos usar a opção -c ou --check. Ao usar qualquer uma dessas opções, também podemos escolher uma das três opções adicionais. Normalmente, um OK é exibido ao lado de cada arquivo verificado, mas quando o parâmetro --quiet está incluso no comando, o OK é suprimido. Da mesma forma, o --status suprime a saída normal do arquivo, apenas apresentando sucesso ao final do processo. Também é possível usar -w ou --warning para mostrar erros no checksum, quando estes são detectados.
Exclusão de arquivos de forma segura Se o usuário estiver executando algo ou se simplesmente quiser preservar a privacidade, o comando rm não será suficiente. Um arquivo regularmente eliminado ainda poderá ser recuperado a partir do sistema de arquivos antes – e, em alguns casos, depois – de ter sido sobrescrito por novos dados. Para reduzir as chances de um arquivo ser recuperado, podemos executá-lo através do comando shred. O comando shred é o equivalente eletrônico da execução de um arquivo através do shredder. Mas ele não é mágico. Se o usuário estiver executando um sistema de arquivos com journal (logs do sistema), terá que desligar esse recurso antes de executar o shred, ou mais de uma cópia do arquivo será preservada.
Figura 3 Use o md5sum e o sha1sum para verificar um download do arquivo original.
Linux Magazine #99 | Fevereiro de 2013
69
ANÁLISE | Gerenciamento de arquivos
Figura 4 Usar shred substitui arquivos para torná-los ilegíveis. Apenas lembre-se de desativar o journaling primeiro.
Por exemplo, em sistemas de arquivos ext3 ou ext4, será preciso adicionar a opção date=something para o sistema de arquivos em / etc/fstab, e então reinicie o sistema antes de usar o shred, a fim de remover todas as cópias do arquivo. Da mesma forma, é preciso lembrar que as cópias dos arquivos também podem ser incluídas em backups ou em espelhos, mesmo que tenham sido removidas do disco rígido. No mínimo, será preciso executar o shred com as opções -nNUMBER ou --iterations=NUMBER para especificar o número de vezes que este será sobrescrito. Como se pode esperar, quanto mais reiterações, mais difícil será recuperar o arquivo, mas, mais tempo a operação irá levar. Para uma segurança ainda maior, podemos adicionar -z ou --zero para incluir uma sobrescrita final do arquivo com zeros e usar
random-source=FILE para selecionar
um arquivo a partir do qual os dados aleatórios serão extraídos para sobrescrever o arquivo ( figura 4 ). Podemos completar o processo acrescentando -u ou --remove para excluir o arquivo depois de tê-lo sobrescrito. Todas essas operações podem levar algum tempo, principalmente se forem especificados um número grande de arquivos, de modo que podemos querer adicionar -v ou --verbose para monitorar a operação. Se o usuário tiver problemas com permissões, -f ou --force irão alterá-las para permitir que o shred seja executado.
Cópia avançada
Um conceito básico que tem sido fortemente enfatizado no ambiente de trabalho é a ideia de links ou arquivos que apontam para os
mesmos dados. No entanto, os links permanecem muito vivos no Shell. Podemos ter ouvido falar de links que foram utilizados nas revisões do ano passado da hierarquia de arquivos do Linux para acomodar aplicativos que ainda consideram arquivos em posições mais antigas [5]. Dois tipos de links são possíveis [6]. Um hard link [7] fornece uma entrada de diretório secundária para um arquivo. A função original e de hard link funcionam separadamente, de modo que a exclusão de uma não exclui a outra. Em contraste, um link flexível (soft), ou simbólico [8], é um esboço apontando para o original, que pode estar em qualquer parte do sistema. Podemos abrir um soft link para edição, mas se o excluímos, os originais se mantêm. Igualmente, se excluirmos o original, o soft link permanecerá como um link quebrado. Tanto os hard links como os soft links são criados sob o mesmo formato básico: ln OPTIONS ORIGINAL LINK
Figura 5 Links são uma forma poderosa de nomear alias, muitas vezes não visualizada em ambientes gráficos de trabalho.
70
Este formato cria um hard link, mas acrescentando -s ou --symbolic é possível criar um soft link em seu lugar. Tal como acontece com muitos comandos, podemos usar a opção -v ou --verbose nas primeiras vezes que usarmos o comando link ( figura 5 ). Para verificar se o nome do link já está em uso, utilize -i ou --interactive para que o comando aguarde a confirmação antes de sobrescrever algo. No extremo oposto, podemos usar -f ou --force para sobrescrever imediatamente. Para converter um
www.linuxmagazine.com.br
Gerenciamento de arquivos | ANÁLISE
Figura 6 Um dos usos mais seguros do poderoso comando dd.
hard link para um soft link, use as opções -p ou --physical. Uma ferramenta ainda mais poderosa é o dd, por vezes referido como “destruidor de dados” por conta do dano grave que um erro poderia causar. Embora os resultados muitas vezes não sejam diferentes daqueles que começam com o uso do cp, o usuário desejará verificar os comandos dd cuidadosamente antes de pressionar a tecla [Enter]. Parte da razão para esta cautela é estrutura de comando do dd, que é suficientemente incomum para que seja fácil de se cometerem erros. Por um lado, o comando dd é dividido em três partes: o arquivo de entrada (if), o arquivo de saída (of), e opções, nesta ordem. Além disso, as opções não estão listadas com um ou dois hifens imediatamente após o comando, mas ao final dele, com um sinal de igual. Por exemplo, o comando: dd if= INPUT-FILE of=OUTPUT-FILE conv=lcase
irá copiar um arquivo, ao converter todo o conteúdo de letras maiúsculas para minúsculas (figura 6). No entanto, se o usuário esquecer de especificar o arquivo de saída, irá apagar o arquivo em vez de copiá-lo – e este é apenas um dos exemplos mais inócuos do uso incorreto do dd. Problemas adicionais (embora potenciais) vêm do fato de que o dd trabalha com drivers de dispositivos e partições múltiplas tão facilmente como qualquer outro arquivo. Além disso, ele pode especificar o tamanho do bloco ou o número de bytes manipulados a qualquer momento tan-
Linux Magazine #99 | Fevereiro de 2013
to para a entrada como para a saída de arquivos, abrindo possibilidades, tais como substituir apenas parte de um arquivo de saída existente ou truncar o arquivo de saída e, assim, criar uma cópia imperfeita. Como resultado dessas complexidades, o número de pessoas que podem dizer honestamente que dominam o dd é relativamente pequeno. Os usuários dependem muito mais de receitas publicadas na Internet que podem alterar para atender necessidades específicas (tabela 1). Esta prática ainda é perigosa mas, normalmente, muito menos arriscada do que a elaboração de estruturas próprias de comando enquanto se está aprendendo. O leitor pode querer considerar experimentar primeiro uma conta de usuário criada
especialmente para este fim, de modo que qualquer dano possível não afetaria o sistema inteiro.
Kit de ferramentas
Algumas destas ferramentas não são para uso diário. Os comandos shred e dd, em particular, são ferramentas mais úteis para um administrador de sistemas do que para um usuário comum. No entanto, conhecer as ferramentas disponíveis fornece uma noção melhor do que é possível fazer, e aprender estes comandos menos comuns podem ajudar a descobrir maneiras de fazer coisas que são difíceis ou até mesmo impossíveis com comandos mais comuns. Se o interessado aprendê-las agora, terá as ferramentas prontas para quando precisar delas. n
Mais informações [1] Pacote GNU coreutils: http://www.gnu.org/software/coreutils [2] Checksum: https://en.wikipedia.org/wiki/Checksum [3] MD5: http://en.wikipedia.org/wiki/Md5 [4] SHA-1: http://en.wikipedia.org/wiki/Sha1 [5] Padrão hierárquico do sistema de arquivos: https:// www.linux.com/learn/tutorials/476610-a-lookat-filesystem-hierarchy-standard-30 [6] Links: http://www.codeproject.com/Articles/70863/ Hard-Links-vs-Soft-Links [7] Hard link: http://en.wikipedia.org/wiki/Hard_link [8] Soft link: http://en.wikipedia.org/wiki/Soft_link
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/8217
71
PREVIEW
Linux Magazine #100 Mainframes Desde os gloriosos tempos onde reinavam os imensos mainframes que ocupavam toda uma sala, muita coisa mudou. Embora o tamanho dos equipamentos tenha diminuído razoavelmente, seus poderes e capacidades aumentaram significativamente. Na próxima edição da Linux Magazine, você irá conhecer este fantástico universo e entender um pouco mais sobre tudo o que estes poderosos equipamentos podem fazer por sua empresa. n
Admin Magazine #09 OpenStack Capaz de gerenciar os componentes de múltiplas instâncias virtualizadas, o OpenStack é um dos queridinhos dos profissionais de infraestrutura e virtualização da atualidade. É livre, não possui restrições quanto à quantidade de instâncias e é uma plataforma robusta, extremamente útil nestes tempos onde o advento da computação em nuvem já é uma realidade. Na próxima edição da Admin Magazine você vai conhecer tudo o que essa incrível ferramenta pode fazer por você! Não perca! n
82
www.linuxmagazine.com.br