Acessando arquivos nas partições do Windows

Por:
Acessando arquivos nas partições do Windows

Uma dúvida comum de quem está começando é como acessar arquivos em partições do Windows e como fazer modificações nas mesmas, seja para salvar arquivos criados ao rodar o Linux a partir de um live-CD, ou corrigir problemas.

Distribuições como o Kurumin são muito usadas como sistemas de recuperação, mesmo por quem só usa o Windows. Você pode dar boot a partir do CD-ROM, fazer backup dos arquivos dentro da partição do Windows (usando um HD externo ou um compartilhamento de rede, por exemplo), resolver problemas simples, como restaurar o registro a partir de um backup ou mesmo usar um anti-vírus, como o F-Prot.

Infelizmente, isto é um pouco mais complicado do que deveria, devido à opção default usada pelas versões recentes do mount.

Normalmente, ao montar uma partição qualquer, usando por exemplo o comando “mount /dev/hda1 /mnt/hda1”, os arquivos ficam disponíveis para todos os usuários do sistema, com o acesso restrito apenas às permissões de acesso dos mesmos.

Mas, no caso das partições do Windows, é usado por padrão a máscara “077”, que retira todos os direitos de acesso para todos os usuários, com excessão do root. Um arquivo ou partição com permissão de acesso 777 pode ser lido e alterado por qualquer um. Subtraindo o número “077”, sobra “700”, que dá permissão completa para o dono (o root), mas não dá sequer permissão de leitura para todos os demais.

Este foi um problema encontrado na época do Kurumin 3.0. Ao montar uma partição do Windows, usando um dos ícones no desktop, era mostrada uma mensagem de acesso negado, e era necessário abrir o gerenciador de arquivos como root para conseguir ver os arquivos.

A solução para isso, é especificar a máscara de montagem no comando do mount.

Ao invés de usar o comando:

# mount /mnt/hda1 /mnt/hda1

ou

# mount -t vfat /dev/hda1 /mnt/hda1

… para montar a partição do Windows, você adiciona a opção “-o umask=000”, como em:

# mount -o umask=000 /dev/hda1 /mnt/hda1

Isso faz com que o mount deixe de usar a máscara, permitindo que todos os usuários do sistema possam acessar os arquivos. Se preferir que os logins normais possam apenas ler, sem alterar os arquivos, use o parâmetro “umask=022”.

Isso funciona perfeitamente em partições FAT, a única limitação é que elas não suportam os atributos de arquivos do Linux, de forma que você não pode usar uma partição FAT como diretório home, por exemplo, mas elas servem bem para simplesmente armazenar arquivos diversos.

No caso do NTFS a situação é um pouco mais complicada. No Kernel 2.4 existia suporte apenas leitura para partições NTFS. No Kernel 2.6 o driver conta com um suporte a escrita rudimentar, que permite apenas alterar informações dentro de arquivos, mas sem alterar seu tamanho. Isto permite alguns usos bem específicos, como por exemplo usar um arquivo de loopback (um arquivo “formatado” em algum sistema de arquivos do Linux, acessado como se fosse uma partição) como home, mas que é inútil para uso geral.

Se você realmente precisa de suporte a escrita na partição Windows a partir do Linux, a melhor opção é simplesmente instalar o Windows numa partição FAT. Para situações onde é realmente necessário ter suporte a escrita em NTFS é possível usar o Captive, um “quebra-galho” que permite escrever na partição usando o próprio driver do Windows, executado através de um conjunto de bibliotecas, derivadas do ReactOS e do Wine.

Graças à esta camada intermediária, o desempenho do Captive é muito baixo, em geral a taxa de escrita de arquivos fica entre 200 e 300 KB/s (em micros antigos chega a ficar abaixo de 100 KB/s), uma fração do desempenho real. A instalação em algumas distribuições é problemática, o projeto não é mais desenvolvido ativamente e a documentação disponível muito ruim. Deixe para usar o Captive em situações onde o esforço valha realmente à pena.

gdh1
O Captive está disponível em:

http://www.jankratochvil.net/project/captive/

Existem duas opções de download, um pacote .rpm e um pacote .tar.gz. Ambos possuem o basicamente o mesmo conteúdo: uma versão genérica do Captive, contendo os executáveis e bibliotecas necessárias, desenvolvida para funcionar no maior número possível de distribuições. A versão em .rpm é destinada a quem usa o Fedora, Mandriva & cia e a .tar.gz para quem usa outras distribuições.

Para instalar o pacote genérico, descompacte o arquivo e execute o comando “install” dentro da pasta, como root:

# tar -zxvf captive-static-1.1.5.tar.gz
# cd captive-static-1.1.5/
# ./install

Para funcionar, o Captive utiliza os arquivos cdfs.sys, fastfat.sys, ntfs.sys e ntoskrnl.exe do Windows XP. Ele não é compatível com os arquivos do Windows 2000 e versões anteriores.

Ao ativar o Captive, você pode escolher entre obter estes arquivos a partir da partição do Windows XP, a partir de algum diretório ou através da Internet, onde ele baixa o Service Pack 1 do Windows XP (30 MB) e extrai os arquivos necessários a partir dele. Esta última opção é a mais indicada, pois assegura que ele terá em mãos as versões testadas dos arquivos, evitando problemas diversos.

Abra o utilitário que localiza os arquivos com o comando:

# captive-install-acquire

Se preferir, está disponível também uma versão em texto:

# captive-install-acquire –text

Por padrão ele começa procurando os arquivos dentro da partição do Windows, o que causa travamentos em algumas máquinas. Pressionando o botão “Skip” ele oferece a opção de procurar em outras pastas, em seguida a de indicar uma pasta com os arquivos manualmente e, finalmente, de baixar via Internet.

gdh2
Depois de obtidos os arquivos, você pode montar a partição NTFS usando o comando:

# mount -t captive-ntfs /dev/hda1 /mnt/hda1

Note que especificamos o sistema de arquivos “captive-ntfs”, que fica disponível a partir da instalação do Captive. Assim como no caso do mount, o default do Captive é montar as partições com permissão de escrita apenas para o root. Para abrir as permissões para os outros usuários, use o comando:

# mount -t captive-ntfs -o fmask=666,dmask=777 /dev/hda1 /mnt/hda1

Da primeira vez que o comando é executado, o script “/usr/share/lufs/prepmod” tenta compilar uma versão do módulo “lufs” (utilizado pelo Captive) para o Kernel em uso. O módulo é gerado automaticamente pelo script, mas para que ele funcione é necessário que estejam instalados os headers do Kernel e o gcc.

Em algumas distribuições, como o No Kurumin, o conjunto já vem pré-instalado, mas em outras é necessário instalar o pacote “kernel-headers” ou o pacote “kernel-souce” completo (como no Mandriva e Fedora), juntamente com o pacote “gcc”. A falta destes componentes é a maior causa de erros de instalação.

Ao usar o Captive, é importante que você sempre desmonte a partição antes de desligar a máquina, usando o comando:

# umount /mnt/hda1

As estruturas do NTFS são frágeis, fazendo com que um desligamento no botão possa causar danos importantes.

Mais uma dica é que o Captive não é capaz de montar partições danificadas. Nestes casos você precisará primeiro corrigir os erros através do próprio Windows.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X