Criando e consumindo uma rede de compartilhamento NFS

Sejam bem vindos ao sexto post do blog.
Iremos configurar um servidor NFS (Network File System) , que tem como objetivo compartilhar diretórios e arquivos entre máquinas conectadas em rede, através deste protocolo.

Configurando Server

A Instalação será feita em um Fedora 25, começando com o seguinte comando:

sudo dnf install nfs-utils

Arquivos de configuração:

Diretório Finalidade
/etc/exports Arquivo principal de configuração
/etc/hosts.allow hosts para habilitar acesso
/etc/hosts.deny Hosts para negar acesso

Para utilizar o serviço nfsd, será necessario ativar os itens abaixo:

sudo systemctl enable rpcbind; sudo systemctl enable nfs-server ; sudo service rpcbind start; sudo service nfs-server start;

Para verificar o status do serviço:

service nfs status;

Com output:

Agora, iremos prover os diretórios de compartilhamento, criando diretórios, arquivos e aplicando permissões:

sudo mkdir -p /home/compartilhamento/leitura;
sudo mkdir -p /home/compartilhamento/leituraescrita;
sudo mkdir -p /home/compartilhamento/vip; 
sudo mkdir -p /home/compartilhamento/multirules;
 
sudo chmod 777 /home/compartilhamento/leitura; 
sudo chmod 777 /home/compartilhamento/leituraescrita; 
sudo chmod 777 /home/compartilhamento/vip; 
sudo chmod 777 /home/compartilhamento/multirules;

Criando arquivos de teste:

sudo echo 'sou escrita' /home/compartilhamento/leituraescrita/escrita.txt; 
sudo echo 'sou leitura' /home/compartilhamento/leitura/leitura.txt; 
sudo echo 'apenas o escolhido' /home/compartilhamento/vip/vip.txt; 
sudo echo 'aqui tem duas regra' /home/compartilhamento/multirules/multirules.txt;

Observação: O parâmetro -p do mkdir significa parents, que cria toda a hierarquia até o diretório desejado.

Diretório Finalidade
leitura Apenas leitura
leituraescrita apenas leitura
vip Apenas uma das máquinas da rede poderá enxergar o diretório
multirules Onde a rede poderá usar leitura e uma máquina poderá editar

Configurando: /etc/exports

A configuração precisará da faixa ou IP, onde o compartilhamento será disponibilizado.

Verifique com o comando:

ifconfig

Depois de recuperar a Faixa de IP, iremos configurar:

/home/compartilhamento/leitura 192.168.2.0/255.255.255.0(ro,sync,no_subtree_check,root_squash)
/home/compartilhamento/leituraescrita 192.168.2.0/255.255.255.0(rw,sync,no_subtree_check,root_squash)
/home/compartilhamento/vip 192.168.2.108(ro,sync,no_subtree_check,root_squash)
/home/compartilhamento/multirules 192.168.2.0/255.255.255.0(ro,sync,no_subtree_check,root_squash) 192.168.2.108(rw,sync,no_subtree_check,root_squash)

Descrição da configuração acima:

/diretorio/para/compartilhar IP_OU_FAIXA_OU_HOST/MASCARA(OPCIONAL) (OPCOES)

No meu caso, minha faixa é 192.168.2.0
Também é possível disponibilizar apenas para um host.

Aplicando mudança com o comando:

sudo exportfs -ra;

Opções disponíveis:

Diretório Finalidade
(rw) Leitura e escrita
(ro) Leitura
(root_squash) Impede que usuarios root conectados remotamente tenham privilégios de root,opção padrão.
(no_root_squash) Permite que usuarios root conectados remotamente tenham privilégios de root
(async) Opção de melhor desempenho onde o servidor grava dados sem intervalo regular, porém se houver falha durante a escrita solicitada pelo host, os dados podem ser perdidos, principalmente se forem feitos por hosts diferentes ao mesmo tempo
(wdelay) Faz com que o servidor retenha a gravação caso haja suspeita de outra solicitação de escrita. Somente pode ser usada com a opção sync
(no_wdelay) O Oposto à opção wdelay
(all_squash) Identificar o IDs de usuário e grupo a que serão usados por usuários remotos
(no_subtree_check) Não é checada a hierarquia de diretório que está sendo acessada.
Para grande volume, tem um desempenho melhor
(sync) Usado por padrão, aguarda a confirmação de escrita quando o arquivo terminar a escrita

