Para instalar o servidor NFS nas distribuições Debian/Linux devemos utilizar o seguinte comando:
#apt-get install portmap nfs-kernel-server nfs-common
Após instalar o serviço devemos indicar que diretórios queremos compartilhar. Isso deve ser feito através da declaração dos mesmos em um arquivo chamado exports, quegeralmente se encontra armazenado no diretório /etc.
Nesse arquivo estão enumerados os sistemas de arquivos que serão exportados por meio do NFS. Cada linha determina: um diretório a ser exportado; quais máquinas terão acesso ao mesmo e suas permissões de acesso. Dentre as opções de compartilhamento as principais são:
Por exemplo, para compartilhar o diretório /tmp para todos os usuários de uma mesma com permissão de leitura e escrita deve-se adicionar a seguinte linha ao arquivo exports:
/tmp 192.168.1.0/24(rw,no_root_squash,sync, no_subtree_check)
Nesse exemplo estamos compartilhando o diretório indicado a todos os usuários da rede especificada (192.168.1.0/24) sem limitar o acesso do superusuário, ou seja, o cliente poderá mapear este diretório com o usuário root e acessá-lo sem nenhuma restrição. Observe que entre o endereço de rede, máscara e permissões de acesso não há espaços em branco. Todos os compartilhamentos devem ser declarados desta forma. Caso seja necessário compartilhar este diretório somente com permissão de leitura basta alterar rw por ro. Veja o exemplo:
/tmp 192.168.1.0/24(ro,no_root_squash,sync, no_subtree_check)
Para compartilhar a pasta /tmp de forma que apenas um host na rede basta declarar o IP ou hostname do mesmo. Vamos supor que o diretório /tmp deva ser compartilhado apenas com outro servidor, cujo endereço IP é 192.168.1.20. Neste caso, o compartilhamento deveria ser declarado da seguinte forma:
/tmp 192.168.1.20/24(rw,no_root_squash, sync, no_subtree_check)
Essa forma de compartilhamento é bastante utilizada como backup entre servidores. Assim, cria-se uma conexão exclusiva entre dois hosts que permite a troca de arquivos entre os mesmos. Por padrão, o NFS confia na estação cliente e permite o acesso ao usuário logado com as mesmas permissões do usuário local. A única exceção é o usuário root. O NFS não permite que o usuário root de outra máquina monte ou acesse arquivos nos compartilhamentos (root_squash). Com isso, não é possível montar os compartilhamentos em outras máquinas usando a conta de root, recebendo um erro de permissão negada. Para permitir o acesso do usuário root, deve-se usar a opção "no_root_squash" ao criar o compartilhamento, como vimos nos exemplos anteriores.
Após salvar as configurações do arquivo exports é necessário efetivar o compartilhamento, executando com comando exportfs. O padrão é utilizar a opção “- a” que exporta e cancela a exportação dos compartilhamentos anteriores automaticamente.
# exportfs –a
Esse comando reinicia os compartilhamentos sem que seja necessário reiniciar também o servidor NFS. Caso isso seja necessário, utiliza-se o comando:
#invoke-rc.d nfs-kernel-server restart
Naturalmente também podemos gerenciar o servidor NFS através dos comandos invoke-rc.d nfs-kernel-server start e invoke-rc.d nfs-kernel-server stop.
Bem, uma vez que já vimos como compartilhar diretórios no servidor, vamos agora verificar como podemos mapeá-los nos clientes Linux. Para acessar os sistemas de arquivos exportados pelo NFS utiliza-se o comando mount, onde após a opção –t deve-se declarar como sistema de arquivos nfs, o endereço IP do servidor, o diretório compartilhado e o ponto de montagem no cliente. Veja o exemplo:
#mount -t nfs 192.168.1.10:/tmp /mnt/tmp
O caractere “: “ após o endereço IP do servidor indica que o compartilhamento é remoto e sempre deverá ser informado. Neste exemplo assumimos que o pondo de montagem /mnt/tmp já existisse no cliente. Você pode utilizar qualquer diretório como ponto de montagem, o padrão das distribuições Linux é, por questão de organização, criar os mesmos no diretório /mnt. “Sempre, após o endereço de IP do servidor, deve-se colocar o caractere “:” que identifica o compartilhamento NFS. Após este comando, o diretório /mnt/tmp conterá os arquivos e diretórios remotos que poderão ser acessados como se fossem locais. Para encerrar o uso do compartilhamento, deve-se desmontar a unidade com o comando umount. Veja o exemplo:
#umount /mnt/tmp
Pode-se automatizar a tarefa de montagem dos sistemas de arquivo nos clientes NFS declarando-os ao final do arquivo FSTAB. Veja o exemplo:
192.168.1.10:/tmp /mnt/tmp nfs noauto,users,exec 0 0
Adicionando essas informações no FSTAB ao reiniciar o cliente automaticamente, será realizada a tentativa de montagem do diretório remoto. Caso o servidor esteja disponível tudo correrá bem. Se você quiser testar as instruções inseridas no FSTAB, sem reiniciar o servidor, basta executar o comando:
#mount -a