|
[03/07]
:. IOzone, ferramenta para testes de desempenho do HD [03/07] :. Apple reduz preço do MacBook Air em $500 [03/07] :. Resumo do dia [03/07] :. Problemas graves com os links da Telefonica em SP [03/07] :. Texas Instruments integra projetor em BlackBarry [03/07] :. Willcom 9: celular pequeno e integrado ao Google [03/07] :. SSDs consomem mais energia que HDs convencionais [03/07] :. Firefox entrou para o Guinness Book [02/07] :. Revista GIMPZINE nº 8 [02/07] :. Os críticos estão errados: o KDE 4 não precisa de um fork [02/07] :. Resumo do dia [02/07] :. Everex preparando Cloudbook de 10,2 polegadas [02/07] :. AMD Phenom de 45 nm poderá suportar memória DDR3 [02/07] :. Instalando o VMWare Workstation 6.x no Mandriva Linux [01/07] :. Um ano de GPLv3: estudos sobre a adoção da licença :. Mais noticias » |
Há duas semanas, publiquei uma dica mostrando como utilizar um pendrive para transportar seu diretório home e arquivos (no Linux), de forma prática. No final, acabamos com dois atalhos relacionados a scripts criados dentro do pendrive, que permite atualizar os arquivos, ou restaurá-los em outro micro, com um único clique. Como a cópia é feita de forma incremental, utilizando o rsync, apenas os arquivos modificados são transferidos, tornando o processo de atualização muito rápido. O grande problema de transportar seus arquivos pessoais em um pendrive é a possibilidade de ele ser perdido ou roubado. Quem colocar as mãos no pendrive ganha automaticamente acesso a seus arquivos, o que é preocupante para muitos. A solução é simples: ao invés de gravar os arquivos diretamente, passaremos a gravá-los em uma partição encriptada. Assim, mesmo que alguém conhecido roube seu pendrive, não terá como obter acesso aos arquivos, já que utilizaremos uma chave de 256 bits. A encriptação é praticamente impossível de ser quebrada, mesmo que submetida a um especialista, com acesso a um cluster de centenas de máquinas e muito tempo disponível. Esta dica é uma continuação da primeira, onde vamos aprender a encriptar o pendrive e adaptar os scripts anteriores, para montar e desmontar o volume encriptado de forma automática, realizando o processo de atualização ou restauração dos arquivos com um único clique. No final, você terá uma estrutura como esta no pendrive, com três atalhos: ![]() Os arquivos ficarão armazenados em uma partição separada, que além de encriptada, fica escondida. Esta dica começa exatamente no ponto onde parei na dica anterior. Por isso, se você ainda não leu, aproveite para lê-la agora, antes de continuar: http://www.guiadohardware.net/dicas/pendrive-transportar.html A idéia básica é dividir o pendrive em duas partições. Uma partição pequena (com 16, ou mesmo 8 MB) que servirá apenas para armazenar os scripts e pequenos arquivos em geral e uma partição maior, englobando o restante do espaço do pendrive, que armazenará a partição encriptada. Os scripts criados na dica anterior serão adaptados para montar e desmontar a partição encriptada automaticamente (pedindo a passphrase de acesso) e adicionaremos um terceiro atalho, que permitirá simplesmente montar a partição encriptada e acessar os arquivos. Para isso, utilizaremos o LUKE e o dm-crypt. O primeiro passo é instalá-los. No Debian Etch, Sid, Ubuntu 7.4 (ou mais recente), Kurumin 7 ou outra distribuição derivada do Debian ou Ubuntu, você pode instalá-los via apt-get: # apt-get install cryptsetup hashalot
Em outras distribuições, procure pelo pacote "cryptsetup", que hoje em dia é muito comum. Se tudo mais falhar, você pode baixar um pacote genérico ou o pacote com o código fonte no http://luks.endorphin.org/dm-crypt. Use o gparted ou outro particionador de sua preferência para dividir o pendrive em duas partições. A primeira partição pode ser bem pequena, com apenas 8 ou 16 MB, formatada em EXT3 ou FAT16, de acordo com o que preferir. O importante mesmo é a segunda partição, onde criaremos a unidade encriptada. No meu caso, estou usando um pendrive de 4 GB, onde reservei 256 MB para a partição menor (pois pretendo usá-la para transportar pequenos arquivos, sem precisar montar a partição principal) e deixei os 3.52 GB restantes para a partição principal: ![]() No meu caso, a partição menor é a /dev/sdb1 e a partição principal é a /dev/sdb2. O próximo passo é gerar a unidade encriptada, usando o cryptsetup. Para isso, use o comando: # cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb2
(onde o /dev/sdb2 é a partição)Como gerar a unidade encriptada implica na destruição de todos os dados anteriormente gravados, ele pede sua confirmação antes de continuar. Você precisa responder "YES", em letras maiúsculas para continuar. Ele pede em seguida uma passphrase, que será usada para proteger a partição. Ela pode ser tanto uma senha longa, quanto uma frase, que misture palavras e alguns caracteres aleatórios. Quanto mais longa a passphrase, maior a segurança, mas como você precisará digitá-la cada vez que for acessar a partição, ela também não pode ser grande demais :). Uma senha com 12 a 16 caracteres, ou uma frase com 3 palavras e mais alguns caracteres adicionais já garantem uma segurança muito boa. O acesso à unidade encriptada é feito através do próprio cryptsetup. Ele cria um dispositivo virtual, através do qual os dados da unidade podem ser acessados. O dispositivo pode ser formatado e usado normalmente, como se fosse uma partição de disco e a encriptação/desencriptação dos dados é feita de forma transparente. Para acessar a unidade, use o comando abaixo, especificando a partição e o nome do dispositivo através do qual ela será acessada. Aqui estou usando "crypthome", mas você pode usar outro nome que preferir: # cryptsetup luksOpen /dev/sdb2 crypthome
Formate a unidade em EXT3, usando o comando abaixo. Não use ReiserFS, pois ele não é adequado para uso em pendrives: # mkfs.ext3 -m 1 /dev/mapper/crypthome
O parâmetro "-m 1" que incluí, faz com que o sistema reserve apenas 1% do espaço da partição para uso do root, ao invés de 5%. Isso faz com que você fique com mais espaço disponível para os arquivos. O "/dev/mapper/crypthome" é o device através do qual a unidade encriptada é acessada. Ele é criado depois do comando anterior. Com isso, a partição está pronta. Para montá-la, você usa os comandos: # cryptsetup luksOpen /dev/sdb2 crypthome
# mkdir /mnt/crypthome # mount /dev/mapper/crypthome /mnt/crypthome Uma vez montada a partição, você pode copiar arquivos para a pasta "/mnt/crypthome" de forma transparente. Por padrão, ela é propriedade do root, de forma que você não consegue escrever dentro da pasta usando seu login de usuário, mas isso é fácil de resolver. Basta usar o comando comando "chown -R", especificando o seu usuário, como em: # chown -R joao.joao /mnt/crypthome
Para desmontar a partição, feche todas as janelas do Konqueror ou Nautilus onde os arquivos da pasta estejam sendo exibidos e use os comandos: # cd ~
# umount /mnt/crypthome # cryptsetup luksClose /dev/mapper/crypthome O "cd ~" é apenas para garantir que os comandos de desmontagem sejam executados fora da pasta, já que você não consegue desmontá-la enquanto está acessando-a. Com isto terminamos a parte teórica. Como você viu, é bem simples encriptar e acessar a partição usando o cryptsetup. Naturalmente, o desempenho fica um pouco mais baixo, já que o sistema precisa cuidar do processo de encriptação, mas em uma máquina atual a perda não é tão grande assim. O passo seguinte é adaptar os scripts para salvar e restaurar os backups que criamos na dica anterior, para que eles incorporem os comandos de montagem e desmontagem do volume. O script atualizar.sh anterior era: #!/bin/sh pasta=`mount | grep sd | grep ext3 | tail -n 1 | cut -f 3 -d " "` cd $pasta dialog --yesno "Tem certeza que deseja atualizar os arquivos no pendrive?" 0 0 resp=`echo $?` if [ "$resp" = "1" ]; then exit 0 else mkdir joao rsync -av --delete /home/joao/ ./joao mkdir trabalho rsync -av --delete /mnt/hdb2/trabalho/ ./trabalho sync fi Com as novas funções ele ficará: #!/bin/sh # Instala o cryptsetup caso necessário if [ -e "/sbin/cryptsetup" ]; then echo "cryptsetup encontrado." else apt-get install cryptsetup hashalot fi # Monta o volume encriptado part="`mount | grep sd | tail -n 1 | cut -c 1-8`2" cryptsetup luksOpen $part crypthome mkdir /mnt/crypthome &>/dev/null mount /dev/mapper/crypthome /mnt/crypthome cd /mnt/crypthome # Aborta caso algo dê errado durante a montagem: verificador=`pwd` verificador2=`mount | grep /mnt/crypthome` if [ "$verificador" != "/mnt/crypthome" -o -z "$verificador2" ]; then exit 0; fi # Atualiza os arquivos dialog --yesno "Tem certeza que deseja atualizar os arquivos no pendrive?" 0 0 resp=`echo $?` if [ "$resp" = "1" ]; then exit 0 else mkdir joao rsync -av --delete /home/joao/ ./joao chow -R joao.joao ./joao mkdir trabalho rsync -av --delete /mnt/hdb2/trabalho/ ./trabalho sync fi # Desmonta cd ~ umount /mnt/crypthome cryptsetup luksClose /dev/mapper/crypthome Com as alterações ele ficou bem mais complexo, mas parte das alterações são checagens opcionais, que você pode remover do seu script. A parte inicial ("instala o cryptsetup caso necessário") executa os comandos de instalação caso não encontre o arquivo "/sbin/cryptsetup", enquanto a terceira função ("aborta caso algo dê errado durante a montagem"), checa se a partição foi realmente montada e se foi possível acessar a pasta e aborta a operação caso algo tenha dado errado. A função part="`mount | grep sd | tail -n 1 | cut -c 1-8`2" que usei, serve para descobrir qual é a partição do pendrive, caso o dispositivo mude ao plugar em outro micro. Note que o número "2" no final faz sempre com que seja usada a segunda partição (sda2, sdb2, sdc2, etc.). altere o número caso a partição encriptada seja outra. Lembre-se também de substituir o "joao" pelo seu login de usuário no sistema. A principal mudança é que este novo script precisa ser executado como root, já que apenas ele pode executar os comandos para montar e desmontar o volume. Para isso, use a opção "Executa como um usuário diferente", "Nome do usuário: root" nas opções do atalho. No caso do Ubuntu ou Kurumin, você pode também adicionar o "sudo" no início do comando executado pelo atalho: ![]() O script restaurar.sh fica quase igual ao primeiro. A única diferença entre os dois são os comandos do rsync que restauram o backup. Ele também precisa ser executado como root: #!/bin/sh # Instala o cryptsetup caso necessário if [ -e "/sbin/cryptsetup" ]; then echo "cryptsetup encontrado." else apt-get install cryptsetup hashalot fi # Monta o volume encriptado part="`mount | grep sd | tail -n 1 | cut -c 1-8`2" cryptsetup luksOpen $part crypthome mkdir /mnt/crypthome &>/dev/null mount /dev/mapper/crypthome /mnt/crypthome cd /mnt/crypthome # Aborta caso algo dê errado durante a montagem: verificador=`pwd` verificador2=`mount | grep /mnt/crypthome` if [ "$verificador" != "/mnt/crypthome" -o -z "$verificador2" ]; then exit 0; fi # Atualiza os arquivos dialog --yesno "Tem certeza que deseja atualizar os arquivos no pendrive?" 0 0 resp=`echo $?` if [ "$resp" = "1" ]; then exit 0 else rsync -av --delete ./joao/ /home/joao rsync -av --delete ./trabalho/ /mnt/hdb2/trabalho sync fi # Desmonta cd ~ umount /mnt/crypthome cryptsetup luksClose /dev/mapper/crypthome Finalmente, temos um novo script, o montar.sh, que apenas monta e exibe o conteúdo do volume encriptado. Nele, os comandos que criam e restauram o backup, são substituídos pelo comando que abre o gerenciador de arquivos, mostrando os arquivos depois da montagem. Depois que ele é fechado, o volume é desmontado automaticamente: #!/bin/sh
# Instala o cryptsetup caso necessário if [ -e "/sbin/cryptsetup" ]; then echo "cryptsetup encontrado." else apt-get install cryptsetup hashalot fi # Monta o volume encriptado part="`mount | grep sd | tail -n 1 | cut -c 1-8`2" cryptsetup luksOpen $part crypthome mkdir /mnt/crypthome &>/dev/null mount /dev/mapper/crypthome /mnt/crypthome cd /mnt/crypthome # Aborta caso algo dê errado durante a montagem: verificador=`pwd` verificador2=`mount | grep /mnt/crypthome` if [ "$verificador" != "/mnt/crypthome" -o -z "$verificador2" ]; then exit 0; fi konqueror /mnt/crypthome # Desmonta cd ~ umount /mnt/crypthome cryptsetup luksClose /dev/mapper/crypthome Ao usar o Gnome, você pode substituir o "konqueror /mnt/crypthome" pelo comando equivalente do Nautilus: "nautilus /mnt/crypthome". Depois de criar o atalho, idêntico aos dois anteriores, você tem o conjunto que vimos no screenshot inicial: ![]() Veja que os arquivos não aparecem mais na partição com os atalhos, pois agora estão escondidos dentro da partição encriptada. Só mesmo você, que sabe a passphrase, consegue acessá-la, seja utilizando os scripts, seja manualmente. Nesta dica, apenas incluí os scripts prontos, sem me preocupar muito em explicar o que faz cada função. Você pode se aprofundar no uso do terminal e na criação de shell scripts nestes dois guias que publiquei anteriormente. Eles lhe darão a base necessária para personalizar os scripts, adicionando novas funções e criar outros para automatizar as tarefas do dia a dia: http://www.guiadohardware.net/guias/12/ Este é mais um guia longo e detalhado, que aborda em detalhes o desenvolvimento de scripts, do básico ao avançado, com destalhe para o desenvolvimento de scripts gráficos, usando o kdialog e o kommander; uma área pouco explorada em outros tutoriais. Por Carlos E. Morimoto http://www.guiadohardware.net/guias/09/ » Gostou do texto? Veja nossos livros impressos
|