O NFS (Network File System) da Sun Microsystems é uma estrutura de sistema de arquivos distribuído baseada em RPC que permite que dispositivos em rede usem servidores executando NFS em uma rede como suas unidades locais.

Aqui está um guia passo a passo para configurar um servidor NFS em uma máquina Linux.

O que é sistema de arquivos de rede?

O sistema de arquivos NFS tem quatro protocolos. Quando o servidor estiver pronto, ele notificará o portmap (o servidor que converte o protocolo em números de porta) da porta a ser usada e fornecerá o número do programa RPC controlado.

Ao usar um sistema Linux embutido, é muito conveniente inicializar seu dispositivo por meio de um compartilhamento de arquivos NFS pela rede em vez de iniciá-lo diretamente do dispositivo de armazenamento (flash NAND, eMMC, MMC, etc.).

Embora mais raro, você também pode querer montar um compartilhamento NFS e realizar compartilhamentos de arquivos usando-o após a inicialização do sistema, mesmo se você não inicializar seu sistema diretamente do compartilhamento NFS. Para que ambos os cenários funcionem, você deve primeiro instalar um servidor NFS no computador em que está desenvolvendo.

Como instalar o NFS no Linux

Se você estiver usando um Sistema baseado em Debian como Ubuntu ou Linux Mint, você deve instalar o nfs-kernel-server pacote da seguinte forma:

sudo apt instalar nfs-kernel-servidor

No Arch Linux:

sudo pacman -S nfs-utils

No Fedora, CentOS e RHEL:

sudo dnf -y instalar nfs-utils

Ao final do processo, seu servidor NFS será executado automaticamente. No entanto, neste momento, ele ainda não sabe quais diretórios em seu computador você deseja compartilhar pela rede. Portanto, ele não fornece nenhum compartilhamento por padrão.

Você pode abrir vários diretórios no mesmo servidor para permitir o compartilhamento de rede com diferentes autorizações e restrições.

Configurando o servidor NFS no Linux

Para compartilhar qualquer diretório no servidor NFS, é necessário definir uma configuração relacionada ao diretório no /etc/exports Arquivo. Abra o arquivo com qualquer editor de texto de sua escolha. Certifique-se de adicionar o prefixo sudo ao comando.

sudo vim /etc/exportações

Você pode estar se perguntando o que significam as opções de mapeamento que você vê aqui:

  • root_squash: Marca os usuários do cliente autorizados pelo sudo como nenhum usuário e grupo no NFS
  • no_root_squash: Desativa o esmagamento de raiz
  • all_squash: Ao contrário do root_squash, ele permite que todos os usuários sejam mapeados como o usuário e grupo de ninguém. Geralmente é usado para acesso público.
  • no_all_squash: O oposto de all_squash; Esta opção é o padrão

Quando um sistema fora dos intervalos de IP permitidos no arquivo /etc/exports no servidor NFS tenta acessar o recurso relevante, o servidor NFS rejeitará a solicitação.

Você pode receber mensagens de "acesso negado pelo servidor" durante a montagem em seu sistema incorporado. Mensagens de erro semelhantes às seguintes aparecerão no final do /var/log/syslog arquivo no computador onde o servidor NFS está sendo executado:

rpc.mountd[1041]: pedido de montagem recusado a partir de192.168.2.2por /home/exemplo/casper/alvo (/home/example/casper/target): host sem correspondência

Ao ver uma mensagem de log de host sem correspondência como a acima, você deve expandir a seção IP/Netmask da regra relevante no arquivo /etc/exports ou usar o asterisco (*) caractere especial se desejar conceder acesso a todos os endereços IP.

Você deve reiniciar o serviço NFS depois de fazer modificações no /etc/exports Arquivo:

sudo service nfs-kernel-server restart

Ou, se sua distro for enviada com systemctl, execute o seguinte comando:

sudosystemctlreiniciarservidor nfs.serviço

Você também pode dar a -r parâmetro para o exportação comando para que ele compartilhe novamente os diretórios que alteraram as configurações relacionadas ao compartilhamento:

sudo exportfs -r

Corrigindo o problema de latência de montagem

Quando você usa o protocolo NFS versão 4 e superior em seu servidor, pode haver atrasos de até 15 segundos durante o processo de montagem do lado do cliente em cenários operacionais tradicionais com as configurações padrão do NFS servidor. Esse problema pode aparecer em algumas versões do Debian, Fedora e Ubuntu.

Se você estiver enfrentando um atraso de montagem semelhante, você pode verifique os arquivos de log do lado do servidor (/var/log/syslog, /var/log/messages) para uma mensagem de log semelhante à seguinte:

... RPC: tempo limite de upcall AUTH_GSS esgotado

Esta mensagem indica que a autenticação Kerberos falhou e expirou. Você provavelmente não precisará do protocolo Kerberos para autenticação de segurança na rede em seu ambiente. Mesmo se você estiver em uma rede configurada dessa maneira, pelo menos com seus sistemas Linux incorporados, não precisará habilitar a autenticação Kerberos.

Embora tenham sido oferecidas alternativas para executar o serviço GSSD com NFS para corrigir o problema, essas abordagens não têm o mesmo impacto em todas as distribuições e versões de pacotes e, portanto, é mais racional resolver esse problema a partir do raiz.

Você deve bloquear (ou colocar na lista negra) o rpcsec_gss_krb5 módulo do kernel seja carregado no sistema Linux onde o servidor NFS está sendo executado.

Para que esta opção tenha efeito sempre que reiniciar o computador, crie um novo arquivo chamado /etc/modprobe.d/nfs-gss-blacklist.conf e adicione as seguintes linhas a ele:

lista negra rpcsec_gss_krb5

Depois de salvar o arquivo e reinicializar o sistema, o problema de latência de montagem desaparecerá.

Por que usar um servidor NFS?

O NFS é simples e acessível de configurar. Ele permite o gerenciamento centralizado, o que reduz a necessidade de software extra e espaço de armazenamento no PC de um usuário individual. Em uma única máquina, vários usuários podem compartilhar o mesmo espaço em disco. Eles podem colocar esses discos em cima de seu sistema de arquivos para estender o espaço de armazenamento.

O compartilhamento NFS permite que programas que exigem muito espaço de armazenamento sejam agrupados em um único servidor. Isso pode resultar em uma enorme economia de espaço em disco. Embora as versões anteriores do NFS sejam vulneráveis, as versões mais recentes introduziram níveis adicionais de proteção, incluindo autenticação Kerberos.

No entanto, existem algumas desvantagens também. Descobriu-se que o NFS fica lento em alguns casos durante o tráfego de rede pesado. O compartilhamento com o Windows é possível, mas pode exigir alguns aplicativos de terceiros. Mas esta não é uma prática muito sensata em termos de segurança. Se a configuração não estiver correta, pode ocorrer acesso não autorizado.

Compartilhamento de sistema de arquivos facilitado no Linux usando NFS

Conhecer os problemas de segurança e encontrar soluções é uma das tarefas mais críticas de um administrador de sistema. É necessário conhecer os procedimentos de segurança de todos os sistemas de compartilhamento de arquivos e ferramentas de gerenciamento e não apenas do NFS.