Reiniciando serviço NFS Server:

sudo systemctl restart nfs-server;

Caso tenha alterado os arquivos: /etc/hosts.allow ou /etc/host.deny

Será necessário reiniciar o servico nfs:

sudo systemctl status nfs;

Configurando: /etc/hosts.allow

sudo vim /etc/hosts.allow;

Aplique as seguintes configurações, Usando a mesma faixa ou host da SUA rede:

portmap:192.168.2.0/255.255.255.0
lockd:192.168.2.0/255.255.255.0
mountd:192.168.2.0/255.255.255.0
rquotad:192.168.2.0/255.255.255.0
statd:192.168.2.0/255.255.255.0

Configurando: /etc/hosts.deny

sudo vim /etc/hosts.deny;

Aplique as seguintes configurações:

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Finalizado o Server, iremos ao próximo passo:

Configurando Client

Linux

Nosso primeiro cliente é um Ubuntu 16.10.

Instalação do client.

Executando o comando Debian Based:

sudo apt-get install nfs-common;

Instalando no Fedora /Cent OS:

sudo yum install nfs-utils;

Iremos consumir o serviço preparado no NFS Server acima.

Criando diretório onde será compartilhado o diretório no servidor localmente:

sudo mkdir -p /mnt/nfs_client_dir/leitura; 
sudo mkdir -p /mnt/nfs_client_dir/leituraescrita;
sudo mkdir -p /mnt/nfs_client_dir/vip; 
sudo mkdir -p /mnt/nfs_client_dir/multirules;

Aplicando permissões:

sudo chmod 755/mnt/nfs_client_dir/leitura;
sudo chmod 755/mnt/nfs_client_dir/leituraescrita;
sudo chmod 755/mnt/nfs_client_dir/vip;
sudo chmod 755/mnt/nfs_client_dir/multirules;

Verificando resultado:

Executar o comando para testar:

sudo mount -o vers=3 -v 192.168.2.107:/home/compartilhamento/multirules /mnt/nfs_client_dir/multirules;

Explicando comando:

mount -o opcao=valor -v servidor:diretorio_no_servidor diretorio_local

Verificando resultado:

Acionando por: /etc/fstab

sudo vim /etc/fstab;

Aplique as seguintes configurações, usando a mesma faixa ou host da SUA rede:

192.168.2.105:/home/compartilhamento/leitura /mnt/nfs_client_dir/leitura  nfs   vers=3,rsize=8192,wsize=8192,timeo=14,intr
192.168.2.105:/home/compartilhamento/vip /mnt/nfs_client_dir/vip  nfs   vers=3,rsize=8192,wsize=8192,timeo=14,intr
192.168.2.105:/home/compartilhamento/leituraescrita /mnt/nfs_client_dir/leituraescrita  nfs   vers=3,rsize=8192,wsize=8192,timeo=14,intr
192.168.2.105:/home/compartilhamento/multirules /mnt/nfs_client_dir/multirules  nfs   vers=3,rsize=8192,wsize=8192,timeo=14,intr

Possibilitando que ao iniciar a máquina, a montagem seja feita automaticamente.

Para montar todas as unidades configuradas no: /etc/fstab

sudo mount -a

Verificando Resultado:

Iremos conferir parâmetros de ro,rw no NFS server.

Salvando arquivo com permissão de escrita:

Salvando arquivo com permissão apenas de leitura:

Terminamos a configuração no Linux.

Windows

Nosso segundo cliente é um Windows 7.

Iremos consumir com o Windows. O software utilizado seá o NFSClient encontrado neste link.

Após a instalação,abrindo o programa, iremos configurar o host clicando em Add no canto superior direito:

Após configurar, clique em Connect:

A opção Z , a última no menu, montará a Unidade no Windows Explorer:

Conferindo diretórios:

Salvando arquivo com permissão de escrita:

Salvando arquivo com permissão apenas de leitura:

Temos uma rede de compartilhamento NFS pronta para ser usada.

É isso aí.
Espero ter sido claro na explicação.
Valeu e até a próxima!

 

brunocaramelo

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *