Usando o NFS

Usando o NFS

Enquanto o Samba permite solucionar sem muita dor de cabeça o desafio de interligar máquinas Linux e Windows na mesma rede, o NFS é uma opção para compartilhar sistemas de arquivos entre máquinas Linux, de uma forma prática e estável. Na verdade, você pode perfeitamente usar o Samba para compartilhar arquivos entre máquinas Linux, mas o NFS não deixa de ser um recurso importante, que você não deve deixar de estudar.

Assim como o Samba, o NFS é um servidor que precisa ser habilitado manualmente na maior parte das distribuições. No Fedora, CentOS, Mandriva e outras distribuições derivadas do Red Hat, procure pelo serviço “nfs“. Nas distribuições derivadas do Debian, procure pelo serviço “nfs-kernel-server“.

O NFS utiliza um outro serviço, o portmap, para gerenciar as requisições dos clientes. Este serviço precisa estar ativo para que o NFS funcione, ou seja, para inicializar o servidor NFS, você precisa ativar os dois. Nas distribuições derivadas do Debian temos ainda um terceiro serviço, o “nfs-common”, que deve ser ativado antes do módulo servidor, como em:

# /etc/init.d/portmap start
# /etc/init.d/nfs-common start
# /etc/init.d/nfs-kernel-server start

Nas distribuições derivadas do Red Hat você precisa ativar apenas os serviços “portmap” e “nfs”, como em:

# service portmap start
# service nfs start

A configuração do NFS é feita em um único arquivo, o “/etc/exports“, onde vai a configuração dos diretórios compartilhados, um por linha. Originalmente, este arquivo fica vazio, ou contém apenas um comentário. Você precisa apenas abrí-lo num editor de textos e adicionar as pastas que deseja compartilhar. Por exemplo, para compartilhar a pasta “/home/arquivos” como somente leitura, para todos os micros da sua rede local, adicione a linha:

/home/arquivos 192.168.1.*(ro,no_root_squash)

Para compartilhar a pasta “/home/trabalhos” com permissão de leitura e escrita, adicione a linha:

/home/trabalhos 192.168.1.*(rw,no_root_squash)

Para compartilhar a pasta “/arquivos”, de forma que apenas o host 192.168.1.3 possa acessar:

/arquivos 192.168.1.3(rw,no_root_squash)

Outra opção, útil em redes locais, é a “async“, que permite que o NFS transfira arquivos de forma assíncrona, sem precisar esperar pela resposta do cliente a cada pacote enviado. Sem a opção async, a taxa de transmissão em uma rede de 100 megabits fica, em geral, em torno de 6 a 7 MB/s, enquanto que, ao ativá-la, sobe para pouco mais de 10 MB/s, ficando limitada apenas à velocidade da rede e dos HDs no servidor e cliente.

Ao adicioná-la, a linha de compartilhamento ficaria:

/home/trabalhos 192.168.1.*(rw,async,no_root_squash)

Você pode usar, ainda, o parâmetro “noacess“, que permite que você compartilhe apenas os arquivos dentro do diretório, mas não subdiretórios que eventualmente estejam presentes.

Depois de incluir todos os diretórios que deseja compartilhar, com suas respectivas permissões de acesso, salve o arquivo e reinicie o serviço para que as alterações surtam efeito:

# /etc/init.d/nfs-kernel-server restart

ou:

# service nfs restart

Embora seja fácil editar diretamente o arquivo “/etc/exports”, muitas distribuições incluem ferramentas gráficas para gerenciar os compartilhamentos NFS. O Fedora e o CentOS, por exemplo, incluem o “system-config-nfs” (que se chama “redhat-config-nfs” no RHEL). O Mandriva inclui um utilitário similar dentro do Mandriva Control Center.

2f956256
system-config-nfs, no CentOS 5

Ao compartilhar os diretórios, resolvemos apenas metade do problema. Ainda falta acessá-los a partir dos clientes. Assim como no caso das partições, você pode montar os compartilhamentos NFS em qualquer pasta vazia. Muitos administradores utilizam compartilhamentos montados no diretório “/home” (das estações) para que os arquivos gerados pelos usuários (e armazenados no home) sejam salvos diretamente no compartilhamento do servidor, facilitando os backups, por exemplo.

