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!