O NFS (Network File System) foi projetado para compartilhar partições ou arquivos em rede, sendo que os compartilhamentos remotos se comportam como se fossem locais.
Basicamente para montar um servidor NFS é preciso configurar três arquivos:
/etc/exports
/etc/hosts.allow
/etc/hosts.deny
- /etc/exports
Neste arquivo contêm a lista de entradas de compartilhamento, nele define o volume que será compartilhado, a lista de hosts ou rede que tera acesso, e as permissões de acesso.
Sua estrutura segue a seguinte forma:
/compartilhamento host1(opcao1, opcao2) host2(opcao1, opcao2)
Onde:
/compartilhamento é o arquivo que será exportado para a rede.
Host1 e host2 são os endereços das máquina que terão acesso ao compartilhamento. Podendo ser descriminadas por nome ou endereço IP.
Opcao1 e opcao2 são as permissões que cada host terá sobre o arquivo.
Tipos de permissões:
ro: O Host tem permissão somente de leitura.
rw: Leitura e gravação.
no_root_squash: Esta opção define que os níveis de acesso do host remoto sejam os mesmos que o níveis locais, caso essa opção não seja especificada o host remoto terá acesso ao compartilhamento como root.
no_subtree_check: Desabilita a checagem do bloco quando é feita a solicitação de um arquivo, essa opções quando marcada pode melhorar o desempenho do serviço NFS sobre a rede.
sync : Por padrão a forma de gravação é assíncrona, ou seja a gravação e feita no servidor depois que o arquivo é terminado pelo cliente. Essa forma de gravação pode ocasionar arquivos corrompidos e a opção sync evita isso.
Supondo que queremos compartilhar o diretório /home e /usr/local, a configuração do arquivo /etc/exports ficaria da seguinte forma:
#cat /etc/exports
/usr/local 10.0.0.1(ro) 10.0.0.2(ro)
/home 10.0.0.1(rw) 10.0.0.2(rw)
Neste caso o diretório /usr/local está compartilhado para as máquinas com endereço 10.0.0.1 e 10.0.0.2 com o nível de acesso somente leitura (ro) read only. Já o diretório /home está compartilhado para as máquinas como leitura e escrita (rw) read and write .
É possível compartilhar usando a faixa de ips da rede, por exemplo :
Rede 10.0.0.0/24
O arquivo ficaria da seguinte forma:
#cat /etc/exports
/usr/local 10.0.0.0/255.255.255.0(ro)
/home 10.0.0.0/255.255.255.0(rw)
Resumindo o arquivo /etc/exports possue a seguinte estrutura:
<volume> [host/rede]<opções>
- /etc/hosts.deny
o arquivo /etc/hosts.deny define os hosts ou rede que não terão acesso ao compartilhamento.
Sua estrutura segue a seguinte forma:
<serviço>:[host/rede]<opções>
#cat /etc/hosts.deny
ALL:ALL
Neste caso foi negado os o acesso de qualquer serviço e de qualquer host ou rede. Iremos definir as permissões de acessos no arquivo /etc/hosts.allow
- /etc/hosts.allow
O arquivo /etc/hosts.allow define os serviços liberados que serão liberados para acesso e quais hosts ou rede terão acesso a esses serviços:
#cat /etc/hosts.allow
ALL : 10.0.0.0/24
Netse caso, foi liberado o acesso a todos os serviços que usam tcpd (tcp wrapper) ou sshd , inclusive o NFS para a rede 10.0.0.0/24 .
É possível liberar somente os serviços exclusivos, também é possível adicionar exceções as regras, como por exemplo o sistema NFS necessita apenas de alguns serviços, vejamos como ficaria o arquivo /etc/hosts.allow:
#cat /etc/hosts.allow
portmap: 10.0.0.0/24 EXCEPT 10.0.0.1
lockd: 10.0.0.0/24 EXCEPT 10.0.0.1
rquotad: 10.0.0.0/24 EXCEPT 10.0.0.1
mountd: 10.0.0.0/24 EXCEPT 10.0.0.1
statd: 10.0.0.0/24 EXCEPT 10.0.0.1
Com essa configuração, foi liberado apenas os serviços portmap, lockd, rquotad,mountd e statd para rede 10.0.0.0/24 exceto para o host 10.0.0.1 .
Além dos arquivos exports, hosts.deny e hosts.allow que ficam localizados dentro de /etc estarem devidamente configurados, alguns processos devem estar em execução:
/etc/init.d/portmap start
/etc/init.d/nfs start
Foi usado aqui a distribuição CentOS kernel 2.6.18-194.el5.
Para configurar os serviços para executarem na inicialização, basta executar o comando ntsysv e marcar as opções:
#ntsysv
[X] nfs
[X] portmap
Após a configuração do servidor, é necessário montar o compartilhamento no cliente que é exportado pelo servidor:
root@client:~# mkdir /mnt/nfs
Obs: Iremos montar o diretório /home exportado pelo servidor em /mnt/nfs no cliente:
root@cliet:~# mount -t nfs servidornfs.net:/home /mnt/nfs
Após a montagem, para que não seja perdida após reiniciar o cliente, basta adicionar a linha de comando acima no arquivo /etc/fstab .
root@cliet:~# vi /etc/fstab
servidornfs.net:/home /mnt/nfs nfs rw 0 0
Segue a sintaxe:
[endereço do servidor:/arquivoexportado] <arquivolocal> <fs-type> <opções> [dump] [fsckoder]
Source: http://nfs.sourceforge.net/nfs-howto/
Source: http://nfs.sourceforge.net/nfs-howto/