Caso você monte o compartilhamento em uma pasta que contenha arquivos, estes ficarão momentaneamente inacessíveis, dando lugar aos do compartilhamento. Contudo, depois que o compartilhamento é desativado, eles reaparecem. Nada é perdido.

Para montar o compartilhamento manualmente, use (como root) o comando “mount -t nfs”, como em:

# mkdir /mnt/arquivos
# mount -t nfs 192.168.1.1:/arquivos /mnt/arquivos

Neste exemplo, comecei criando a pasta “/mnt/arquivos”, onde vou montar o compartilhamento. A linha de montagem propriamente dita inclui o sistema de arquivos usado, neste caso o nfs, o endereço IP do servidor, seguido da pasta que ele está compartilhando e, finalmente, a pasta local onde os arquivos ficarão acessíveis.

Ao terminar de acessar o compartilhamento, ou caso precise desligar o servidor, use o comando “umount /mnt/arquivos” (no cliente) para desmontá-lo. É importante desmontar o compartilhamento antes de desligar o servidor, do contrário, o cliente continua tentando acessar o compartilhamento sempre que você acessa a pasta onde ele está montado, o que faz com que os gerenciadores de arquivos e outros programas “parem” ao passar pela pasta, aguardando a resposta do servidor que não está mais lá.

Se você acessa o compartilhamento freqüentemente, pode ganhar tempo inserindo uma entrada referente a ele no arquivo “/etc/fstab“. Assim você pode montar o compartilhamento usando o comando simplificado, ou configurar o sistema para montá-lo automaticamente durante o boot. Basta incluir a linha no final do arquivo, deixando sempre uma linha em branco após ela. A linha para o compartilhamento que acabamos de montar seria:

192.168.1.1:/arquivos /mnt/arquivos nfs noauto,users,exec 0 0

Neste exemplo, o “192.168.0.1:/arquivos” é o IP do servidor, seguido pela pasta compartilhada, o “/mnt/arquivos” é a pasta local onde este compartilhamento ficará acessível e o “nfs” é o sistema de arquivos; os mesmos parâmetros que usamos no comando manual.

O “noauto” faz com que o compartilhamento não seja montado automaticamente durante o boot. Você pode montá-lo e desmontá-lo conforme for utilizá-lo, usando os comandos “mount /mnt/arquivos” e “umount /mnt/arquivos“. Note que, graças à entrada no fstab, você agora precisa especificar apenas a pasta, pois o sistema lê os outros parâmetros a partir da entrada no arquivo.

O parâmetro “users” permite que você monte e desmonte o compartilhamento usando seu login normal, sem precisar usar o root, e o “exec” permite executar programas dentro do compartilhamento. Caso você esteja preocupado com a segurança, pode remover as duas opções.

Você pode facilitar o acesso ao compartilhamento adicionando um ícone para ele no desktop do KDE. Para isso, clique com o botão direito sobre uma área vazia e acesse a opção: “Criar novo > Dispositivo > NFS”.

Na janela que se abre, acesse a aba “Dispositivo” e aponte a entrada que foi adicionada ao fstab. A partir daí, você monta o compartilhamento clicando sobre o ícone, e pode desmontá-lo clicando com o botão direito e usando a opção “desmontar”.

47bc912b

Você pode incluir várias linhas, se desejar montar vários compartilhamentos. Caso o servidor fique sempre ligado e você queira que o compartilhamento seja montado automaticamente durante o boot, retire o “noauto”. Neste caso, a linha ficaria:

192.168.1.1:/arquivos /mnt/arquivos nfs users,exec 0 0

Novamente, este é o procedimento manual, muitas distribuições incluem utilitários gráficos para facilitar isso. No Mandriva, por exemplo, você encontra um utilitário de montagem no Centro de Controle (mcc), em “Pontos de Montagem > Pontos de montagem NFS”.

Nele você clica no “Servidores de busca” para ver uma lista dos compartilhamentos disponíveis na rede. Ao escolher um compartilhamento, clique no “Ponto de montagem” para definir a pasta local onde ele será acessado e configure as opções adicionais (como o “noauto” e “user”) em “Opções”. Depois de terminar, clique no “Pronto” e ele pergunta se você quer salvar a configuração no “/etc/fstab”.

Mais um comando útil ao utilizar o NFS é o “showmount -a” (só funciona se executado como root) que mostra uma lista com os diretórios NFS compartilhados na sua máquina que foram acessados e quais máquinas os acessaram desde o último reboot. Não é muito específico, pois não mostra datas nem horários, mas pelo menos permite descobrir se alguém não autorizado está acessando os compartilhamentos.

Mais opções

Por padrão, os compartilhamentos do NFS são montados com a opção “hard“. Isso causa um certo transtorno quando o servidor é desligado ou desconectado da rede, pois os clientes ficam tentando se reconectar ao servidor indefinidamente, fazendo que programas travem ao tentar acessar ou salvar arquivos no compartilhamento e você não consiga desmontá-lo por vias normais, até que o servidor volte.

Para prevenir este problema, você pode montar os compartilhamentos (nos clientes) usando a opção “soft“. Neste caso, o compartilhamento é escondido caso o servidor seja desconectado e programas tentando acessá-lo passam a exibir mensagens de “não é possível ler o arquivo”, ao invés de travarem. Para usar esta opção, adicione a opção “-o soft” no comando de montagem:

# mount -t nfs -o soft 192.168.0.1:/home/morimoto/arquivos /mnt/arquivos

A linha no “/etc/fstab”, com a opção, ficaria:

192.168.1.1:/home/morimoto/arquivos /mnt/arquivos nfs users,exec,soft 0 0

Outra questão importante ao usar o NFS é a questão das permissões de acesso. O servidor NFS “confia” na estação e permite que o usuário logado nela acesse os arquivos no compartilhamento, com as mesmas permissões que teria um usuário local de mesmo nome. Imagine, por exemplo, que compartilhei a pasta “/home/morimoto/arquivos”. Por estar dentro da pasta “/home/morimoto”, os arquivos da pasta podem ser lidos e alterados pelo usuário “morimoto”, mas apenas lidos pelos demais usuários do sistema.

O compartilhamento é, então, montado no host 192.168.1.4, usado pela usuária “maria”. Não existe na minha máquina nenhuma conta de usuário chamada “maria”, apenas o “morimoto” e o “root”. Por isso, a “maria” acessa o compartilhamento na minha máquina restrita às permissões de acesso da pasta para outros usuários (que podem apenas ler, mas não alterar os arquivos). Nesse caso, mesmo que a pasta seja compartilhada com a opção “rw”, a usuária “maria” não consegue fazer alterações, pois ainda está restrita às permissões do sistema.

Existem duas soluções nesse caso. A primeira seria criar uma conta “morimoto” (com qualquer senha), também no host 192.168.1.4, e usá-la para alterar os arquivos. A segunda (mais insegura) seria abrir as permissões de acesso da pasta (e dos arquivos dentro dela), de forma que todos os usuários possam fazer alterações. Neste caso, você usaria o comando “chmod -R 777 /home/morimoto/arquivos”:

133b5e8c

A exceção para esta regra é o usuário root. Por padrão, o NFS não permite que o usuário root de outra máquina monte ou acesse arquivos nos compartilhamentos (root_squash). Quando a opção é usada, você sequer consegue montar os compartilhamentos em outras máquinas usando a conta de root, recebendo um erro de permissão negada, como em:

mount: 192.168.1.1:/home/gdh/files failed, reason given by server: Permissão negada

A solução mais simples para o problema é usar a opção “no_root_squash” ao criar o compartilhamento, como nos exemplos anteriores. Ela afrouxa as permissões, permitindo que você consiga montar normalmente os compartilhamentos em outras máquinas, usando o root e que o root remoto possa alterar arquivos no compartilhamento, com as mesmas permissões do root local. Note que a opção “no_root_squash” bipassa apenas as permissões de acesso do sistema, não as permissões de acesso do compartilhamento (ro ou rw).

Ao adicionar novos compartilhamentos no arquivo “/etc/exports”, você pode ativá-los usando o comando “exportfs -a -v“. Isso ativa os novos compartilhamentos sem precisar reiniciar o servidor NFS e sem causar interrupções nos acessos dos clientes.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X