Como instalar e configurar NFS no AlmaLinux 9

O que é NFS
NFS (Network File System) é um protocolo que permite a usuários e máquinas acessar diretórios e discos remotos como se fossem locais. Originalmente desenvolvido pela Sun Microsystems, tornou-se o padrão para compartilhamento de arquivos em redes. É comum em ambientes centralizados, onde servidores armazenam dados que vários clientes montam e usam.
Definição rápida: NFS fornece acesso a arquivos remotos via rede mantendo a sensação de sistema de arquivos local.
Variantes do conteúdo deste guia
- Instalação do pacote nfs-utils no servidor e no cliente.
- Configuração do serviço NFS (idmapd, exports).
- Criação de diretórios compartilhados e explicação de opções comuns (/etc/exports).
- Regras de firewall com firewalld.
- Montagem manual e automática (/etc/fstab) no cliente.
- Testes de leitura/escrita e validação.
- Boas práticas de segurança, troubleshooting e checklists por função.
Pré-requisitos
- Um servidor AlmaLinux 9. Neste exemplo usamos o hostname almalinux9-server e IP 192.168.10.15.
- Um usuário não root com privilégios sudo.
- Um ou mais clientes. Podem ser outras distribuições baseadas em RHEL.
Importante: confirme conectividade de rede entre cliente e servidor (ping, SSH).
Instalar o NFS Server
No servidor e no cliente, instale o pacote nfs-utils do AppStream:
sudo dnf install nfs-utils
Abra e edite o arquivo de mapeamento de usuários para NFSv4:
sudo nano /etc/idmapd.conf
Localize e descomente o parâmetro Domain. Defina-o para o FQDN do servidor ou para o hostname:
Domain = almalinux9-server
Salve e saia.
Inicie e habilite o serviço NFS:
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
Verifique o status:
sudo systemctl status nfs-server
Se o serviço estiver ativo, verá saída semelhante à abaixo.
Criar diretórios compartilhados
Crie os diretórios que serão exportados e ajuste permissões e propriedade:
sudo mkdir -p /mnt/shared /mnt/backup
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup
Explicação rápida:
- chown nobody:nobody reduz privilégios por padrão para diretórios públicos.
- chmod 775 permite leitura/escrita ao dono e grupo, leitura ao resto.
Configurar /etc/exports
Edite o arquivo de exports:
sudo nano /etc/exports
Exemplo de entradas usadas neste guia:
/mnt/backup 192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)
Significado das opções mais usadas:
- rw: leitura e escrita habilitadas.
- sync: grava dados no disco antes de responder ao cliente. Mais seguro, mais lento.
- no_subtree_check: desabilita checagem de subárvore para melhorar desempenho.
- no_root_squash: permite que root do cliente aja como root no export (use com cautela).
- no_all_squash / all_squash / anonuid / anongid: opções para mapear usuários anônimos.
Após editar, aplique e reinicie o serviço:
sudo systemctl restart nfs-server
sudo exportfs -v
A saída do exportfs mostrará os diretórios compartilhados e as opções aplicadas.
Considerações sobre versões do NFS
Resumo rápido:
- NFSv3: mais simples, usa RPC e geralmente trabalha bem em redes locais.
- NFSv4: unifica RPC em porta 2049, incorpora suporte a estados e delegações, melhor integrado com Kerberos para autenticação.
No AlmaLinux moderno, NFSv4 é recomendado quando se precisa de recursos avançados e integração com segurança (Kerberos). Muitas das configurações básicas do guia funcionam tanto para v3 quanto v4.
Configurar firewalld para NFS
Se estiver usando firewalld, exponha os serviços necessários. Neste exemplo abrimos nfs, nfs3, mountd e rpc-bind para a zona padrão:
sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Notas:
- NFSv4 usa preferencialmente a porta 2049 (tcp/udp). Montagens mais antigas e serviços auxiliares (mountd, rpcbind) podem usar portas dinâmicas a menos que você as fixe.
- Para ambientes com regras rígidas, fixe portas de mountd e outros serviços e abra explicitamente essas portas no firewall.
Configurar o cliente NFS
No cliente (ex.: AlmaLinux, RHEL), instale o mesmo pacote:
sudo dnf install nfs-utils
Verifique os exports disponíveis no servidor:
sudo showmount -e 192.168.10.15
Você deverá ver os diretórios exportados: /mnt/backup, /mnt/shared e /home.
Crie pontos de montagem locais:
sudo mkdir -p /data /backup /shared
Monte manualmente para validar:
sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data
Verifique montagens:
sudo df -h
Verificar acesso de escrita a partir do cliente
No cliente, crie arquivos de teste para garantir que a escrita funcione:
echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt
No servidor, confirme que os arquivos aparecem:
cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt
Montagem automática via /etc/fstab
Desmonte as montagens de teste antes de editar o fstab:
sudo umount /data /backup /shared
sudo df -h
Edite /etc/fstab e adicione linhas semelhantes a estas. Ajuste IPs e caminhos conforme seu ambiente:
192.168.10.15:/mnt/backup /backup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared /shared nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home /data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Explicação de opções comuns de montagem:
- auto: monta automaticamente com mount -a ou no boot.
- nofail: não falhar o boot se o servidor NFS estiver indisponível.
- noatime: reduz gravações de metadados de acesso, melhora desempenho.
- nolock: desabilita locking; use com cautela (apenas se necessário).
- intr: permite interrupção de operações NFS com sinais (legacy).
- tcp: força uso de TCP em vez de UDP.
- actimeo=1800: define cache de atributos por 1800 segundos (30 min). Ajuste conforme necessidade de consistência vs desempenho.
Aplique as entradas sem reiniciar:
sudo mount -a
sudo df -h
Troubleshooting comum
Comandos úteis:
- Verificar serviços RPC e portas:
rpcinfo -p
ss -lntup | grep -E "2049|111"
- Verificar exports e reexportar:
sudo exportfs -v
sudo exportfs -r
- Logs do servidor NFS:
sudo journalctl -u nfs-server -b
- Checar problemas de permissão:
ls -la /mnt/shared
getfacl /mnt/shared
- Verificar se SELinux bloqueia acessos (se SELinux estiver em enforcing):
sudo ausearch -m AVC -ts recent
sudo semanage fcontext -l | grep /mnt/shared || sudo restorecon -Rv /mnt/shared
Dicas para problemas comuns:
- Se um cliente não vê export, verifique firewall e se o export foi aplicado com exportfs -v.
- Se arquivos mostram UID numérico em vez de nome, verifique idmapd e Domain em /etc/idmapd.conf.
- Se mount falha no boot, verifique a opção nofail no /etc/fstab para evitar travar o processo de boot.
Segurança e recomendações práticas
Riscos comuns:
- Tráfego NFS via rede não criptografado por padrão. Dados sensíveis podem ser interceptados.
- no_root_squash pode conceder privilégios root remotos no export. Use apenas quando necessário.
- Permissões de arquivo mal configuradas podem permitir escrita indesejada.
Mitigações:
- Para tráfego seguro e autenticação forte, use NFSv4 com Kerberos (sec=krb5/krb5i/krb5p) e políticas de chaves centralizadas.
- Habilite e configure SELinux corretamente para pontos de montagem NFS quando aplicável.
- Especifique hosts de clientes nos exports em vez de usar 0.0.0.0/0.
- Use snapshots no servidor e backups regulares.
Notas de privacidade (GDPR e dados pessoais):
- NFS não cifra dados por padrão. Se o compartilhamento contiver dados pessoais, avalie criptografia em trânsito (VPN, IPsec) ou autenticação Kerberos e controles de acesso rígidos.
Boas práticas de produção
- Fixe portas RPC se for necessário atravessar firewalls estritos.
- Use export de diretórios específicos, não exporte /home inteiro sem necessidade.
- Monitore I/O, latência de rede e uso de locks.
- Teste failover e comportamento quando o servidor NFS fica indisponível (clientes com nofail, systemd automounts).
Playbook curto para deploy de NFS (checklist)
- Preparar servidor: atualizar pacotes, criar diretórios, ajustar ownership/permissions.
- Instalar nfs-utils e configurar /etc/idmapd.conf.
- Criar /etc/exports com entradas limitadas a hosts/rede.
- Configurar firewalld com serviços/portas necessários.
- Iniciar e habilitar nfs-server e confirmar com exportfs -v.
- No cliente, instalar nfs-utils, testar showmount, montar manualmente, testar leitura/escrita.
- Adicionar entradas em /etc/fstab com nofail e actimeo conforme necessário.
- Implementar segurança adicional (Kerberos, SELinux, backups).
Checklists por função
Administrador de servidor:
- Validar espaço em disco e quotas.
- Fixar portas RPC se necessário.
- Aplicar limites de export e políticas de permissões.
Administrador de cliente:
- Garantir que /etc/fstab tenha nofail para evitar travar boot.
- Testar mount manual antes de automações.
Segurança/Compliance:
- Avaliar necessidade de Kerberos ou VPN.
- Documentar onde dados pessoais são expostos e aplicar controles.
Matriz de decisão simples
Se precisa de alta segurança e integração com identidades -> usar NFSv4 + Kerberos. Se precisa apenas compartilhar arquivos em LAN confiável com facilidade -> NFSv3 / NFSv4 padrão com controles de host.
flowchart TD
A[Iniciar projeto NFS] --> B{Requer autenticação forte?}
B -- Sim --> C[Use NFSv4 + Kerberos]
B -- Não --> D{Ambiente LAN confiável?}
D -- Sim --> E[Use NFSv4 padrão]
D -- Não --> F[Considere VPN/IPsec ou alternativas de compartilhamento]
Compatibilidade e migração
- NFS funciona entre várias versões de Linux e sistemas Unix. Atenção a diferenças entre NFSv3 e NFSv4 no gerenciamento de estado e portas.
- Migração de NFSv3 para NFSv4 geralmente envolve ajustar idmapd e garantir que clientes entendam o Domain configurado.
- Para ambientes mistos (Windows, Linux), considere protocolos adicionais (SMB) conforme necessidade de interoperabilidade.
Quando NFS não é adequado
- Para cargas com alta concorrência de pequenos arquivos e necessidade de locking sofisticado, considere um sistema de arquivos distribuído preparado para isso (ex.: GlusterFS, Ceph).
- Para compartilhamento entre máquinas geograficamente distribuídas com alta latência, NFS tradicional pode ter problemas de desempenho.
Mini-glossário (uma linha cada)
- exportfs: utilitário para listar e gerenciar exports NFS.
- idmapd: daemon que mapeia identidades entre clientes e servidor NFSv4.
- rpcbind: serviço que mapeia programas RPC para portas.
- mountd: daemon que atende pedidos de montagem de clientes (para NFSv3 e v4 quando aplicável).
Resumo e próximos passos
Você instalou e configurou um servidor NFS no AlmaLinux 9, exportou diretórios, abriu firewall, montou os exports em um cliente e configurou montagem automática via /etc/fstab. Testou leitura e escrita e recebeu recomendações de segurança.
Próximos passos sugeridos:
- Avaliar Kerberos para autenticação e criptografia de tráfego NFSv4.
- Implementar backups e snapshots dos dados exportados.
- Monitorar métricas de I/O e ajustar actimeo/cache conforme carga de trabalho.
Recursos úteis e comandos de referência
- Instalar nfs-utils: sudo dnf install nfs-utils
- Listar exports no servidor: sudo exportfs -v
- Reexportar após alterar /etc/exports: sudo exportfs -r
- Mostrar exports do servidor a partir do cliente: sudo showmount -e
- Montar manualmente: sudo mount
:/caminho /ponto - Montar todas as entradas do fstab: sudo mount -a
Important: revise permissões antes de expor diretórios críticos e planeje backup e retenção.
Conclusão
Parabéns — você concluiu a configuração básica de NFS no AlmaLinux 9. Use as seções de segurança e troubleshooting para levar sua instalação ao ambiente de produção de forma controlada.
Materiais semelhantes

Backup do Registro do Windows — Guia prático

Como ver publicações curtidas no Instagram

Digitação por voz no WhatsApp — Gboard e SwiftKey

Como usar a pesquisa comum do IMDb

Mostrar citação na área de trabalho com Rainmeter
